(command.Pipeline children: [ (BraceGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 15 stdin_parts: [<'sayIt:\n'> <'\t$(foreach b,$(BUILT_INS),echo XXX $(b:$X=) YYY;)\n'>] ) ) ] do_fork: T ) (C {<cat>} {<Makefile>}) ] ) (command.Simple words: [{<make>} {<-f>} {<->} {<sayIt>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (C {<sed>} {<-n>} {<-e>} {(SQ <'s/.*XXX \\(.*\\) YYY.*/\\1/p'>)}) (C {<sort>}) (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bad) op: assign_op.Equal rhs: {<0>} spids: [57] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<builtin>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:base) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {(DQ ($ Id.VSub_DollarName '$builtin'))} {<Id.Lit_Colon ':'>} {(SQ <'git-\\(.*\\)'>)} ) ) } spids: [71] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:x) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-ne>} {(SQ <'s/.*{ "'>) ($ Id.VSub_DollarName '$base') (SQ <'", \\(cmd_[^, ]*\\).*/'>) ($ Id.VSub_DollarName '$base') (SQ <'\t\\1/p'>) } {<git.c>} ) ) } spids: [87] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$x'))})] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$base') <' is builtin but not listed in git.c command list'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bad) op: assign_op.Equal rhs: {<1>} spids: [131] ) ] ) ] spids: [109 120] ) ] ) (command.ForEach iter_name: sfx iter_words: [{<sh>} {<perl>} {<py>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} { (DQ ($ Id.VSub_DollarName '$builtin') <.> ($ Id.VSub_DollarName '$sfx') ) } ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$base') <' is builtin but '> ($ Id.VSub_DollarName '$builtin') <.> ($ Id.VSub_DollarName '$sfx') <' still exists'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:bad) op: assign_op.Equal rhs: {<1>} spids: [182] ) ] ) ] spids: [154 167] ) ] ) ] ) ) ] ) ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName '$bad')} ) ] ) ] negated: F )