(command.Pipeline children: [ (command.BraceGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 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'>] ) ] ) (C {<cat>} {<Makefile>}) ] ) (command.Simple words: [{<make>} {<-f>} {<->} {<sayIt>}] redirects: [(redir.Redir op:<Id.Redir_Great '2>'> fd:2 arg_word:{</dev/null>})] ) (C {<sed>} {<-n>} {<-e>} {(SQ <'s/.*XXX \\(.*\\) YYY.*/\\1/p'>)}) (C {<sort>}) (command.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: [(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 '$('> command_list: (command.CommandList children: [ (C {<expr>} {(DQ ($ Id.VSub_DollarName '$builtin'))} {<Id.Lit_Other ':'>} {(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 '$('> command_list: (command.CommandList children: [ (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: [(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: [ (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 )