(command.CommandList
  children: [
    (command.ShFunction
      name: _Dbg_set_debugger_internal
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$_Dbg_space_IFS'))}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS4)
                  op: Equal
                  rhs: {(SQ <'+ dbg (${BASH_SOURCE}:${LINENO}[$BASH_SUBSHELL]): ${FUNCNAME[0]}\\n'>)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_restore_user_vars
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$_Dbg_space_IFS'))}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(KW_Set set)} {(-) ($ VSub_DollarName '$_Dbg_old_set_opts')})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IFS)
                      op: Equal
                      rhs: {(DQ ($ VSub_DollarName '$_Dbg_old_IFS'))}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PS4)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$_Dbg_old_PS4'))}
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_DEqual
                      left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_old_set_nullglob>)
                      right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                    )
                )
                (C {(shopt)} {(-s)} {(nullglob)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_args
      body: 
        (command.BraceGroup
          children: [
            (C {(typeset)} {(-i)} 
              {(Lit_VarLike '_Dbg_n=') (braced_var_sub token:<VSub_At '@'> prefix_op:VSub_Pound)}
            )
            (C {(typeset)} {(-i)} {(_Dbg_i)})
            (C {(typeset)} {(-i)} 
              {(Lit_VarLike '_Dbg_arg_max=') 
                (braced_var_sub
                  token: <VSub_Name _Dbg_arg>
                  prefix_op: VSub_Pound
                  bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                )
              }
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (sh_lhs_expr.Name name:_Dbg_i)
                  right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_arg_max>)
                )
              cond: 
                (arith_expr.Binary
                  op_id: Arith_Great
                  left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_i>)
                  right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_n>)
                )
              update: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDMinus
                  child: (sh_lhs_expr.Name name:_Dbg_i)
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {(unset)} 
                      {(Lit_ArrayLhsOpen '_Dbg_arg[') ($ VSub_DollarName '$_Dbg_i') (Lit_RBracket ']')}
                    )
                  ]
                )
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (sh_lhs_expr.Name name:_Dbg_i)
                  right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                )
              cond: 
                (arith_expr.Binary
                  op_id: Arith_Great
                  left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_n>)
                  right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                )
              update: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDMinus
                  child: (sh_lhs_expr.Name name:_Dbg_n)
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              name: _Dbg_arg
                              index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_i')})
                            )
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$1'))}
                        )
                      ]
                    )
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Node_PostDPlus
                          child: (sh_lhs_expr.Name name:_Dbg_i)
                        )
                    )
                    (C {(shift)})
                  ]
                )
            )
            (C {(unset)} {(Lit_ArrayLhsOpen '_Dbg_arg[') (0) (Lit_RBracket ']')})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_set_debugger_entry
      body: 
        (command.BraceGroup
          children: [
            (C {(trap)} {(SQ )} {(DEBUG)})
            (C {(typeset)} {(-li)} 
              {(Lit_VarLike 'discard_top_fn_count=') 
                (braced_var_sub
                  token: <VSub_Number 1>
                  suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(2)})
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_cur_fn)
                  op: Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <VSub_Name FUNCNAME>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: 
                              (arith_expr.ArithWord
                                w: {($ VSub_DollarName '$discard_top_fn_count')}
                              )
                          )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_lineno)
                  op: Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <VSub_Name BASH_LINENO>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                          )
                      )
                    }
                )
              ]
            )
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_Less
                      left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_frame_last_lineno>)
                      right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                    )
                )
                (C {(let)} {(Lit_VarLike '_Dbg_frame_last_lineno=') (1)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_IFS)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$IFS'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_PS4)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$PS4'))}
                )
              ]
            )
            (command.DParen
              child: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (sh_lhs_expr.Name name:_Dbg_stack_size)
                  right: 
                    (arith_expr.Binary
                      op_id: Arith_Minus
                      left: 
                        (arith_expr.Binary
                          op_id: Arith_Plus
                          left: 
                            (arith_expr.ArithWord
                              w: 
                                {
                                  (braced_var_sub
                                    token: <VSub_Name FUNCNAME>
                                    prefix_op: VSub_Pound
                                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                                  )
                                }
                            )
                          right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                        )
                      right: (arith_expr.VarRef token:<Lit_ArithVarLike discard_top_fn_count>)
                    )
                )
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:_Dbg_stack_pos) op:Equal rhs:{(_0)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_listline)
                  op: Equal
                  rhs: {(_Dbg_frame_last_lineno)}
                )
              ]
            )
            (C {(_Dbg_set_debugger_internal)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_filename)
                  op: Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <VSub_Name BASH_SOURCE>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: 
                              (arith_expr.ArithWord
                                w: {($ VSub_DollarName '$discard_top_fn_count')}
                              )
                          )
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: VTest_ColonHyphen
                            arg_word: {($ VSub_DollarName '$_Dbg_bogus_file')}
                          )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_frame_last_filename)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(_Dbg_resolve_expand_filename)} 
                                {(DQ ($ VSub_DollarName '$_Dbg_frame_last_filename'))}
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (C {(_Dbg_source_journal)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_Great
                              left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_QUIT_LEVELS>)
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(_Dbg_do_quit)} {($ VSub_DollarName '$_Dbg_debugged_exit_code')})]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_set_to_return_from_debugger
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:_Dbg_stop_reason) op:Equal rhs:{(SQ )})]
            )
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:_Dbg_listline) op:Equal rhs:{(0)})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_lineno)
                  op: Equal
                  rhs: {(${ VSub_Name _Dbg_frame_last_lineno)}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_NEqual
                              left: (arith_expr.ArithWord w:{($ VSub_Number '$1')})
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_last_bash_command)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$_Dbg_bash_command'))}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_last_source_file)
                          op: Equal
                          rhs: {(DQ ($ VSub_DollarName '$_Dbg_frame_last_filename'))}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_last_lineno)
                      op: Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <VSub_Name BASH_LINENO>
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                              )
                          )
                        }
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_last_source_file)
                      op: Equal
                      rhs: 
                        {
                          (braced_var_sub
                            token: <VSub_Name BASH_SOURCE>
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                              )
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: VTest_ColonHyphen
                                arg_word: {($ VSub_DollarName '$_Dbg_bogus_file')}
                              )
                          )
                        }
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_Dbg_last_bash_command)
                      op: Equal
                      rhs: {(DQ ('**unsaved _bashdb command**'))}
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_restore_debug_trap>)
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(trap)} {(SQ <'_Dbg_debug_trap_handler 0 "$BASH_COMMAND" "$@"'>)} {(DEBUG)})
                  ]
                )
              ]
              else_action: [(C {(trap)} {(-)} {(DEBUG)})]
            )
            (C {(_Dbg_restore_user_vars)})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_state
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_statefile)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {(_Dbg_tempname)} {(statefile)})]
                          )
                      )
                    }
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(SQ )}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (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.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ('rm ') ($ VSub_DollarName '$_Dbg_statefile'))}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (C {(export)} {(Lit_VarLike 'DBG_RESTART_FILE=') (DQ ($ VSub_DollarName '$_Dbg_statefile'))})
            (C {(_Dbg_write_journal)} 
              {
                (DQ ('export DBG_RESTART_FILE=') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$_Dbg_statefile') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_Dbg_set
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(declare)} {(-p)} {(_Dbg_set_basename)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(declare)} {(-p)} {(_Dbg_set_debug)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(declare)} {(-p)} {(_Dbg_edit)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(declare)} {(-p)} {(_Dbg_set_listsize)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(declare)} {(-p)} {(_Dbg_prompt_str)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(declare)} {(-p)} {(_Dbg_set_show_command)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_restore_state
      body: 
        (command.BraceGroup
          children: [
            (C {(typeset)} {(Lit_VarLike 'statefile=') ($ VSub_Number '$1')})
            (C {(.)} {($ VSub_Number '$1')})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_restore_from_nested_shell
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(rm)} {(-f)} {($ VSub_DollarName '$_Dbg_shell_temp_profile')}]
              redirects: [
                (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})
                (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_r
                              child: {($ VSub_DollarName '$_Dbg_restore_info')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(.)} {($ VSub_DollarName '$_Dbg_restore_info')})
                    (C {(rm)} {($ VSub_DollarName '$_Dbg_restore_info')})
                  ]
                )
              ]
            )
          ]
        )
    )
  ]
)