(command.CommandList
  children: [
    (C {<typeset>} {<_Dbg_old_setopts>})
    (C {<typeset>} {<Id.Lit_VarLike '_Dbg_old_EXIT_handler='> (SQ )})
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_QUIT_ON_QUIT='> <0>})
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_program_exit_code='> <0>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_sig_print>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_sig_print)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [125]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_sig_stop>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_sig_stop)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [143]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_sig_show_stack>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_sig_show_stack)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [161]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_sig_passthrough>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_sig_passthrough)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [179]
            )
          ]
        )
      ]
    )
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_return_level='> <0>})
    (command.CommandList
      children: [
        (command.Sentence child:(C {<typeset>} {<-a>} {<_Dbg_arg>}) terminator:<Id.Op_Semi _>)
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_arg)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [208]
            )
          ]
        )
      ]
    )
    (command.ShFunction
      name: _Dbg_save_handler
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'sig='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<Id.Lit_VarLike 'old_handler='> (SQ )})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:old_handler_test)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<trap>} {<-p>} {($ Id.VSub_DollarName '$sig')})
                      )
                    }
                  spids: [238]
                )
              ]
            )
            (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 '$old_handler')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<typeset>} {<-a>} {<old_hand_a>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:old_hand_a)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [{($ Id.VSub_DollarName '$old_handler')}]
                              )
                            }
                          spids: [270]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:old_handler)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<_Dbg_subst_handler_var>} 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name old_hand_a>
                                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 2>})
                                      )
                                    }
                                  )
                              )
                            }
                          spids: [276]
                        )
                      ]
                    )
                    (C {<typeset>} {<-r>} 
                      {<Id.Lit_VarLike 'decl_cmd='> 
                        (DQ <'typeset -r _Dbg_old_'> (${ Id.VSub_Name sig) <'_handler=\''> 
                          ($ Id.VSub_DollarName '$old_handler') <'\''>
                        )
                      }
                    )
                    (C {<eval>} {($ Id.VSub_DollarName '$decl_cmd')})
                  ]
                  spids: [248 260]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_subst_handler_var
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<i>})
            (C {<typeset>} {<Id.Lit_VarLike 'result='> (SQ )})
            (command.ForEach
              iter_name: arg
              iter_words: [{($ Id.VSub_Star '$*')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$arg')}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ <'$LINENO'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'${BASH_LINENO[0]}'>)}
                                  spids: [372]
                                )
                              ]
                            )
                          ]
                          spids: [365 369 378 -1]
                        )
                        (case_arm
                          pat_list: [{(SQ <'${BASH_SOURCE[0]}'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'${BASH_SOURCE[1]}'>)}
                                  spids: [388]
                                )
                              ]
                            )
                          ]
                          spids: [381 385 394 -1]
                        )
                        (case_arm
                          pat_list: [{(SQ <'${FUNCNAME[0]}'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'${FUNCNAME[1]}'>)}
                                  spids: [404]
                                )
                              ]
                            )
                          ]
                          spids: [397 401 410 -1]
                        )
                        (case_arm
                          pat_list: [{(SQ <'${BASH_LINENO[0]}'>)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:arg)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'${BASH_LINENO[1]}'>)}
                                  spids: [420]
                                )
                              ]
                            )
                          ]
                          spids: [413 417 426 -1]
                        )
                      ]
                    )
                    (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 '$result')}
                                          right: {(SQ )}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:result)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$arg')}
                                  spids: [450]
                                )
                              ]
                            )
                          ]
                          spids: [432 447]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:result)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$result') <' '> 
                                    ($ Id.VSub_DollarName '$arg')
                                  )
                                }
                              spids: [457]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<echo>} {($ Id.VSub_DollarName '$result')})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_exit_handler
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_debugged_exit_code='> ($ Id.VSub_QMark '$?')})
            (C {<set>} {<Id.Lit_Other '+'> <x>} {<Id.Lit_Other '+'> <v>} {<Id.Lit_Other '+'> <u>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name _Dbg_sig_print>
                                        bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 0>})
                                      )
                                    }
                                  right: {(DQ <print>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_msg>} {(DQ <'Program received signal EXIT (0)...'>)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _Dbg_sig_show_stack>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {<Id.Lit_Digits 0>}
                                                  )
                                              )
                                            }
                                          right: {(DQ <showstack>)}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<_Dbg_do_backtrace>} {<0>})]
                          spids: [561 582]
                        )
                      ]
                    )
                  ]
                  spids: [526 547]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: {($ Id.VSub_DollarName '$_Dbg_old_EXIT_handler')}
                                  right: {(SQ )}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<eval>} {($ Id.VSub_DollarName '$_Dbg_old_EXIT_handler')})]
                  spids: [597 612]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe Id.Op_DPipe]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobNEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Name _Dbg_sig_stop>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {<Id.Lit_Digits 0>}
                                              )
                                          )
                                        }
                                      right: {(DQ <stop>)}
                                    )
                                )
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_NEqual
                                      left: <Id.Lit_ArithVarLike _Dbg_QUIT_LEVELS>
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                )
                                (command.DParen
                                  child: <Id.Lit_ArithVarLike _Dbg_QUIT_ON_QUIT>
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<_Dbg_do_quit>})]
                  spids: [637 684]
                )
              ]
            )
            (C {<typeset>} {<Id.Lit_VarLike 'term_msg='> (DQ <normally>)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: {($ Id.VSub_DollarName '$_Dbg_debugged_exit_code')}
                                  right: {<0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:term_msg)
                          op: assign_op.Equal
                          rhs: {(DQ <'with code '> ($ Id.VSub_DollarName '$_Dbg_debugged_exit_code'))}
                          spids: [732]
                        )
                      ]
                    )
                  ]
                  spids: [715 729]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: <Id.Lit_ArithVarLike BASH_SUBSHELL>
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_msg>} 
                      {
                        (DQ <'Debugged program terminated '> ($ Id.VSub_DollarName '$term_msg') 
                          <'. Use q to quit or R to restart.'>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_running)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [781]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: (C {<Id.Lit_Colon ':'>})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      body: (command.DoGroup children:[(C {<_Dbg_process_commands>})])
                    )
                  ]
                  spids: [751 766]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_sig_handler
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_debugged_exit_code='> ($ Id.VSub_QMark '$?')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Hyphen '$-')}
                  spids: [842]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Unary
                      op_id: Id.Arith_Bang
                      child: <Id.Lit_ArithVarLike _Dbg_set_debug>
                    )
                )
                (C {<set>} {<Id.Lit_Other '+'> <x>} {<Id.Lit_Other '+'> <v>} {<Id.Lit_Other '+'> <u>})
              ]
            )
            (C {<shopt>} {<-s>} {<extdebug>})
            (C {<typeset>} {<-r>} {<-i>} {<Id.Lit_VarLike '_Dbg_signum='> ($ Id.VSub_Number '$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.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Name _Dbg_sig_print>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {($ Id.VSub_DollarName '$_Dbg_signum')}
                                              )
                                          )
                                        }
                                      right: {(DQ <print>)}
                                    )
                                )
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Name _Dbg_sig_stop>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {($ Id.VSub_DollarName '$_Dbg_signum')}
                                              )
                                          )
                                        }
                                      right: {(DQ <stop>)}
                                    )
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<typeset>} {<-r>} 
                      {<Id.Lit_VarLike 'name='> 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<_Dbg_signum2name>} {($ Id.VSub_DollarName '$_Dbg_signum')})
                        )
                      }
                    )
                    (C {<_Dbg_msg>} 
                      {
                        (DQ <'Program received signal '> ($ Id.VSub_DollarName '$name') <' ('> 
                          ($ Id.VSub_DollarName '$_Dbg_signum') <')...'>
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _Dbg_sig_show_stack>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$_Dbg_signum')}
                                                  )
                                              )
                                            }
                                          right: {(DQ <showstack>)}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_Dbg_stack_pos)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [996]
                                )
                              ]
                            )
                            (command.DParen
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: <Id.Lit_ArithVarLike _Dbg_stack_size>
                                  right: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name FUNCNAME>
                                        prefix_op: (Id.VSub_Pound)
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      )
                                    }
                                )
                            )
                            (C {<_Dbg_do_backtrace>})
                          ]
                          spids: [972 993]
                        )
                      ]
                    )
                  ]
                  spids: [900 942]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name _Dbg_sig_stop>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName '$_Dbg_signum')}
                                          )
                                      )
                                    }
                                  right: {(DQ <stop>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<shift>})
                    (C {<_Dbg_save_args>} {(DQ ($ Id.VSub_At '$@'))})
                    (C {<_Dbg_set_debugger_entry>})
                    (C {<_Dbg_hook_enter_debugger>} {(SQ <'on receiving a signal'>)} {(SQ <noprint>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_DollarName '$_Dbg_continue_rc')}
                    )
                  ]
                  spids: [1025 1046]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_LBracket
                                  left: <Id.Lit_ArithVarLike _Dbg_sig_old_handler>
                                  right: <Id.Lit_ArithVarLike _Dbg_signum>
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<eval>} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name _Dbg_sig_old_handler>
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: {($ Id.VSub_DollarName '$_Dbg_signum')}
                            )
                        )
                      }
                    )
                  ]
                  spids: [1094 1108]
                )
              ]
            )
            (C {<_Dbg_set_to_return_from_debugger>} {<1>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$_Dbg_debugged_exit_code')}
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_err_handler
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobNEqual
                                  left: {($ Id.VSub_DollarName '$_Dbg_old_ERR_handler')}
                                  right: {(SQ )}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<eval>} {($ Id.VSub_DollarName '$_Dbg_old_ERR_handler')})]
                  spids: [1143 1158]
                )
              ]
            )
            (C {<_Dbg_msg>} 
              {
                (DQ <'Error occured at '> 
                  (braced_var_sub
                    token: <Id.VSub_Name BASH_SOURCE>
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                  ) <':'> 
                  (braced_var_sub
                    token: <Id.VSub_Name BASH_LINENO>
                    bracket_op: (bracket_op.ArrayIndex expr:{<Id.Lit_Digits 1>})
                  )
                )
              }
            )
            (C {<_Dbg_process_commands>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_signum2name
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<typeset>} {<-i>} {<-r>} {<Id.Lit_VarLike 'signum='> ($ Id.VSub_Number '$1')})
              terminator: <Id.Op_Semi _>
            )
            (command.Simple
              words: [{<builtin>} {<kill>} {<-l>} {($ Id.VSub_DollarName '$signum')}]
              redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_name2signum
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'signame='> ($ Id.VSub_Number '$1')})
              terminator: <Id.Op_Semi _>
            )
            (command.Simple
              words: [{<builtin>} {<kill>} {<-l>} {($ Id.VSub_DollarName '$signame')}]
              redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_subexit_handler
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: Id.BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <Id.VSub_Name FUNCNAME>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {<Id.Lit_Digits 1>}
                                              )
                                          )
                                        }
                                      right: {<_Dbg_> <Id.Lit_Other '*'>}
                                    )
                                )
                                (command.DParen
                                  child: 
                                    (arith_expr.Unary
                                      op_id: Id.Arith_Bang
                                      child: <Id.Lit_ArithVarLike _Dbg_set_debug>
                                    )
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})]
                  spids: [1293 1322]
                )
              ]
            )
            (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: [1336 1351]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_init_trap
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'name='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<-i>} {<-r>} 
              {<Id.Lit_VarLike 'signum='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<_Dbg_name2signum>} {($ Id.VSub_DollarName '$name')})
                )
              }
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: _Dbg_sig_print
                          index: {($ Id.VSub_DollarName '$signum')}
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$2')}
                      spids: [1399]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: _Dbg_sig_show_stack
                          index: {($ Id.VSub_DollarName '$signum')}
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$3')}
                      spids: [1408]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.IndexedName
                          name: _Dbg_sig_stop
                          index: {($ Id.VSub_DollarName '$signum')}
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$4')}
                      spids: [1417]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: <Id.Lit_ArithVarLike signum>
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<trap>} {(SQ <'_Dbg_exit_handler "$BASH_COMMAND"'>)} {<EXIT>})]
                  spids: [1448 1463]
                )
              ]
              else_action: [
                (C {<typeset>} 
                  {<Id.Lit_VarLike 'trap_cmd='> 
                    (DQ <'trap \'_Dbg_sig_handler '> ($ Id.VSub_DollarName '$signum') <' '> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\"'>
                      ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <BASH_COMMAND> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\"'>
                      ) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\$'>
                      ) <'@'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\' '> ($ Id.VSub_DollarName '$name')
                    )
                  }
                )
                (C {<eval>} {($ Id.VSub_DollarName '$trap_cmd')})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_init_default_traps
      body: 
        (BraceGroup
          children: [
            (C {<_Dbg_init_trap>} {<EXIT>} {(DQ <noprint>)} {(DQ <nostack>)} {(DQ <stop>)})
            (C {<_Dbg_init_trap>} {<ILL>} {(DQ <print>)} {(DQ <showstack>)} {(DQ <stop>)})
            (C {<_Dbg_init_trap>} {<INT>} {(DQ <print>)} {(DQ <showstack>)} {(DQ <stop>)})
            (C {<_Dbg_init_trap>} {<QUIT>} {(DQ <print>)} {(DQ <showstack>)} {(DQ <stop>)})
            (C {<_Dbg_init_trap>} {<TERM>} {(DQ <print>)} {(DQ <showstack>)} {(DQ <stop>)})
            (C {<_Dbg_init_trap>} {<TRAP>} {(DQ <print>)} {(DQ <showstack>)} {(DQ <stop>)})
          ]
        )
    )
  ]
)