(command.CommandList
  children: [
    (command.ShFunction
      name: _Dbg_set_debugger_internal
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_space_IFS'))}
                      spids: [71]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS4)
                  op: assign_op.Equal
                  rhs: {(SQ <'+ dbg (${BASH_SOURCE}:${LINENO}[$BASH_SUBSHELL]): ${FUNCNAME[0]}\\n'>)}
                  spids: [78]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_restore_user_vars
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_space_IFS'))}
                      spids: [93]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<set>} {<-> ($ Id.VSub_DollarName '$_Dbg_old_set_opts')})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_old_IFS'))}
                      spids: [106]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS4)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_old_PS4'))}
                  spids: [113]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: <Id.Lit_ArithVarLike _Dbg_old_set_nullglob>
                      right: {<Id.Lit_Digits 0>}
                    )
                )
                (C {<shopt>} {<-s>} {<nullglob>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_args
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} 
              {<Id.Lit_VarLike '_Dbg_n='> 
                (braced_var_sub token:<Id.VSub_At '@'> prefix_op:(Id.VSub_Pound))
              }
            )
            (C {<typeset>} {<-i>} {<_Dbg_i>})
            (C {<typeset>} {<-i>} 
              {<Id.Lit_VarLike '_Dbg_arg_max='> 
                (braced_var_sub
                  token: <Id.VSub_Name _Dbg_arg>
                  prefix_op: (Id.VSub_Pound)
                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                )
              }
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike _Dbg_i>
                  right: <Id.Lit_ArithVarLike _Dbg_arg_max>
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Great
                  left: <Id.Lit_ArithVarLike _Dbg_i>
                  right: <Id.Lit_ArithVarLike _Dbg_n>
                )
              update: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDMinus
                  child: <Id.Lit_ArithVarLike _Dbg_i>
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<unset>} 
                      {<Id.Lit_ArrayLhsOpen '_Dbg_arg['> ($ Id.VSub_DollarName '$_Dbg_i') 
                        <Id.Lit_RBracket ']'>
                      }
                    )
                  ]
                )
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike _Dbg_i>
                  right: {<Id.Lit_Digits 1>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Great
                  left: <Id.Lit_ArithVarLike _Dbg_n>
                  right: {<Id.Lit_Digits 0>}
                )
              update: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDMinus
                  child: <Id.Lit_ArithVarLike _Dbg_n>
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              name: _Dbg_arg
                              index: {($ Id.VSub_DollarName '$_Dbg_i')}
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$1'))}
                          spids: [277]
                        )
                      ]
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike _Dbg_i>
                        )
                    )
                    (C {<shift>})
                  ]
                )
            )
            (C {<unset>} {<Id.Lit_ArrayLhsOpen '_Dbg_arg['> <0> <Id.Lit_RBracket ']'>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_set_debugger_entry
      body: 
        (BraceGroup
          children: [
            (C {<trap>} {(SQ )} {<DEBUG>})
            (C {<typeset>} {<-li>} 
              {<Id.Lit_VarLike 'discard_top_fn_count='> 
                (braced_var_sub
                  token: <Id.VSub_Number 1>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<2>})
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_cur_fn)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name FUNCNAME>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: {($ Id.VSub_DollarName '$discard_top_fn_count')}
                          )
                      )
                    }
                  spids: [381]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_lineno)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name BASH_LINENO>
                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                      )
                    }
                  spids: [390]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Less
                      left: <Id.Lit_ArithVarLike _Dbg_frame_last_lineno>
                      right: {<Id.Lit_Digits 1>}
                    )
                )
                (C {<let>} {<Id.Lit_VarLike '_Dbg_frame_last_lineno='> <1>})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_IFS)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$IFS'))}
                  spids: [417]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_PS4)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$PS4'))}
                  spids: [423]
                )
              ]
            )
            (command.DParen
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike _Dbg_stack_size>
                  right: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Minus
                      left: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Plus
                          left: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name FUNCNAME>
                                prefix_op: (Id.VSub_Pound)
                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                              )
                            }
                          right: {<Id.Lit_Digits 1>}
                        )
                      right: <Id.Lit_ArithVarLike discard_top_fn_count>
                    )
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_stack_pos)
                  op: assign_op.Equal
                  rhs: {<_0>}
                  spids: [453]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_listline)
                  op: assign_op.Equal
                  rhs: {<_Dbg_frame_last_lineno>}
                  spids: [457]
                )
              ]
            )
            (C {<_Dbg_set_debugger_internal>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_filename)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name BASH_SOURCE>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: {($ Id.VSub_DollarName '$discard_top_fn_count')}
                          )
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: {($ Id.VSub_DollarName '$_Dbg_bogus_file')}
                          )
                      )
                    }
                  spids: [464]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_filename)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<_Dbg_resolve_expand_filename>} 
                            {(DQ ($ Id.VSub_DollarName '$_Dbg_frame_last_filename'))}
                          )
                      )
                    }
                  spids: [475]
                )
              ]
            )
            (C {<_Dbg_source_journal>})
            (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_QUIT_LEVELS>
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<_Dbg_do_quit>} {($ Id.VSub_DollarName '$_Dbg_debugged_exit_code')})]
                  spids: [498 513]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_set_to_return_from_debugger
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_stop_reason)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [534]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_listline)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [539]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_lineno)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _Dbg_frame_last_lineno)}
                  spids: [547]
                )
              ]
            )
            (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_Number '$1')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_last_bash_command)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_bash_command'))}
                          spids: [571]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_last_source_file)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_frame_last_filename'))}
                          spids: [577]
                        )
                      ]
                    )
                  ]
                  spids: [553 568]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_last_lineno)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name BASH_LINENO>
                            bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                          )
                        }
                      spids: [586]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_last_source_file)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <Id.VSub_Name BASH_SOURCE>
                            bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>})
                            suffix_op: 
                              (suffix_op.Unary
                                tok: <Id.VTest_ColonHyphen ':-'>
                                arg_word: {($ Id.VSub_DollarName '$_Dbg_bogus_file')}
                              )
                          )
                        }
                      spids: [595]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_last_bash_command)
                      op: assign_op.Equal
                      rhs: {(DQ <'**unsaved _bashdb command**'>)}
                      spids: [606]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (command.DParen child:<Id.Lit_ArithVarLike _Dbg_restore_debug_trap>)
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<trap>} {(SQ <'_Dbg_debug_trap_handler 0 "$BASH_COMMAND" "$@"'>)} {<DEBUG>})
                  ]
                  spids: [616 627]
                )
              ]
              else_action: [(C {<trap>} {<->} {<DEBUG>})]
            )
            (C {<_Dbg_restore_user_vars>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_state
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_statefile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_tempname>} {<statefile>})
                      )
                    }
                  spids: [665]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(SQ )}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (C {<_Dbg_save_breakpoints>})
            (C {<_Dbg_save_actions>})
            (C {<_Dbg_save_watchpoints>})
            (C {<_Dbg_save_display>})
            (C {<_Dbg_save_Dbg_set>})
            (command.Simple
              words: [{<echo>} {(DQ <'unset DBG_RESTART_FILE'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'rm '> ($ Id.VSub_DollarName '$_Dbg_statefile'))}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (C {<export>} 
              {<Id.Lit_VarLike 'DBG_RESTART_FILE='> (DQ ($ Id.VSub_DollarName '$_Dbg_statefile'))}
            )
            (C {<_Dbg_write_journal>} 
              {
                (DQ <'export DBG_RESTART_FILE='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$_Dbg_statefile') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_Dbg_set
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<declare>} {<-p>} {<_Dbg_set_basename>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<declare>} {<-p>} {<_Dbg_set_debug>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<declare>} {<-p>} {<_Dbg_edit>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<declare>} {<-p>} {<_Dbg_set_listsize>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<declare>} {<-p>} {<_Dbg_prompt_str>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<declare>} {<-p>} {<_Dbg_set_show_command>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_restore_state
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<Id.Lit_VarLike 'statefile='> ($ Id.VSub_Number '$1')})
            (C {<.>} {($ Id.VSub_Number '$1')})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_restore_from_nested_shell
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<rm>} {<-f>} {($ Id.VSub_DollarName '$_Dbg_shell_temp_profile')}]
              redirects: [
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_r
                                  child: {($ Id.VSub_DollarName '$_Dbg_restore_info')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<.>} {($ Id.VSub_DollarName '$_Dbg_restore_info')})
                    (C {<rm>} {($ Id.VSub_DollarName '$_Dbg_restore_info')})
                  ]
                  spids: [862 874]
                )
              ]
            )
          ]
        )
    )
  ]
)