(CommandList children: [ (FuncDef name: fn1 body: (BraceGroup children: [ (C {(echo)} {(DQ ("fn1 here"))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(5)} spids:[24])] spids: [24] ) (C {(fn3)}) ] spids: [14] ) spids: [10 13] ) (FuncDef name: fn2 body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:name) op:Equal rhs:{(DQ (fn2))} spids:[41])] spids: [41] ) (C {(echo)} {(DQ ($ VSub_Name "$name") (" here"))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(6)} spids:[55])] spids: [55] ) ] spids: [38] ) spids: [34 37] ) (FuncDef name: fn3 body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:name) op:Equal rhs:{(DQ (fn3))} spids:[69])] spids: [69] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:x) op: Equal rhs: {($ VSub_Number "$1")} spids: [75] ) ] spids: [75] ) ] spids: [66] ) spids: [62 65] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(22)} spids:[82])] spids: [82] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(23)} spids:[85])] spids: [85] ) (ForEach iter_name: i iter_words: [{(1)}] do_arg_iter: False body: (DoGroup children: [ (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:x) right: (ArithVarRef name:i) ) ) ] spids: [98 110] ) spids: [93 96] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(27)} spids:[112])] spids: [112] ) (C {(echo)} { (CommandSubPart command_list: (CommandList children:[(C {(fn3)} {(30)})]) left_token: <Left_CommandSub "$("> spids: [117 121] ) } ) (C {(fn3)} {(29)}) (Sentence child:(C {(fn1)}) terminator:<Op_Semi ";">) (C {(fn3)} {(31)}) (Case to_match: {(x)} arms: [ (case_arm pat_list: [{(Lit_Other "*")}] action: [(C {(x)} {(Lit_Other "=")} {(33)})] spids: [142 144 -1 152] ) ] spids: [134 138 152] ) (AndOr children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{(DQ (x))})) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(35)} spids:[166])] spids: [166] ) ] op_id: Op_DAmp ) (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:x) right: (ArithWord w:{(Lit_Digits 1)}) ) ) (C {(source)} {(dbg-test1.sub)}) (Sentence child:(C {(exit)} {(0)}) terminator:<Op_Semi ";">) ] )