(command.CommandList children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<_Dbg_last_search_pat>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_listline='> <0>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<_Dbg_source_line>}] redirects: [] do_fork: T ) (command.ShFunction keyword: <Id.KW_Function function> name_tok: <_Dbg_print_location_and_command> name: _Dbg_print_location_and_command body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'line_number='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName _Dbg_frame_last_lineno)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'filename='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName _Dbg_frame_last_filename)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_get_source_line> more_env: [] words: [ {<_Dbg_get_source_line>} {($ Id.VSub_DollarName line_number)} {(DQ ($ Id.VSub_DollarName filename))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_adjust_filename> more_env: [] words: [{<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [ {<_Dbg_msg>} { (DQ <'('> (${ Id.VSub_Name filename) <':'> (${ Id.VSub_Name line_number) <'):\n'> (${ Id.VSub_Name line_number) <':'> <Id.Lit_BadBackslash '\\'> <t> (${ Id.VSub_Name _Dbg_source_line) ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_set_show_command)} right: {(DQ <on>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [{<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName _Dbg_bash_command))}] redirects: [] do_fork: T ) ] spids: [184 200] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_last_lineno)} right: {($ Id.VSub_DollarName _Dbg_frame_last_lineno)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_last_source_file)} right: {($ Id.VSub_DollarName _Dbg_frame_last_filename)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName _Dbg_last_bash_command)} right: {($ Id.VSub_DollarName _Dbg_bash_command)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_set_show_command)} right: {(DQ <auto>)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [{<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName _Dbg_bash_command))}] redirects: [] do_fork: T ) ] spids: [210 264] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_print_linetrace> name: _Dbg_print_linetrace body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'line_number='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName _Dbg_frame_last_lineno)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'filename='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {(DQ ($ Id.VSub_DollarName _Dbg_frame_last_filename))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<-i>} {<Id.Lit_VarLike 'depth='> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FUNCNAME> var_name: FUNCNAME prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) <-3> } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {($ Id.VSub_DollarName _Dbg_script)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDMinus child: ($ Id.Lit_ArithVarLike depth) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [343 355] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike depth) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <_Dbg_get_source_line> more_env: [] words: [ {<_Dbg_get_source_line>} {($ Id.VSub_DollarName line_number)} {(DQ ($ Id.VSub_DollarName filename))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_adjust_filename> more_env: [] words: [{<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [ {<_Dbg_msg>} { (DQ <'('> (${ Id.VSub_Name filename) <':'> (${ Id.VSub_Name line_number) <'):\n'> <'level '> ($ Id.VSub_DollarName _Dbg_DEBUGGER_LEVEL) <', subshell '> ($ Id.VSub_DollarName BASH_SUBSHELL) <', depth '> ($ Id.VSub_DollarName depth) <':'> <Id.Lit_BadBackslash '\\'> <t> (${ Id.VSub_Name _Dbg_source_line) ) } ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_set_show_command)} right: {(DQ <on>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [{<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName _Dbg_bash_command))}] redirects: [] do_fork: T ) ] spids: [469 485] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: ($ Id.Lit_ArithVarLike _Dbg_last_lineno) right: ($ Id.Lit_ArithVarLike _Dbg_frame_last_lineno) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_last_source_file)} right: {($ Id.VSub_DollarName _Dbg_frame_last_filename)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName _Dbg_last_bash_command)} right: {($ Id.VSub_DollarName _Dbg_bash_command)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName _Dbg_set_show_command)} right: {(DQ <auto>)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [{<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName _Dbg_bash_command))}] redirects: [] do_fork: T ) ] spids: [495 550] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_parse_list_args> name: _Dbg_parse_list_args body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<max_line>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 3>} ) right: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 5>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<center_line>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'center_line='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'center_line='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'center_line='> name:center_line) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'max_line='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'max_line='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_line='> name:max_line) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 3))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number 4)} right: {(SQ <.>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: ($ Id.Lit_ArithVarLike _Dbg_frame_last_lineno) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [655 670] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number 4)} right: {(SQ <->)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: (arith_expr.Binary op_id: Id.Arith_Star left: {<Id.Lit_Digits 2>} right: ($ Id.Lit_ArithVarLike _Dbg_set_listsize) ) ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [681 696] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_n child:{($ Id.VSub_Number 4)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Number 4)} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_Number 2)} right: {($ Id.VSub_Number 4)} ) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [726 739] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: {($ Id.VSub_Number 4)} ) right: <Id.Op_DRightParen _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [711 723] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {<Id.Lit_Digits 0>} right: ($ Id.Lit_ArithVarLike _Dbg_listline) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike '_Dbg_listline='> pairs: [ (AssignPair left: <Id.Lit_VarLike '_Dbg_listline='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike '_Dbg_listline='> name: _Dbg_listline ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName _Dbg_frame_last_lineno)} ) ] redirects: [] ) ] spids: [768 783] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DAmp left: (arith_expr.Binary op_id: Id.Arith_DEqual left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: {<Id.Lit_Digits 0>} ) right: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike _Dbg_listline) ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<count>}] redirects: [] do_fork: T ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike count) right: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 5> var_name: 5 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<_Dbg_set_listsize>} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Op_DRightParen _> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike count) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike count) right: (arith_expr.Binary op_id: Id.Arith_Plus left: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_Number 2)} right: {($ Id.VSub_Number 5)} ) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: {($ Id.VSub_Number 5)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike count) right: ($ Id.Lit_ArithVarLike _Dbg_listline) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: ($ Id.Lit_ArithVarLike center_line) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_MinusEqual left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: (arith_expr.Binary op_id: Id.Arith_Slash left: ($ Id.Lit_ArithVarLike count) right: {<Id.Lit_Digits 2>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: {<Id.Lit_Digits 1>} ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike end_line) right: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: ($ Id.Lit_ArithVarLike count) ) right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] spids: [851 874] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike end_line) right: ($ Id.Lit_ArithVarLike count) ) right: <Id.Op_DRightParen _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_list> name: _Dbg_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 3>} ) right: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 5>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<filename>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'filename='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'filename='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filename='> name:filename) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<end_line>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_readin_if_new> more_env: [] words: [{<_Dbg_readin_if_new>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<max_line>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'max_line='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'max_line='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'max_line='> name:max_line) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <_Dbg_get_maxline> more_env: [] words: [{<_Dbg_get_maxline>} {(DQ ($ Id.VSub_DollarName filename))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} { (DQ <'internal error getting number of lines in '> ($ Id.VSub_DollarName filename) ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [1023 1038] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <_Dbg_parse_list_args> more_env: [] words: [ {<_Dbg_parse_list_args>} {(DQ ($ Id.VSub_DollarName max_line))} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: ($ Id.Lit_ArithVarLike max_line) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <_Dbg_errmsg> more_env: [] words: [ {<_Dbg_errmsg>} { (DQ <'Line number '> ($ Id.VSub_DollarName _Dbg_listline) <' out of range;'>) } { (DQ ($ Id.VSub_DollarName filename) <' has '> ($ Id.VSub_DollarName max_line) <' lines.'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [1070 1085] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: ($ Id.Lit_ArithVarLike end_line) right: ($ Id.Lit_ArithVarLike max_line) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike end_line) right: ($ Id.Lit_ArithVarLike max_line) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<frame_fullfile>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'frame_fullfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'frame_fullfile='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'frame_fullfile='> name:frame_fullfile) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name _Dbg_file2canonic> var_name: _Dbg_file2canonic bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName _Dbg_frame_last_filename)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ForExpr keyword: <Id.KW_For for> cond: (arith_expr.Binary op_id: Id.Arith_LessEqual left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: ($ Id.Lit_ArithVarLike end_line) ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike _Dbg_listline) ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'prefix='> (SQ <' '>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <_Dbg_get_source_line> more_env: [] words: [ {<_Dbg_get_source_line>} {($ Id.VSub_DollarName _Dbg_listline)} {(DQ ($ Id.VSub_DollarName filename))} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: ($ Id.Lit_ArithVarLike _Dbg_listline) right: ($ Id.Lit_ArithVarLike _Dbg_frame_last_lineno) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName fullname)} right: {($ Id.VSub_DollarName frame_fullfile)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'prefix='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prefix='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix) op: assign_op.Equal rhs: {(SQ <' => '>)} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.Simple blame_tok: <_Dbg_printf> more_env: [] words: [ {<_Dbg_printf>} {(DQ <'%3d:%s%s'>)} {($ Id.VSub_DollarName _Dbg_listline)} {(DQ ($ Id.VSub_DollarName prefix))} {(DQ ($ Id.VSub_DollarName _Dbg_source_line))} ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <_Dbg_list_columns> name: _Dbg_list_columns body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<Id.Lit_VarLike 'colsep='> (SQ <' '>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'colsep='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'colsep='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'colsep='> name:colsep) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<linewidth>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Sentence child: (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike linewidth) right: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Digits 2>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>}] redirects: [] do_fork: T ) ] spids: [1309 1323] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike linewidth) right: (arith_expr.Binary op_id: Id.Arith_Minus left: ($ Id.Lit_ArithVarLike _Dbg_set_linewidth) right: {<Id.Lit_Digits 2>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_NEqual left: {($ Id.VSub_Pound '#')} right: {<Id.Lit_Digits 0>} ) right: <Id.Op_DRightParen _> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ops: [<Id.Op_DAmp _>] ) (command.Sentence child: (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-a>} {<columnized>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <columnize> more_env: [] words: [ {<columnize>} {($ Id.VSub_DollarName linewidth)} {(DQ ($ Id.VSub_DollarName colsep))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [{<typeset>} {<-i>} {<i>}] redirects: [] do_fork: T ) (command.ForExpr keyword: <Id.KW_For for> init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name columnized> var_name: columnized prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <_Dbg_msg> more_env: [] words: [ {<_Dbg_msg>} { (DQ <' '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name columnized> var_name: columnized bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i)) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )