(command.CommandList
  children: [
    (C {(typeset)} {(-a)} {(_Dbg_keep)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_Dbg_keep)
          op: Equal
          rhs: {(sh_array_literal left:<Op_LParen '('> words:[{(SQ <keep>)} {(SQ <del>)}])}
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_line)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_line)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_brkpt_count=') (0)})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_file)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_enable)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_enable)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_counts)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_counts)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_onetime)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_onetime)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-a)} {(_Dbg_brkpt_cond)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_cond)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_brkpt_max=') (0)})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-A)} {(_Dbg_brkpt_file2linenos)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2linenos)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(typeset)} {(-A)} {(_Dbg_brkpt_file2brkpt)})
          terminator: <Op_Semi ';'>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2brkpt)
              op: Equal
              rhs: {(sh_array_literal left:<Op_LParen '('>)}
            )
          ]
        )
      ]
    )
    (C {(typeset)} {(-a)} {(Lit_VarLike '_Dbg_watch_exp=') (sh_array_literal left:<Op_LParen '('>)})
    (C {(typeset)} {(-a)} {(Lit_VarLike '_Dbg_watch_val=') (sh_array_literal left:<Op_LParen '('>)})
    (C {(typeset)} {(-ai)} {(Lit_VarLike '_Dbg_watch_arith=') (sh_array_literal left:<Op_LParen '('>)})
    (C {(typeset)} {(-ai)} {(Lit_VarLike '_Dbg_watch_count=') (sh_array_literal left:<Op_LParen '('>)})
    (C {(typeset)} {(-ai)} {(Lit_VarLike '_Dbg_watch_enable=') (sh_array_literal left:<Op_LParen '('>)})
    (C {(typeset)} {(-i)} {(Lit_VarLike '_Dbg_watch_max=') (0)})
    (C {(typeset)} {(Lit_VarLike '_Dbg_watch_pat=') (DQ (${ VSub_Name int_pat) ('[wW]'))})
    (command.ShFunction
      name: _Dbg_save_breakpoints
      body: 
        (command.BraceGroup
          children: [
            (C {(typeset)} {(file)})
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_line)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_file)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_cond)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_count)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_enable)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_onetime)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_max)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_file2linenos)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_brkpt_file2brkpt)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_watchpoints
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_watch_exp)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_watch_val)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_watch_arith)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_watch_count)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_watch_enable)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
            (command.Simple
              words: [{(typeset)} {(-p)} {(_Dbg_watch_max)}]
              redirects: [
                (redir.Redir
                  op: <Redir_DGreat '>>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$_Dbg_statefile')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_LessEqual
                              left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                              right: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_errmsg)} 
                      {
                        (DQ ('_Dbg_enable_disable error - need at least 2 args, got ') 
                          ($ VSub_Pound '$#')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
            (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')})
            (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')})
            (command.Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>)
            (C {(shift)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Number '$1')}
                              right: {(SQ <display>)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(shift)})
                    (C {(typeset)} {(Lit_VarLike 'to_go=') (DQ ($ VSub_At '$@'))})
                    (C {(typeset)} {(i)})
                    (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))})
                    (command.ForEach
                      iter_name: i
                      iter_words: [{($ VSub_DollarName '$to_go')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ VSub_DollarName '$i')}
                              arms: [
                                (case_arm
                                  pat_list: [{($ VSub_DollarName '$int_pat')}]
                                  action: [
                                    (C {(_Dbg_enable_disable_display)} {($ VSub_DollarName '$on')} 
                                      {($ VSub_DollarName '$en_dis')} {($ VSub_DollarName '$i')}
                                    )
                                  ]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Star '*')}]
                                  action: [
                                    (C {(_Dbg_errmsg)} 
                                      {
                                        (DQ ('Invalid entry number skipped: ') 
                                          ($ VSub_DollarName '$i')
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Number '$1')}
                              right: {(SQ <action>)}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(shift)})
                    (C {(typeset)} {(Lit_VarLike 'to_go=') (DQ ($ VSub_At '$@'))})
                    (C {(typeset)} {(i)})
                    (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))})
                    (command.ForEach
                      iter_name: i
                      iter_words: [{($ VSub_DollarName '$to_go')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ VSub_DollarName '$i')}
                              arms: [
                                (case_arm
                                  pat_list: [{($ VSub_DollarName '$int_pat')}]
                                  action: [
                                    (C {(_Dbg_enable_disable_action)} {($ VSub_DollarName '$on')} 
                                      {($ VSub_DollarName '$en_dis')} {($ VSub_DollarName '$i')}
                                    )
                                  ]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Star '*')}]
                                  action: [
                                    (C {(_Dbg_errmsg)} 
                                      {
                                        (DQ ('Invalid entry number skipped: ') 
                                          ($ VSub_DollarName '$i')
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.Sentence child:(C {(typeset)} {(to_go)}) terminator:<Op_Semi ';'>)
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:to_go)
                  op: Equal
                  rhs: {(DQ ($ VSub_At '$@'))}
                )
              ]
            )
            (C {(typeset)} {(i)})
            (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))})
            (command.ForEach
              iter_name: i
              iter_words: [{($ VSub_DollarName '$to_go')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ VSub_DollarName '$i')}
                      arms: [
                        (case_arm
                          pat_list: [{($ VSub_DollarName '$_Dbg_watch_pat')}]
                          action: [
                            (C {(_Dbg_enable_disable_watch)} {($ VSub_DollarName '$on')} 
                              {($ VSub_DollarName '$en_dis')} 
                              {
                                (braced_var_sub
                                  token: <VSub_Name del>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                      length: 
                                        (arith_expr.Binary
                                          op_id: Arith_Minus
                                          left: 
                                            (arith_expr.ArithWord
                                              w: 
                                                {
                                                  (braced_var_sub
                                                    token: <VSub_Name del>
                                                    prefix_op: VSub_Pound
                                                  )
                                                }
                                            )
                                          right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                        )
                                    )
                                )
                              }
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [{($ VSub_DollarName '$int_pat')}]
                          action: [
                            (C {(_Dbg_enable_disable_brkpt)} {($ VSub_DollarName '$on')} 
                              {($ VSub_DollarName '$en_dis')} {($ VSub_DollarName '$i')}
                            )
                          ]
                        )
                        (case_arm
                          pat_list: [{(Lit_Star '*')}]
                          action: [
                            (C {(_Dbg_errmsg)} 
                              {(DQ ('Invalid entry number skipped: ') ($ VSub_DollarName '$i'))}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))})
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_print_brkpt_count
      body: 
        (command.BraceGroup
          children: [
            (command.Sentence child:(C {(typeset)} {(-i)} {(i)}) terminator:<Op_Semi ';'>)
            (command.ShAssignment
              pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:Equal rhs:{($ VSub_Number '$1')})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_NEqual
                              left: 
                                (arith_expr.Binary
                                  op_id: Arith_LBracket
                                  left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_brkpt_counts>)
                                  right: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                                )
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Arith_DEqual
                                      left: 
                                        (arith_expr.Binary
                                          op_id: Arith_LBracket
                                          left: 
                                            (arith_expr.VarRef
                                              token: <Lit_ArithVarLike _Dbg_brkpt_counts>
                                            )
                                          right: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                                        )
                                      right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_printf)} 
                              {(DQ (Lit_Other '\\') ('tbreakpoint already hit 1 time'))}
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (C {(_Dbg_printf)} {(DQ (Lit_Other '\\') ('tbreakpoint already hit %d times'))} 
                          {
                            (braced_var_sub
                              token: <VSub_Name _Dbg_brkpt_counts>
                              bracket_op: 
                                (bracket_op.ArrayIndex
                                  expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                )
                            )
                          }
                        )
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_clear_all_brkpt
      body: 
        (command.BraceGroup
          children: [
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_file2linenos=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_file2brkpt=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_line=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_cond=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_file=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_enable=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_counts=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_onetime=()'))})
            (C {(_Dbg_write_journal_eval)} {(DQ ('_Dbg_brkpt_count=0'))})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_set_brkpt
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_DPipe
                      left: 
                        (arith_expr.Binary
                          op_id: Arith_Less
                          left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                          right: (arith_expr.ArithWord w:{(Lit_Digits 3)})
                        )
                      right: 
                        (arith_expr.Binary
                          op_id: Arith_Great
                          left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                          right: (arith_expr.ArithWord w:{(Lit_Digits 4)})
                        )
                    )
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(typeset)} {(source_file)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:source_file)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {(_Dbg_expand_filename)} {(DQ ($ VSub_Number '$1'))})]
                          )
                      )
                    }
                )
              ]
            )
            (C {(typeset)} {(-ri)} {(Lit_VarLike 'lineno=') ($ VSub_Number '$2')})
            (C {(typeset)} {(-ri)} {(Lit_VarLike 'is_temp=') ($ VSub_Number '$3')})
            (C {(typeset)} {(-r)} 
              {(Lit_VarLike 'condition=') 
                (braced_var_sub
                  token: <VSub_Number 4>
                  suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{(1)})
                )
              }
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDPlus
                  child: (sh_lhs_expr.Name name:_Dbg_brkpt_max)
                )
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDPlus
                  child: (sh_lhs_expr.Name name:_Dbg_brkpt_count)
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_line
                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')})
                    )
                  op: Equal
                  rhs: {($ VSub_DollarName '$lineno')}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_file
                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')})
                    )
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$source_file'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_cond
                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')})
                    )
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$condition'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_onetime
                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')})
                    )
                  op: Equal
                  rhs: {($ VSub_DollarName '$is_temp')}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_counts
                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')})
                    )
                  op: Equal
                  rhs: {(0)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_enable
                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$_Dbg_brkpt_max')})
                    )
                  op: Equal
                  rhs: {(1)}
                )
              ]
            )
            (C {(typeset)} {(dq_source_file)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dq_source_file)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [(C {(_Dbg_esc_dq)} {(DQ ($ VSub_DollarName '$source_file'))})]
                          )
                      )
                    }
                )
              ]
            )
            (C {(typeset)} 
              {(Lit_VarLike 'dq_condition=') 
                (command_sub
                  left_token: <Left_DollarParen '$('>
                  command_list: 
                    (command.CommandList
                      children: [(C {(_Dbg_esc_dq)} {(DQ ($ VSub_DollarName '$condition'))})]
                    )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts)
                  op: Equal
                  rhs: {(DQ ($ VSub_DollarName '$_Dbg_old_set_opts') (' -o functrace'))}
                )
              ]
            )
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ("_Dbg_old_set_opts='") ($ VSub_DollarName '$_Dbg_old_set_opts') ("'"))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {
                (DQ ('_Dbg_brkpt_line[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') 
                  ($ VSub_DollarName '$lineno')
                )
              }
            )
            (C {(_Dbg_write_journal_eval)} 
              {
                (DQ ('_Dbg_brkpt_file[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$dq_source_file') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {(_Dbg_write_journal)} 
              {
                (DQ ('_Dbg_brkpt_cond[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$dq_condition') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {(_Dbg_write_journal)} 
              {
                (DQ ('_Dbg_brkpt_onetime[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') 
                  ($ VSub_DollarName '$is_temp')
                )
              }
            )
            (C {(_Dbg_write_journal)} 
              {
                (DQ ('_Dbg_brkpt_counts[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (0) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {(_Dbg_write_journal)} 
              {(DQ ('_Dbg_brkpt_enable[') ($ VSub_DollarName '$_Dbg_brkpt_max') (']=1'))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {
                (DQ ('_Dbg_brkpt_file2linenos[') ($ VSub_DollarName '$source_file') (']+=') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_DollarName '$lineno') (' ') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {(_Dbg_write_journal_eval)} 
              {
                (DQ ('_Dbg_brkpt_file2brkpt[') ($ VSub_DollarName '$source_file') (']+=') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_DollarName '$_Dbg_brkpt_max') (' ') 
                  (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:source_file)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(_Dbg_adjust_filename)} {(DQ ($ VSub_DollarName '$source_file'))})
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_DEqual
                              left: (arith_expr.VarRef token:<Lit_ArithVarLike is_temp>)
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_msg)} 
                      {
                        (DQ ('Breakpoint ') ($ VSub_DollarName '$_Dbg_brkpt_max') (' set in file ') 
                          (${ VSub_Name source_file) (', line ') ($ VSub_DollarName '$lineno') (.)
                        )
                      }
                    )
                  ]
                )
              ]
              else_action: [
                (C {(_Dbg_msg)} 
                  {
                    (DQ ('One-time breakpoint ') ($ VSub_DollarName '$_Dbg_brkpt_max') 
                      (' set in file ') (${ VSub_Name source_file) (', line ') ($ VSub_DollarName '$lineno') (.)
                    )
                  }
                )
              ]
            )
            (C {(_Dbg_write_journal)} {(DQ ('_Dbg_brkpt_max=') ($ VSub_DollarName '$_Dbg_brkpt_max'))})
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_unset_brkpt_arrays
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                      right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                    )
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(typeset)} {(-i)} {(Lit_VarLike 'del=') ($ VSub_Number '$1')})
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ('unset _Dbg_brkpt_line[') ($ VSub_DollarName '$del') (']'))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ('unset _Dbg_brkpt_counts[') ($ VSub_DollarName '$del') (']'))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ('unset _Dbg_brkpt_file[') ($ VSub_DollarName '$del') (']'))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ('unset _Dbg_brkpt_enable[') ($ VSub_DollarName '$del') (']'))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ('unset _Dbg_brkpt_cond[') ($ VSub_DollarName '$del') (']'))}
            )
            (C {(_Dbg_write_journal_eval)} 
              {(DQ ('unset _Dbg_brkpt_onetime[') ($ VSub_DollarName '$del') (']'))}
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Node_PostDMinus
                  child: (sh_lhs_expr.Name name:_Dbg_brkpt_count)
                )
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_unset_brkpt
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                      right: (arith_expr.ArithWord w:{(Lit_Digits 2)})
                    )
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
            )
            (C {(typeset)} {(Lit_VarLike 'filename=') ($ VSub_Number '$1')})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'lineno=') ($ VSub_Number '$2')})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'found=') (0)})
            (C {(typeset)} {(fullname)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fullname)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(_Dbg_expand_filename)} {(DQ ($ VSub_DollarName '$filename'))})
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (C {(typeset)} {(-a)} {(linenos)})
            (C {(eval)} 
              {
                (DQ ('linenos=(') 
                  (braced_var_sub
                    token: <VSub_Name _Dbg_brkpt_file2linenos>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$fullname')})
                      )
                  ) (')')
                )
              }
            )
            (C {(typeset)} {(-a)} {(brkpt_nos)})
            (C {(eval)} 
              {
                (DQ ('brkpt_nos=(') 
                  (braced_var_sub
                    token: <VSub_Name _Dbg_brkpt_file2brkpt>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$fullname')})
                      )
                  ) (')')
                )
              }
            )
            (C {(typeset)} {(-i)} {(i)})
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Arith_Equal
                  left: (sh_lhs_expr.Name name:i)
                  right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                )
              cond: 
                (arith_expr.Binary
                  op_id: Arith_LessEqual
                  left: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                  right: 
                    (arith_expr.ArithWord
                      w: 
                        {
                          (braced_var_sub
                            token: <VSub_Name linenos>
                            prefix_op: VSub_Pound
                            bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                          )
                        }
                    )
                )
              update: (arith_expr.UnaryAssign op_id:Node_PostDPlus child:(sh_lhs_expr.Name name:i))
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Arith_DEqual
                                      left: 
                                        (arith_expr.Binary
                                          op_id: Arith_LBracket
                                          left: (arith_expr.VarRef token:<Lit_ArithVarLike linenos>)
                                          right: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                                        )
                                      right: (arith_expr.VarRef token:<Lit_ArithVarLike lineno>)
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(typeset)} {(-i)} {(brkpt_num)})
                            (command.DParen
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Arith_Equal
                                  left: (sh_lhs_expr.Name name:brkpt_num)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Arith_LBracket
                                      left: (arith_expr.VarRef token:<Lit_ArithVarLike brkpt_nos>)
                                      right: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                                    )
                                )
                            )
                            (C {(_Dbg_unset_brkpt_arrays)} {($ VSub_DollarName '$brkpt_num')})
                            (C {(unset)} {(Lit_ArrayLhsOpen 'linenos[') (i) (Lit_RBracket ']')})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: _Dbg_brkpt_file2linenos
                                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$fullname')})
                                    )
                                  op: Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <VSub_Name linenos>
                                        bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                                      )
                                    }
                                )
                              ]
                            )
                            (C {(typeset)} {(-a)} {(brkpt_nos)})
                            (C {(eval)} 
                              {
                                (DQ ('brkpt_nos=(') 
                                  (braced_var_sub
                                    token: <VSub_Name _Dbg_brkpt_file2brkpt>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: 
                                          (arith_expr.ArithWord
                                            w: {($ VSub_DollarName '$filename')}
                                          )
                                      )
                                  ) (')')
                                )
                              }
                            )
                            (C {(unset)} 
                              {(Lit_ArrayLhsOpen 'brkpt_nos[') ($ VSub_DollarName '$i') 
                                (Lit_RBracket ']')
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: _Dbg_brkpt_file2brkpt
                                      index: (arith_expr.ArithWord w:{($ VSub_DollarName '$filename')})
                                    )
                                  op: Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <VSub_Name brkpt_nos>
                                        bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                                      )
                                    }
                                )
                              ]
                            )
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Node_PostDPlus
                                  child: (sh_lhs_expr.Name name:found)
                                )
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_DEqual
                              left: (arith_expr.VarRef token:<Lit_ArithVarLike found>)
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filename)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(_Dbg_file_canonic)} {(DQ ($ VSub_DollarName '$filename'))})
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (C {(_Dbg_errmsg)} 
                      {
                        (DQ ('No breakpoint found at ') ($ VSub_DollarName '$filename') (', line ') 
                          (${ VSub_Name lineno) (.)
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_DollarName '$found')}
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_delete_brkpt_entry
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_DEqual
                      left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                      right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                    )
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
            )
            (C {(typeset)} {(-r)} {(Lit_VarLike 'del=') (DQ ($ VSub_Number '$1'))})
            (C {(typeset)} {(-i)} {(i)})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'found=') (0)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_z
                              child: 
                                {
                                  (braced_var_sub
                                    token: <VSub_Name _Dbg_brkpt_file>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')})
                                      )
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_errmsg)} {(DQ ('No breakpoint number ') ($ VSub_DollarName '$del') (.))})
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(1)}
                    )
                  ]
                )
              ]
            )
            (C {(typeset)} 
              {(Lit_VarLike 'source_file=') 
                (braced_var_sub
                  token: <VSub_Name _Dbg_brkpt_file>
                  bracket_op: 
                    (bracket_op.ArrayIndex
                      expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')})
                    )
                )
              }
            )
            (C {(typeset)} {(-i)} 
              {(Lit_VarLike 'lineno=') 
                (braced_var_sub
                  token: <VSub_Name _Dbg_brkpt_line>
                  bracket_op: 
                    (bracket_op.ArrayIndex
                      expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')})
                    )
                )
              }
            )
            (C {(typeset)} {(-i)} {(try)})
            (C {(typeset)} {(Lit_VarLike 'new_lineno_val=') (SQ )})
            (C {(typeset)} {(Lit_VarLike 'new_brkpt_nos=') (SQ )})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') (-1)})
            (C {(typeset)} {(-a)} {(brkpt_nos)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:brkpt_nos)
                  op: Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Op_LParen '('>
                        words: [
                          {
                            (braced_var_sub
                              token: <VSub_Name _Dbg_brkpt_file2brkpt>
                              bracket_op: 
                                (bracket_op.ArrayIndex
                                  expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$source_file')})
                                )
                            )
                          }
                        ]
                      )
                    }
                )
              ]
            )
            (command.ForEach
              iter_name: try
              iter_words: [
                {
                  (braced_var_sub
                    token: <VSub_Name _Dbg_brkpt_file2linenos>
                    bracket_op: 
                      (bracket_op.ArrayIndex
                        expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$source_file')})
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Node_PostDPlus
                          child: (sh_lhs_expr.Name name:i)
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Arith_DEqual
                                      left: 
                                        (arith_expr.Binary
                                          op_id: Arith_LBracket
                                          left: (arith_expr.VarRef token:<Lit_ArithVarLike brkpt_nos>)
                                          right: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                                        )
                                      right: (arith_expr.VarRef token:<Lit_ArithVarLike del>)
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.DParen
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Arith_NEqual
                                              left: (arith_expr.VarRef token:<Lit_ArithVarLike try>)
                                              right: 
                                                (arith_expr.VarRef
                                                  token: <Lit_ArithVarLike lineno>
                                                )
                                            )
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(_Dbg_errmsg)} {(SQ <'internal brkpt structure inconsistency'>)})
                                    (command.ControlFlow
                                      token: <ControlFlow_Return return>
                                      arg_word: {(1)}
                                    )
                                  ]
                                )
                              ]
                            )
                            (C {(_Dbg_unset_brkpt_arrays)} {($ VSub_DollarName '$del')})
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Node_PostDPlus
                                  child: (sh_lhs_expr.Name name:found)
                                )
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:new_lineno_val)
                              op: PlusEqual
                              rhs: {(DQ (' ') ($ VSub_DollarName '$try') (' '))}
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:new_brkpt_nos)
                              op: PlusEqual
                              rhs: 
                                {
                                  (DQ (' ') 
                                    (braced_var_sub
                                      token: <VSub_Name brkpt_nos>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                        )
                                    ) (' ')
                                  )
                                }
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (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 found>)
                              right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Arith_DEqual
                                      left: 
                                        (arith_expr.ArithWord
                                          w: 
                                            {
                                              (braced_var_sub
                                                token: <VSub_Name new_lineno_val>
                                                prefix_op: VSub_Pound
                                                bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                                              )
                                            }
                                        )
                                      right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_write_journal_eval)} 
                              {
                                (DQ ("unset '_Dbg_brkpt_file2linenos[") 
                                  ($ VSub_DollarName '$source_file') ("]'")
                                )
                              }
                            )
                            (C {(_Dbg_write_journal_eval)} 
                              {
                                (DQ ("unset '_Dbg_brkpt_file2brkpt[") 
                                  ($ VSub_DollarName '$source_file') ("]'")
                                )
                              }
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (C {(_Dbg_write_journal_eval)} 
                          {
                            (DQ ('_Dbg_brkpt_file2linenos[') ($ VSub_DollarName '$source_file') (']=') 
                              (word_part.EscapedLiteral
                                token: <Lit_EscapedChar '\\"'>
                              ) (${ VSub_Name new_lineno_val) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                        (C {(_Dbg_write_journal_eval)} 
                          {
                            (DQ ('_Dbg_brkpt_file2brkpt[') ($ VSub_DollarName '$source_file') (']=') 
                              (word_part.EscapedLiteral
                                token: <Lit_EscapedChar '\\"'>
                              ) ($ VSub_DollarName '$new_brkpt_nos') (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable_action
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                      right: (arith_expr.ArithWord w:{(Lit_Digits 3)})
                    )
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')})
            (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$3')})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_n
                              child: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <VSub_Name _Dbg_brkpt_file>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                        )
                                    )
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <VSub_Name _Dbg_action_enable>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: 
                                                  (arith_expr.ArithWord
                                                    w: {($ VSub_DollarName '$i')}
                                                  )
                                              )
                                          )
                                        }
                                      right: {($ VSub_DollarName '$on')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_errmsg)} 
                              {
                                (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (' already ') 
                                  (${ VSub_Name en_dis) (', so nothing done.')
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (C {(_Dbg_write_journal_eval)} 
                          {
                            (DQ ('_Dbg_brkpt_enable[') ($ VSub_DollarName '$i') (']=') 
                              ($ VSub_DollarName '$on')
                            )
                          }
                        )
                        (C {(_Dbg_msg)} 
                          {
                            (DQ ('Action entry ') ($ VSub_DollarName '$i') (' ') 
                              ($ VSub_DollarName '$en_dis') (.)
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (C {(_Dbg_errmsg)} 
                  {
                    (DQ ('Action entry ') ($ VSub_DollarName '$i') (" doesn't exist, so nothing done."))
                  }
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable_brkpt
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Arith_NEqual
                      left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                      right: (arith_expr.ArithWord w:{(Lit_Digits 3)})
                    )
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
            (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')})
            (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$3')})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Unary
                              op_id: BoolUnary_n
                              child: 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: <VSub_Name _Dbg_brkpt_file>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                        )
                                    )
                                  )
                                }
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <VSub_Name _Dbg_brkpt_enable>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: 
                                                  (arith_expr.ArithWord
                                                    w: {($ VSub_DollarName '$i')}
                                                  )
                                              )
                                          )
                                        }
                                      right: {($ VSub_DollarName '$on')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_errmsg)} 
                              {
                                (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (' already ') 
                                  (${ VSub_Name en_dis) (', so nothing done.')
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(1)}
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (C {(_Dbg_write_journal_eval)} 
                          {
                            (DQ ('_Dbg_brkpt_enable[') ($ VSub_DollarName '$i') (']=') 
                              ($ VSub_DollarName '$on')
                            )
                          }
                        )
                        (C {(_Dbg_msg)} 
                          {
                            (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') (' ') 
                              ($ VSub_DollarName '$en_dis') (.)
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (C {(_Dbg_errmsg)} 
                  {
                    (DQ ('Breakpoint entry ') ($ VSub_DollarName '$i') 
                      (" doesn't exist, so nothing done.")
                    )
                  }
                )
                (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_get_watch_exp_eval
      body: 
        (command.BraceGroup
          children: [
            (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$1')})
            (C {(typeset)} {(new_val)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: 
                                {
                                  (command_sub
                                    left_token: <Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(eval)} {(echo)} 
                                            {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>) 
                                              (braced_var_sub
                                                token: <VSub_Name _Dbg_watch_exp>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: 
                                                      (arith_expr.ArithWord
                                                        w: {($ VSub_DollarName '$i')}
                                                      )
                                                  )
                                              ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                                            }
                                          )
                                        ]
                                      )
                                  )
                                }
                              right: {(DQ )}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:new_val) op:Equal rhs:{(SQ )})]
                    )
                  ]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_DEqual
                              left: 
                                (arith_expr.Binary
                                  op_id: Arith_LBracket
                                  left: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_watch_arith>)
                                  right: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                )
                              right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(.)} {(${ VSub_Name _Dbg_libdir) (/dbg-set-d-vars.inc)})
                    (C {(eval)} {(let)} 
                      {(Lit_VarLike 'new_val=') 
                        (word_part.EscapedLiteral
                          token: <Lit_EscapedChar '\\"'>
                        ) 
                        (braced_var_sub
                          token: <VSub_Name _Dbg_watch_exp>
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                            )
                        ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\"'>)
                      }
                    )
                  ]
                )
              ]
              else_action: [
                (C {(.)} {(${ VSub_Name _Dbg_libdir) (/dbg-set-d-vars.inc)})
                (C {(eval)} 
                  {(Lit_VarLike 'new_val=') 
                    (DQ 
                      (braced_var_sub
                        token: <VSub_Name _Dbg_watch_exp>
                        bracket_op: 
                          (bracket_op.ArrayIndex
                            expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                          )
                      )
                    )
                  }
                )
              ]
            )
            (C {(echo)} {($ VSub_DollarName '$new_val')})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable_watch
      body: 
        (command.BraceGroup
          children: [
            (C {(typeset)} {(-i)} {(Lit_VarLike 'on=') ($ VSub_Number '$1')})
            (C {(typeset)} {(Lit_VarLike 'en_dis=') ($ VSub_Number '$2')})
            (C {(typeset)} {(-i)} {(Lit_VarLike 'i=') ($ VSub_Number '$3')})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: <VSub_Name _Dbg_watch_exp>
                                bracket_op: 
                                  (bracket_op.ArrayIndex
                                    expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                  )
                              )
                            )
                          } {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: 
                                        {
                                          (braced_var_sub
                                            token: <VSub_Name _Dbg_watch_enable>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: 
                                                  (arith_expr.ArithWord
                                                    w: {($ VSub_DollarName '$i')}
                                                  )
                                              )
                                          )
                                        }
                                      right: {($ VSub_DollarName '$on')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_msg)} 
                              {
                                (DQ ('Watchpoint entry ') ($ VSub_DollarName '$i') (' already ') 
                                  ($ VSub_DollarName '$en_dis') (' so nothing done.')
                                )
                              }
                            )
                          ]
                        )
                      ]
                      else_action: [
                        (C {(_Dbg_write_journal_eval)} 
                          {
                            (DQ ('_Dbg_watch_enable[') ($ VSub_DollarName '$i') (']=') 
                              ($ VSub_DollarName '$on')
                            )
                          }
                        )
                        (C {(_Dbg_msg)} 
                          {
                            (DQ ('Watchpoint entry ') ($ VSub_DollarName '$i') (' ') 
                              ($ VSub_DollarName '$en_dis') (.)
                            )
                          }
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (C {(_Dbg_msg)} 
                  {
                    (DQ ('Watchpoint entry ') ($ VSub_DollarName '$i') 
                      (" doesn't exist so nothing done.")
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_list_watch
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} 
                          {
                            (braced_var_sub
                              token: <VSub_Name _Dbg_watch_exp>
                              prefix_op: VSub_Pound
                              bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                            )
                          } {(KW_Bang '!') (Lit_Equals '=')} {(0)} {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(typeset)} {(Lit_VarLike 'i=') (0)} {(j)})
                    (C {(_Dbg_section)} {(DQ ('Num Type       Enb  Expression'))})
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Arith_Equal
                          left: (sh_lhs_expr.Name name:i)
                          right: (arith_expr.ArithWord w:{(Lit_Digits 0)})
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Arith_Less
                          left: (arith_expr.VarRef token:<Lit_ArithVarLike i>)
                          right: (arith_expr.VarRef token:<Lit_ArithVarLike _Dbg_watch_max>)
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Node_PostDPlus
                          child: (sh_lhs_expr.Name name:i)
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Lit_LBracket '[')} {(-n)} 
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: <VSub_Name _Dbg_watch_exp>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: 
                                                      (arith_expr.ArithWord
                                                        w: {($ VSub_DollarName '$i')}
                                                      )
                                                  )
                                              )
                                            )
                                          } {(Lit_RBracket ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (C {(_Dbg_printf)} {(SQ <'%-3d watchpoint %-4s %s'>)} 
                                      {($ VSub_DollarName '$i')} 
                                      {
                                        (braced_var_sub
                                          token: <VSub_Name _Dbg_yn>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: 
                                                (arith_expr.ArithWord
                                                  w: 
                                                    {
                                                      (braced_var_sub
                                                        token: <VSub_Name _Dbg_watch_enable>
                                                        bracket_op: 
                                                          (bracket_op.ArrayIndex
                                                            expr: 
                                                              (arith_expr.ArithWord
                                                                w: {($ VSub_DollarName '$i')}
                                                              )
                                                          )
                                                      )
                                                    }
                                                )
                                            )
                                        )
                                      } 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <VSub_Name _Dbg_watch_exp>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: 
                                                  (arith_expr.ArithWord
                                                    w: {($ VSub_DollarName '$i')}
                                                  )
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (C {(_Dbg_print_brkpt_count)} 
                                      {
                                        (braced_var_sub
                                          token: <VSub_Name _Dbg_watch_count>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')})
                                            )
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
              ]
              else_action: [(C {(_Dbg_msg)} {(DQ ('No watch expressions have been set.'))})]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_delete_watch_entry
      body: 
        (command.BraceGroup
          children: [
            (C {(typeset)} {(-i)} {(Lit_VarLike 'del=') ($ VSub_Number '$1')})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Lit_LBracket '[')} {(-n)} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: <VSub_Name _Dbg_watch_exp>
                                bracket_op: 
                                  (bracket_op.ArrayIndex
                                    expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$del')})
                                  )
                              )
                            )
                          } {(Lit_RBracket ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_write_journal_eval)} 
                      {(DQ ('unset _Dbg_watch_exp[') ($ VSub_DollarName '$del') (']'))}
                    )
                    (C {(_Dbg_write_journal_eval)} 
                      {(DQ ('unset _Dbg_watch_val[') ($ VSub_DollarName '$del') (']'))}
                    )
                    (C {(_Dbg_write_journal_eval)} 
                      {(DQ ('unset _Dbg_watch_enable[') ($ VSub_DollarName '$del') (']'))}
                    )
                    (C {(_Dbg_write_journal_eval)} 
                      {(DQ ('unset _Dbg_watch_count[') ($ VSub_DollarName '$del') (']'))}
                    )
                  ]
                )
              ]
              else_action: [
                (C {(_Dbg_msg)} 
                  {
                    (DQ ('Watchpoint entry ') ($ VSub_DollarName '$del') 
                      (" doesn't exist so nothing done.")
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_clear_watch
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Arith_Less
                              left: (arith_expr.ArithWord w:{($ VSub_Pound '$#')})
                              right: (arith_expr.ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(typeset)} 
                      {(Lit_VarLike '_Dbg_prompt_output=') 
                        (braced_var_sub
                          token: <VSub_Name _Dbg_tty>
                          suffix_op: 
                            (suffix_op.Unary
                              op_id: VTest_ColonHyphen
                              arg_word: {(Lit_Slash /) (dev) (Lit_Slash /) (null)}
                            )
                        )
                      }
                    )
                    (command.Simple
                      words: [
                        {(read)}
                        {($ VSub_DollarName '$_Dbg_edit')}
                        {(-p)}
                        {(DQ ('Delete all watchpoints? (y/n): '))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: <Redir_LessAnd '<&'>
                          fd: 16777215
                          arg_word: {($ VSub_DollarName '$_Dbg_input_desc')}
                        )
                        (redir.Redir
                          op: <Redir_DGreat '2>>'>
                          fd: 2
                          arg_word: {($ VSub_DollarName '$_Dbg_prompt_output')}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.DBracket
                                  expr: 
                                    (bool_expr.Binary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_DollarName '$REPLY')}
                                      right: {(Lit_Other '[') (Yy) (Lit_Other ']') (Lit_Other '*')}
                                    )
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_Dbg_write_journal_eval)} {(unset)} 
                              {(Lit_ArrayLhsOpen '_Dbg_watch_exp[') (Lit_Other '@') (Lit_RBracket ']')}
                            )
                            (C {(_Dbg_write_journal_eval)} {(unset)} 
                              {(Lit_ArrayLhsOpen '_Dbg_watch_val[') (Lit_Other '@') (Lit_RBracket ']')}
                            )
                            (C {(_Dbg_write_journal_eval)} {(unset)} 
                              {(Lit_ArrayLhsOpen '_Dbg_watch_enable[') (Lit_Other '@') 
                                (Lit_RBracket ']')
                              }
                            )
                            (C {(_Dbg_write_journal_eval)} {(unset)} 
                              {(Lit_ArrayLhsOpen '_Dbg_watch_count[') (Lit_Other '@') 
                                (Lit_RBracket ']')
                              }
                            )
                            (C {(_Dbg_msg)} {(DQ ('All Watchpoints have been cleared'))})
                          ]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(0)}
                    )
                  ]
                )
              ]
            )
            (C {(eval)} {(DQ ($ VSub_DollarName '$_seteglob'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.DBracket
                          expr: 
                            (bool_expr.Binary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Number '$1')}
                              right: {($ VSub_DollarName '$int_pat')}
                            )
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_Dbg_write_journal_eval)} 
                      {(DQ ('unset _Dbg_watch_exp[') ($ VSub_Number '$1') (']'))}
                    )
                    (C {(_msg)} {(DQ ('Watchpoint ') ($ VSub_DollarName '$i') (' has been cleared'))})
                  ]
                )
              ]
              else_action: [
                (C {(_Dbg_list_watch)})
                (C {(_basdhb_msg)} {(DQ ('Please specify a numeric watchpoint number'))})
              ]
            )
            (C {(eval)} {(DQ ($ VSub_DollarName '$_resteglob'))})
          ]
        )
    )
  ]
)