(CommandList
  children: [
    (Assignment
      keyword: Assign_Typeset
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_old_setopts) op:Equal spids:[70])]
      spids: [68]
    )
    (Assignment
      keyword: Assign_Typeset
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_old_EXIT_handler) op:Equal rhs:{(SQ )} spids:[78])]
      spids: [76]
    )
    (Assignment
      keyword: Assign_Typeset
      flags: [-i]
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_QUIT_ON_QUIT) op:Equal rhs:{(0)} spids:[87])]
      spids: [83]
    )
    (Assignment
      keyword: Assign_Typeset
      flags: [-i]
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_program_exit_code) op:Equal rhs:{(0)} spids:[98])]
      spids: [94]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_Typeset
          flags: [-a]
          pairs: [(assign_pair lhs:(LhsName name:_Dbg_sig_print) op:Equal spids:[122])]
          spids: [118]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_Dbg_sig_print)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [125]
        )
      ]
      spids: [125]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_Typeset
          flags: [-a]
          pairs: [(assign_pair lhs:(LhsName name:_Dbg_sig_stop) op:Equal spids:[140])]
          spids: [136]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_Dbg_sig_stop)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [143]
        )
      ]
      spids: [143]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_Typeset
          flags: [-a]
          pairs: [(assign_pair lhs:(LhsName name:_Dbg_sig_show_stack) op:Equal spids:[158])]
          spids: [154]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_Dbg_sig_show_stack)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [161]
        )
      ]
      spids: [161]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_Typeset
          flags: [-a]
          pairs: [(assign_pair lhs:(LhsName name:_Dbg_sig_passthrough) op:Equal spids:[176])]
          spids: [172]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_Dbg_sig_passthrough)
          op: Equal
          rhs: {(ArrayLiteralPart)}
          spids: [179]
        )
      ]
      spids: [179]
    )
    (Assignment
      keyword: Assign_Typeset
      flags: [-i]
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_return_level) op:Equal rhs:{(0)} spids:[194])]
      spids: [190]
    )
    (Sentence
      child: 
        (Assignment
          keyword: Assign_Typeset
          flags: [-a]
          pairs: [(assign_pair lhs:(LhsName name:_Dbg_arg) op:Equal spids:[205])]
          spids: [201]
        )
      terminator: <Op_Semi ';'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_arg) op:Equal rhs:{(ArrayLiteralPart)} spids:[208])]
      spids: [208]
    )
    (FuncDef
      name: _Dbg_save_handler
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Typeset
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:sig)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [227]
                )
              ]
              spids: [223]
            )
            (Assignment
              keyword: Assign_Typeset
              pairs: [(assign_pair lhs:(LhsName name:old_handler) op:Equal rhs:{(SQ )} spids:[233])]
              spids: [231]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:old_handler_test)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(trap)} {(-p)} {($ VSub_Name '$sig')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [239 245]
                      )
                    }
                  spids: [238]
                )
              ]
              spids: [238]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$old_handler')})
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Typeset
                      flags: [-a]
                      pairs: [(assign_pair lhs:(LhsName name:old_hand_a) op:Equal spids:[267])]
                      spids: [263]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:old_hand_a)
                          op: Equal
                          rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$old_handler')}])}
                          spids: [270]
                        )
                      ]
                      spids: [270]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:old_handler)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(_Dbg_subst_handler_var)} 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name old_hand_a>
                                            bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                                            spids: [280 285]
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [277 286]
                              )
                            }
                          spids: [276]
                        )
                      ]
                      spids: [276]
                    )
                    (Assignment
                      keyword: Assign_Typeset
                      flags: [-r]
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:decl_cmd)
                          op: Equal
                          rhs: 
                            {
                              (DQ ('typeset -r _Dbg_old_') (${ VSub_Name sig) ("_handler='") 
                                ($ VSub_Name '$old_handler') ("'")
                              )
                            }
                          spids: [293]
                        )
                      ]
                      spids: [289]
                    )
                    (C {(eval)} {($ VSub_Name '$decl_cmd')})
                  ]
                  spids: [16777215 260]
                )
              ]
              spids: [16777215 310]
            )
          ]
          spids: [220]
        )
      spids: [216 219]
    )
    (FuncDef
      name: _Dbg_subst_handler_var
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Typeset
              flags: [-i]
              pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[335])]
              spids: [331]
            )
            (Assignment
              keyword: Assign_Typeset
              pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(SQ )} spids:[340])]
              spids: [338]
            )
            (ForEach
              iter_name: arg
              iter_words: [{($ VSub_Star '$*')}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {($ VSub_Name '$arg')}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ <'$LINENO'>)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:arg)
                                  op: Equal
                                  rhs: {(SQ <'${BASH_LINENO[0]}'>)}
                                  spids: [372]
                                )
                              ]
                              spids: [372]
                            )
                          ]
                          spids: [366 369 378 16777215]
                        )
                        (case_arm
                          pat_list: [{(SQ <'${BASH_SOURCE[0]}'>)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:arg)
                                  op: Equal
                                  rhs: {(SQ <'${BASH_SOURCE[1]}'>)}
                                  spids: [388]
                                )
                              ]
                              spids: [388]
                            )
                          ]
                          spids: [382 385 394 16777215]
                        )
                        (case_arm
                          pat_list: [{(SQ <'${FUNCNAME[0]}'>)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:arg)
                                  op: Equal
                                  rhs: {(SQ <'${FUNCNAME[1]}'>)}
                                  spids: [404]
                                )
                              ]
                              spids: [404]
                            )
                          ]
                          spids: [398 401 410 16777215]
                        )
                        (case_arm
                          pat_list: [{(SQ <'${BASH_LINENO[0]}'>)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:arg)
                                  op: Equal
                                  rhs: {(SQ <'${BASH_LINENO[1]}'>)}
                                  spids: [420]
                                )
                              ]
                              spids: [420]
                            )
                          ]
                          spids: [414 417 426 16777215]
                        )
                      ]
                      spids: [358 362 429]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_Name '$result')}
                                      right: {(SQ )}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:result)
                                  op: Equal
                                  rhs: {($ VSub_Name '$arg')}
                                  spids: [450]
                                )
                              ]
                              spids: [450]
                            )
                          ]
                          spids: [16777215 447]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:result)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name '$result') (' ') ($ VSub_Name '$arg'))}
                              spids: [457]
                            )
                          ]
                          spids: [457]
                        )
                      ]
                      spids: [454 465]
                    )
                  ]
                  spids: [355 468]
                )
              spids: [350 353]
            )
            (C {(echo)} {($ VSub_Name '$result')})
          ]
          spids: [328]
        )
      spids: [324 327]
    )
    (FuncDef
      name: _Dbg_exit_handler
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Typeset
              flags: [-i]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_debugged_exit_code)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [504]
                )
              ]
              spids: [500]
            )
            (C {(set)} {(Lit_Other '+') (x)} {(Lit_Other '+') (v)} {(Lit_Other '+') (u)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name _Dbg_sig_print>
                                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                    spids: [530 535]
                                  )
                                }
                              right: {(DQ (print))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_msg)} {(DQ ('Program received signal EXIT (0)...'))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name _Dbg_sig_show_stack>
                                            bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                            spids: [565 570]
                                          )
                                        }
                                      right: {(DQ (showstack))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(_Dbg_do_backtrace)} {(0)})]
                          spids: [16777215 582]
                        )
                      ]
                      spids: [16777215 590]
                    )
                  ]
                  spids: [16777215 547]
                )
              ]
              spids: [16777215 593]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {($ VSub_Name '$_Dbg_old_EXIT_handler')}
                              right: {(SQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(eval)} {($ VSub_Name '$_Dbg_old_EXIT_handler')})]
                  spids: [16777215 612]
                )
              ]
              spids: [16777215 620]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe Op_DPipe]
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobNEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name _Dbg_sig_stop>
                                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                                        spids: [641 646]
                                      )
                                    }
                                  right: {(DQ (stop))}
                                )
                            )
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_NEqual
                                  left: (ArithVarRef name:_Dbg_QUIT_LEVELS)
                                  right: (ArithWord w:{(Lit_Digits 0)})
                                )
                            )
                            (DParen
                              child: (ArithVarRef name:_Dbg_QUIT_ON_QUIT)
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(_Dbg_do_quit)})]
                  spids: [16777215 684]
                )
              ]
              spids: [16777215 694]
            )
            (Assignment
              keyword: Assign_Typeset
              pairs: [
                (assign_pair
                  lhs: (LhsName name:term_msg)
                  op: Equal
                  rhs: {(DQ (normally))}
                  spids: [709]
                )
              ]
              spids: [707]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {($ VSub_Name '$_Dbg_debugged_exit_code')}
                              right: {(0)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:term_msg)
                          op: Equal
                          rhs: {(DQ ('with code ') ($ VSub_Name '$_Dbg_debugged_exit_code'))}
                          spids: [732]
                        )
                      ]
                      spids: [732]
                    )
                  ]
                  spids: [16777215 729]
                )
              ]
              spids: [16777215 739]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithVarRef name:BASH_SUBSHELL)
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_msg)} 
                      {
                        (DQ ('Debugged program terminated ') ($ VSub_Name '$term_msg') 
                          ('. Use q to quit or R to restart.')
                        )
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:_Dbg_running)
                          op: Equal
                          rhs: {(0)}
                          spids: [781]
                        )
                      ]
                      spids: [781]
                    )
                    (While
                      cond: [(Sentence child:(C {(Lit_Other ':')}) terminator:<Op_Semi ';'>)]
                      body: (DoGroup children:[(C {(_Dbg_process_commands)})] spids:[791 797])
                    )
                  ]
                  spids: [16777215 766]
                )
              ]
              spids: [16777215 800]
            )
          ]
          spids: [488]
        )
      spids: [484 487]
    )
    (FuncDef
      name: _Dbg_sig_handler
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Typeset
              flags: [-i]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_debugged_exit_code)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [838]
                )
              ]
              spids: [834]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_old_set_opts)
                  op: Equal
                  rhs: {($ VSub_Hyphen '$-')}
                  spids: [842]
                )
              ]
              spids: [842]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (DParen
                  child: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:_Dbg_set_debug))
                )
                (C {(set)} {(Lit_Other '+') (x)} {(Lit_Other '+') (v)} {(Lit_Other '+') (u)})
              ]
            )
            (C {(shopt)} {(-s)} {(extdebug)})
            (Assignment
              keyword: Assign_Typeset
              flags: [-r -i]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_signum)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [895]
                )
              ]
              spids: [889]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DPipe]
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name _Dbg_sig_print>
                                        bracket_op: 
                                          (ArrayIndex
                                            expr: (ArithWord w:{($ VSub_Name '$_Dbg_signum')})
                                          )
                                        spids: [904 909]
                                      )
                                    }
                                  right: {(DQ (print))}
                                )
                            )
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name _Dbg_sig_stop>
                                        bracket_op: 
                                          (ArrayIndex
                                            expr: (ArithWord w:{($ VSub_Name '$_Dbg_signum')})
                                          )
                                        spids: [925 930]
                                      )
                                    }
                                  right: {(DQ (stop))}
                                )
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_Typeset
                      flags: [-r]
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:name)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(_Dbg_signum2name)} {($ VSub_Name '$_Dbg_signum')})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [950 954]
                              )
                            }
                          spids: [949]
                        )
                      ]
                      spids: [945]
                    )
                    (C {(_Dbg_msg)} 
                      {
                        (DQ ('Program received signal ') ($ VSub_Name '$name') (' (') 
                          ($ VSub_Name '$_Dbg_signum') (')...')
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name _Dbg_sig_show_stack>
                                            bracket_op: 
                                              (ArrayIndex
                                                expr: (ArithWord w:{($ VSub_Name '$_Dbg_signum')})
                                              )
                                            spids: [976 981]
                                          )
                                        }
                                      right: {(DQ (showstack))}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:_Dbg_stack_pos)
                                  op: Equal
                                  rhs: {(0)}
                                  spids: [996]
                                )
                              ]
                              spids: [996]
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:_Dbg_stack_size)
                                  right: 
                                    (ArithWord
                                      w: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name FUNCNAME>
                                            prefix_op: VSub_Pound
                                            bracket_op: (WholeArray op_id:Lit_At)
                                            spids: [1005 1011]
                                          )
                                        }
                                    )
                                )
                            )
                            (C {(_Dbg_do_backtrace)})
                          ]
                          spids: [16777215 993]
                        )
                      ]
                      spids: [16777215 1019]
                    )
                  ]
                  spids: [16777215 942]
                )
              ]
              spids: [16777215 1022]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: 
                                {
                                  (BracedVarSub
                                    token: <VSub_Name _Dbg_sig_stop>
                                    bracket_op: 
                                      (ArrayIndex
                                        expr: (ArithWord w:{($ VSub_Name '$_Dbg_signum')})
                                      )
                                    spids: [1029 1034]
                                  )
                                }
                              right: {(DQ (stop))}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(shift)})
                    (C {(_Dbg_save_args)} {(DQ ($ VSub_At '$@'))})
                    (C {(_Dbg_set_debugger_entry)})
                    (C {(_Dbg_hook_enter_debugger)} {(SQ <'on receiving a signal'>)} {(SQ <noprint>)})
                    (ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {($ VSub_Name '$_Dbg_continue_rc')}
                    )
                  ]
                  spids: [16777215 1046]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_LBracket
                              left: (ArithVarRef name:_Dbg_sig_old_handler)
                              right: (ArithVarRef name:_Dbg_signum)
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(eval)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name _Dbg_sig_old_handler>
                          bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$_Dbg_signum')}))
                          spids: [1113 1118]
                        )
                      }
                    )
                  ]
                  spids: [1094 1108]
                )
              ]
              spids: [16777215 1121]
            )
            (C {(_Dbg_set_to_return_from_debugger)} {(1)})
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_Name '$_Dbg_debugged_exit_code')}
            )
          ]
          spids: [822]
        )
      spids: [818 821]
    )
    (FuncDef
      name: _Dbg_err_handler
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobNEqual
                              left: {($ VSub_Name '$_Dbg_old_ERR_handler')}
                              right: {(SQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(eval)} {($ VSub_Name '$_Dbg_old_ERR_handler')})]
                  spids: [16777215 1158]
                )
              ]
              spids: [16777215 1166]
            )
            (C {(_Dbg_msg)} 
              {
                (DQ ('Error occured at ') 
                  (BracedVarSub
                    token: <VSub_Name BASH_SOURCE>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                    spids: [1173 1178]
                  ) (':') 
                  (BracedVarSub
                    token: <VSub_Name BASH_LINENO>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                    spids: [1180 1185]
                  )
                )
              }
            )
            (C {(_Dbg_process_commands)})
          ]
          spids: [1140]
        )
      spids: [1136 1139]
    )
    (FuncDef
      name: _Dbg_signum2name
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Typeset
                  flags: [-i -r]
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:signum)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [1213]
                    )
                  ]
                  spids: [1207]
                )
              terminator: <Op_Semi ';'>
            )
            (SimpleCommand
              words: [{(builtin)} {(kill)} {(-l)} {($ VSub_Name '$signum')}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1226])]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark '$?')})
          ]
          spids: [1204]
        )
      spids: [1200 1203]
    )
    (FuncDef
      name: _Dbg_name2signum
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Typeset
                  flags: [-r]
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:signame)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [1254]
                    )
                  ]
                  spids: [1250]
                )
              terminator: <Op_Semi ';'>
            )
            (SimpleCommand
              words: [{(builtin)} {(kill)} {(-l)} {($ VSub_Name '$signame')}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1267])]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark '$?')})
          ]
          spids: [1247]
        )
      spids: [1243 1246]
    )
    (FuncDef
      name: _Dbg_subexit_handler
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          ops: [Op_DAmp]
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name FUNCNAME>
                                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                                        spids: [1297 1302]
                                      )
                                    }
                                  right: {(_Dbg_) (Lit_Other '*')}
                                )
                            )
                            (DParen
                              child: 
                                (ArithUnary
                                  op_id: Arith_Bang
                                  child: (ArithVarRef name:_Dbg_set_debug)
                                )
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                  spids: [16777215 1322]
                )
              ]
              spids: [16777215 1330]
            )
            (C {(_Dbg_source_journal)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_Great
                              left: (ArithVarRef name:_Dbg_QUIT_LEVELS)
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(_Dbg_do_quit)} {($ VSub_Name '$_Dbg_debugged_exit_code')})]
                  spids: [16777215 1351]
                )
              ]
              spids: [16777215 1359]
            )
          ]
          spids: [1282]
        )
      spids: [1278 1281]
    )
    (FuncDef
      name: _Dbg_init_trap
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Typeset
              flags: [-r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:name)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1381]
                )
              ]
              spids: [1377]
            )
            (Assignment
              keyword: Assign_Typeset
              flags: [-i -r]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:signum)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_Dbg_name2signum)} {($ VSub_Name '$name')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [1392 1396]
                      )
                    }
                  spids: [1391]
                )
              ]
              spids: [1385]
            )
            (Sentence
              child: 
                (C 
                  {(_Dbg_sig_print) (Lit_Other '[') ($ VSub_Name '$signum') (Lit_Other ']') 
                    (Lit_Other '=') ($ VSub_Number '$2')
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: 
                (C 
                  {(_Dbg_sig_show_stack) (Lit_Other '[') ($ VSub_Name '$signum') (Lit_Other ']') 
                    (Lit_Other '=') ($ VSub_Number '$3')
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: 
                (C 
                  {(_Dbg_sig_stop) (Lit_Other '[') ($ VSub_Name '$signum') (Lit_Other ']') 
                    (Lit_Other '=') ($ VSub_Number '$4')
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_DEqual
                              left: (ArithVarRef name:signum)
                              right: (ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(trap)} {(SQ <'_Dbg_exit_handler "$BASH_COMMAND"'>)} {(EXIT)})]
                  spids: [16777215 1463]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_Typeset
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:trap_cmd)
                      op: Equal
                      rhs: 
                        {
                          (DQ ("trap '_Dbg_sig_handler ") ($ VSub_Name '$signum') (' ') 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\"'>
                            ) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (BASH_COMMAND) 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\"'>
                            ) (' ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\$'>
                            ) ('@') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ("' ") ($ VSub_Name '$name')
                          )
                        }
                      spids: [1480]
                    )
                  ]
                  spids: [1478]
                )
                (C {(eval)} {($ VSub_Name '$trap_cmd')})
              ]
              spids: [1475 1504]
            )
          ]
          spids: [1374]
        )
      spids: [1370 1373]
    )
    (FuncDef
      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))})
          ]
          spids: [1513]
        )
      spids: [1509 1512]
    )
  ]
)