(command.CommandList
  children: [
    (C {<typeset>} {<_Dbg_last_search_pat>})
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_listline='> <0>})
    (C {<typeset>} {<_Dbg_source_line>})
    (command.ShFunction
      name: _Dbg_print_location_and_command
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} 
              {<Id.Lit_VarLike 'line_number='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {($ Id.VSub_DollarName '$_Dbg_frame_last_lineno')}
                    )
                )
              }
            )
            (C {<typeset>} 
              {<Id.Lit_VarLike 'filename='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {($ Id.VSub_DollarName '$_Dbg_frame_last_filename')}
                    )
                )
              }
            )
            (C {<_Dbg_get_source_line>} {($ Id.VSub_DollarName '$line_number')} 
              {(DQ ($ Id.VSub_DollarName '$filename'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:filename)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_DollarName '$filename'))})
                      )
                    }
                  spids: [137]
                )
              ]
            )
            (C {<_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)
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName '$_Dbg_set_show_command')}
                                  right: {(DQ <on>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName '$_Dbg_bash_command'))})]
                  spids: [184 200]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: {($ Id.VSub_DollarName '$_Dbg_last_lineno')}
                                      right: {($ Id.VSub_DollarName '$_Dbg_frame_last_lineno')}
                                    )
                                )
                                (command.DBracket
                                  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')}
                                    )
                                )
                                (command.DBracket
                                  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>)}
                                        )
                                    )
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName '$_Dbg_bash_command'))})]
                  spids: [210 264]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_print_linetrace
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} 
              {<Id.Lit_VarLike 'line_number='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {($ Id.VSub_DollarName '$_Dbg_frame_last_lineno')}
                    )
                )
              }
            )
            (C {<typeset>} 
              {<Id.Lit_VarLike 'filename='> 
                (braced_var_sub
                  token: <Id.VSub_Number 2>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {(DQ ($ Id.VSub_DollarName '$_Dbg_frame_last_filename'))}
                    )
                )
              }
            )
            (C {<typeset>} {<-i>} 
              {<Id.Lit_VarLike 'depth='> 
                (braced_var_sub
                  token: <Id.VSub_Name FUNCNAME>
                  prefix_op: (Id.VSub_Pound)
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                ) <-3>
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_DollarName '$_Dbg_script')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDMinus
                          child: <Id.Lit_ArithVarLike depth>
                        )
                    )
                  ]
                  spids: [343 355]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: <Id.Lit_ArithVarLike depth>
                      right: {<Id.Lit_Digits 0>}
                    )
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (C {<_Dbg_get_source_line>} {($ Id.VSub_DollarName '$line_number')} 
              {(DQ ($ Id.VSub_DollarName '$filename'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:filename)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_DollarName '$filename'))})
                      )
                    }
                  spids: [395]
                )
              ]
            )
            (C {<_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)
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_DollarName '$_Dbg_set_show_command')}
                                  right: {(DQ <on>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName '$_Dbg_bash_command'))})]
                  spids: [469 485]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: <Id.Lit_ArithVarLike _Dbg_last_lineno>
                                      right: <Id.Lit_ArithVarLike _Dbg_frame_last_lineno>
                                    )
                                )
                                (command.DBracket
                                  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')}
                                    )
                                )
                                (command.DBracket
                                  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>)}
                                        )
                                    )
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<_Dbg_msg>} {(DQ ($ Id.VSub_DollarName '$_Dbg_bash_command'))})]
                  spids: [495 550]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_parse_list_args
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<max_line>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  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>}
                        )
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<typeset>} {<-i>} {<center_line>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:center_line)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [635]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:max_line)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [640]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:filename)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$3'))}
                  spids: [644]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$4')}
                                  right: {(SQ <.>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.DParen
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: <Id.Lit_ArithVarLike _Dbg_listline>
                          right: <Id.Lit_ArithVarLike _Dbg_frame_last_lineno>
                        )
                    )
                  ]
                  spids: [655 670]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$4')}
                                  right: {(SQ <->)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.DParen
                      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>
                                )
                            )
                        )
                    )
                  ]
                  spids: [681 696]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_Number '$4')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Less
                                          left: {($ Id.VSub_Number '$4')}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.DParen
                              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>}
                                    )
                                )
                            )
                          ]
                          spids: [726 739]
                        )
                      ]
                      else_action: [
                        (command.DParen
                          child: 
                            (arith_expr.BinaryAssign
                              op_id: Id.Arith_Equal
                              left: <Id.Lit_ArithVarLike _Dbg_listline>
                              right: {($ Id.VSub_Number '$4')}
                            )
                        )
                      ]
                    )
                  ]
                  spids: [711 723]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {<Id.Lit_Digits 0>}
                                  right: <Id.Lit_ArithVarLike _Dbg_listline>
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_listline)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_Dbg_frame_last_lineno')}
                          spids: [786]
                        )
                      ]
                    )
                  ]
                  spids: [768 783]
                )
              ]
            )
            (command.DParen
              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>
                    )
                )
            )
            (C {<typeset>} {<-i>} {<count>})
            (command.DParen
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike count>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 5>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: {<_Dbg_set_listsize>}
                          )
                      )
                    }
                )
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: <Id.Lit_ArithVarLike count>
                      right: {<Id.Lit_Digits 0>}
                    )
                )
                (command.DParen
                  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>}
                        )
                    )
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Unary
                                      op_id: Id.BoolUnary_z
                                      child: {($ Id.VSub_Number '$5')}
                                    )
                                )
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Less
                                      left: <Id.Lit_ArithVarLike count>
                                      right: <Id.Lit_ArithVarLike _Dbg_listline>
                                    )
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DParen
                          child: <Id.Lit_ArithVarLike center_line>
                        )
                        (command.DParen
                          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>}
                                )
                            )
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_LessEqual
                              left: <Id.Lit_ArithVarLike _Dbg_listline>
                              right: {<Id.Lit_Digits 0>}
                            )
                        )
                        (command.DParen
                          child: 
                            (arith_expr.BinaryAssign
                              op_id: Id.Arith_Equal
                              left: <Id.Lit_ArithVarLike _Dbg_listline>
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      ]
                    )
                    (command.DParen
                      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>}
                            )
                        )
                    )
                  ]
                  spids: [851 874]
                )
              ]
              else_action: [
                (command.DParen
                  child: 
                    (arith_expr.BinaryAssign
                      op_id: Id.Arith_Equal
                      left: <Id.Lit_ArithVarLike end_line>
                      right: <Id.Lit_ArithVarLike count>
                    )
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_list
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  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>}
                        )
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<typeset>} {<filename>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:filename)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [987]
                )
              ]
            )
            (C {<typeset>} {<end_line>})
            (C {<_Dbg_readin_if_new>} {(DQ ($ Id.VSub_DollarName '$filename'))})
            (C {<typeset>} {<-i>} {<max_line>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:max_line)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_get_maxline>} {(DQ ($ Id.VSub_DollarName '$filename'))})
                      )
                    }
                  spids: [1012]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_NEqual
                                  left: {($ Id.VSub_QMark '$?')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_errmsg>} 
                      {
                        (DQ <'internal error getting number of lines in '> 
                          ($ Id.VSub_DollarName '$filename')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1023 1038]
                )
              ]
            )
            (C {<_Dbg_parse_list_args>} {(DQ ($ Id.VSub_DollarName '$max_line'))} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Great
                                  left: <Id.Lit_ArithVarLike _Dbg_listline>
                                  right: <Id.Lit_ArithVarLike max_line>
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_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.'>)}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1070 1085]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Great
                      left: <Id.Lit_ArithVarLike end_line>
                      right: <Id.Lit_ArithVarLike max_line>
                    )
                )
                (command.DParen
                  child: 
                    (arith_expr.BinaryAssign
                      op_id: Id.Arith_Equal
                      left: <Id.Lit_ArithVarLike end_line>
                      right: <Id.Lit_ArithVarLike max_line>
                    )
                )
              ]
            )
            (C {<typeset>} {<frame_fullfile>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:frame_fullfile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name _Dbg_file2canonic>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: {($ Id.VSub_DollarName '$_Dbg_frame_last_filename')}
                          )
                      )
                    }
                  spids: [1144]
                )
              ]
            )
            (command.ForExpr
              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
                  children: [
                    (C {<typeset>} {<Id.Lit_VarLike 'prefix='> (SQ <'    '>)})
                    (C {<_Dbg_get_source_line>} {($ Id.VSub_DollarName '$_Dbg_listline')} 
                      {(DQ ($ Id.VSub_DollarName '$filename'))}
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_DEqual
                              left: <Id.Lit_ArithVarLike _Dbg_listline>
                              right: <Id.Lit_ArithVarLike _Dbg_frame_last_lineno>
                            )
                        )
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: Id.BoolBinary_GlobDEqual
                              left: {($ Id.VSub_DollarName '$fullname')}
                              right: {($ Id.VSub_DollarName '$frame_fullfile')}
                            )
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:prefix)
                              op: assign_op.Equal
                              rhs: {(SQ <' => '>)}
                              spids: [1224]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<_Dbg_printf>} {(DQ <'%3d:%s%s'>)} {($ Id.VSub_DollarName '$_Dbg_listline')} 
                      {(DQ ($ Id.VSub_DollarName '$prefix'))} {(DQ ($ Id.VSub_DollarName '$_Dbg_source_line'))}
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_list_columns
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'colsep='> (SQ <'  '>)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Great
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 0>}
                    )
                )
                (BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:colsep)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$1'))}
                              spids: [1286]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              ]
            )
            (C {<typeset>} {<-i>} {<linewidth>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Great
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          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>}
                                )
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                  ]
                  spids: [1309 1323]
                )
              ]
              else_action: [
                (command.DParen
                  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>}
                        )
                    )
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 0>}
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (command.Sentence
              child: (C {<typeset>} {<-a>} {<columnized>})
              terminator: <Id.Op_Semi _>
            )
            (C {<columnize>} {($ Id.VSub_DollarName '$linewidth')} 
              {(DQ ($ Id.VSub_DollarName '$colsep'))}
            )
            (C {<typeset>} {<-i>} {<i>})
            (command.ForExpr
              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: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name columnized>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (C {<_Dbg_msg>} 
                      {
                        (DQ <'  '> 
                          (braced_var_sub
                            token: <Id.VSub_Name columnized>
                            bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike i>)
                          )
                        )
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
  ]
)