(CommandList children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$0')} right: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [66 71] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dirname) op: Equal rhs: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [81 89] ) } spids: [80] ) ] spids: [80] ) (AndOr ops: [Op_DAmp Op_DPipe] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$dirname')} right: {($ VSub_Number '$0')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_dir) op: Equal rhs: {(SQ <..>)} spids: [104] ) ] spids: [104] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_dir) op: Equal rhs: {(${ VSub_Name dirname) (/..)} spids: [111] ) ] spids: [111] ) ] ) (ForEach iter_name: lib_file iter_words: [{(help)} {(alias)}] do_arg_iter: F body: (DoGroup children: [ (Sentence child: (C {(source)} {($ VSub_Name '$top_dir') (/lib/) (${ VSub_Name lib_file) (.sh)}) terminator: <Op_Semi ';'> ) ] spids: [130 142] ) spids: [123 128] ) ] spids: [16777215 77] ) ] spids: [16777215 144] ) (C {(_Dbg_help_add)} {(down)} { (SQ <'**down** [*count*]\n'> <'\n'> <'Move the current frame down in the stack trace (to an newer frame). 0 is\n'> <'the most recent frame.\n'> <'\n'> <'If *count* is omitted, use 1.\n'> <'\n'> <'See also:\n'> <'---------\n'> <'\n'> <'**down** and **frame**.'> ) } {(1)} {(_Dbg_complete_down)} ) (FuncDef name: _Dbg_complete_down body: (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:start) op:Equal spids:[188])] spids: [184] ) terminator: <Op_Semi ';'> ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:start) right: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Plus left: (ArithUnary op_id: Node_UnaryMinus child: (ArithVarRef name:_Dbg_stack_size) ) right: (ArithWord w:{(Lit_Digits 2)}) ) right: (ArithVarRef name:_Dbg_stack_pos) ) ) ) (Sentence child: (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:end) op:Equal spids:[208])] spids: [204] ) terminator: <Op_Semi ';'> ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:end) right: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:_Dbg_stack_size) right: (ArithWord w:{(Lit_Digits 3)}) ) right: (ArithVarRef name:_Dbg_stack_pos) ) ) ) (C {(_Dbg_complete_num_range)} {($ VSub_Name '$start')} {($ VSub_Name '$end')}) ] spids: [181] ) spids: [177 180] ) (FuncDef name: _Dbg_do_down body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(_Dbg_not_running)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(3)}) ] ) (Assignment keyword: Assign_Typeset pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)}) spids: [251 255] ) } spids: [250] ) ] spids: [248] ) (C {(_Dbg_is_signed_int)} {($ VSub_Name '$count')}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{(Lit_Digits 0)}) right: (ArithWord w:{($ VSub_QMark '$?')}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_Dbg_frame_adjust)} {($ VSub_Name '$count')} {(-1)}) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [ (assign_pair lhs: (LhsName name:rc) op: Equal rhs: {($ VSub_QMark '$?')} spids: [292] ) ] spids: [288] ) ] spids: [16777215 278] ) ] else_action: [ (C {(_Dbg_errmsg)} {(DQ ('Expecting an integer; got ') ($ VSub_Name '$count'))}) (Assignment keyword: Assign_Typeset flags: [-i] pairs: [(assign_pair lhs:(LhsName name:rc) op:Equal rhs:{(2)} spids:[311])] spids: [307] ) ] spids: [296 315] ) (AndOr ops: [Op_DAmp] children: [ (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{(Lit_Digits 0)}) right: (ArithVarRef name:rc) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_last_cmd) op: Equal rhs: {(SQ <down>)} spids: [329] ) ] spids: [329] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_Name '$rc')}) ] spids: [236] ) spids: [232 235] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number '$0')} right: { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [353 358] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (ForEach iter_name: _Dbg_file iter_words: [{(help)} {(msg)} {(sort)} {(columnize)}] do_arg_iter: F body: (DoGroup children: [ (C {(source)} {(${ VSub_Name top_dir) (/lib/) (${ VSub_Name _Dbg_file) (.sh)}) ] spids: [383 398] ) spids: [372 381] ) (C {(source)} {(${ VSub_Name top_dir) (/command/help.sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_args) op: Equal rhs: {(SQ <down>)} spids: [409] ) ] spids: [409] ) (C {(_Dbg_do_help)} {(down)}) ] spids: [16777215 364] ) ] spids: [16777215 419] ) ] )