(command.CommandList children: [ (command.ShFunction name: check body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<grep>} {<-q>} {(DQ <' boo'>)} {(DQ ($ Id.VSub_Number '$1'))})] ) action: [ (C {<echo>} {(DQ <'Garbage collection failed to collect boo'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [81 96] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:grep_foo) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<grep>} {<-q>} {(DQ <' foo'>)} {($ Id.VSub_Number '$1')}) ) } spids: [114] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'Garbage collection should not discard foo'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [130 145] ) ] ) ] ) ) (C {<check>} {<gc_orphan_section_test.stdout>}) ] )