(command.CommandList
  children: [
    (C {<typeset>} {<-a>} {<_Dbg_keep>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_Dbg_keep)
          op: assign_op.Equal
          rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <keep>)} {(SQ <del>)}])}
          spids: [71]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_line>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_line)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [107]
            )
          ]
        )
      ]
    )
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_brkpt_count='> <0>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_file>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [133]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_enable>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_enable)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [148]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_counts>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_counts)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [163]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_onetime>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_onetime)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [178]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-a>} {<_Dbg_brkpt_cond>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_cond)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [193]
            )
          ]
        )
      ]
    )
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_brkpt_max='> <0>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-A>} {<_Dbg_brkpt_file2linenos>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2linenos)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [222]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-A>} {<_Dbg_brkpt_file2brkpt>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_brkpt_file2brkpt)
              op: assign_op.Equal
              rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
              spids: [237]
            )
          ]
        )
      ]
    )
    (C {<typeset>} {<-a>} {<Id.Lit_VarLike '_Dbg_watch_exp='> (sh_array_literal left:<Id.Op_LParen _>)})
    (C {<typeset>} {<-a>} {<Id.Lit_VarLike '_Dbg_watch_val='> (sh_array_literal left:<Id.Op_LParen _>)})
    (C {<typeset>} {<-ai>} 
      {<Id.Lit_VarLike '_Dbg_watch_arith='> (sh_array_literal left:<Id.Op_LParen _>)}
    )
    (C {<typeset>} {<-ai>} 
      {<Id.Lit_VarLike '_Dbg_watch_count='> (sh_array_literal left:<Id.Op_LParen _>)}
    )
    (C {<typeset>} {<-ai>} 
      {<Id.Lit_VarLike '_Dbg_watch_enable='> (sh_array_literal left:<Id.Op_LParen _>)}
    )
    (C {<typeset>} {<-i>} {<Id.Lit_VarLike '_Dbg_watch_max='> <0>})
    (C {<typeset>} {<Id.Lit_VarLike '_Dbg_watch_pat='> (DQ (${ Id.VSub_Name int_pat) <'[wW]'>)})
    (command.ShFunction
      name: _Dbg_save_breakpoints
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<file>})
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_line>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_file>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_cond>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_count>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_enable>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_onetime>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_max>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_file2linenos>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_brkpt_file2brkpt>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_save_watchpoints
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_watch_exp>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_watch_val>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_watch_arith>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_watch_count>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_watch_enable>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<typeset>} {<-p>} {<_Dbg_watch_max>}]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_statefile')}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_LessEqual
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {<Id.Lit_Digits 2>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_errmsg>} 
                      {
                        (DQ <'_Dbg_enable_disable error - need at least 2 args, got '> 
                          ($ Id.VSub_Pound '$#')
                        )
                      }
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [543 556]
                )
              ]
            )
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')})
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <display>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<shift>})
                    (C {<typeset>} {<Id.Lit_VarLike 'to_go='> (DQ ($ Id.VSub_At '$@'))})
                    (C {<typeset>} {<i>})
                    (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))})
                    (command.ForEach
                      iter_name: i
                      iter_words: [{($ Id.VSub_DollarName '$to_go')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$i')}
                              arms: [
                                (case_arm
                                  pat_list: [{($ Id.VSub_DollarName '$int_pat')}]
                                  action: [
                                    (C {<_Dbg_enable_disable_display>} {($ Id.VSub_DollarName '$on')} 
                                      {($ Id.VSub_DollarName '$en_dis')} {($ Id.VSub_DollarName '$i')}
                                    )
                                  ]
                                  spids: [658 660 672 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<_Dbg_errmsg>} 
                                      {
                                        (DQ <'Invalid entry number skipped: '> 
                                          ($ Id.VSub_DollarName '$i')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [675 677 -1 688]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [596 612]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <action>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<shift>})
                    (C {<typeset>} {<Id.Lit_VarLike 'to_go='> (DQ ($ Id.VSub_At '$@'))})
                    (C {<typeset>} {<i>})
                    (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))})
                    (command.ForEach
                      iter_name: i
                      iter_words: [{($ Id.VSub_DollarName '$to_go')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$i')}
                              arms: [
                                (case_arm
                                  pat_list: [{($ Id.VSub_DollarName '$int_pat')}]
                                  action: [
                                    (C {<_Dbg_enable_disable_action>} {($ Id.VSub_DollarName '$on')} 
                                      {($ Id.VSub_DollarName '$en_dis')} {($ Id.VSub_DollarName '$i')}
                                    )
                                  ]
                                  spids: [768 770 782 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<_Dbg_errmsg>} 
                                      {
                                        (DQ <'Invalid entry number skipped: '> 
                                          ($ Id.VSub_DollarName '$i')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [785 787 -1 798]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [706 722]
                )
              ]
            )
            (command.Sentence child:(C {<typeset>} {<to_go>}) terminator:<Id.Op_Semi _>)
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:to_go)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_At '$@'))}
                  spids: [825]
                )
              ]
            )
            (C {<typeset>} {<i>})
            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))})
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$to_go')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$i')}
                      arms: [
                        (case_arm
                          pat_list: [{($ Id.VSub_DollarName '$_Dbg_watch_pat')}]
                          action: [
                            (C {<_Dbg_enable_disable_watch>} {($ Id.VSub_DollarName '$on')} 
                              {($ Id.VSub_DollarName '$en_dis')} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name del>
                                  suffix_op: 
                                    (suffix_op.Slice
                                      begin: {<Id.Lit_Digits 0>}
                                      length: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_Minus
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name del>
                                                prefix_op: (Id.VSub_Pound)
                                              )
                                            }
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                )
                              }
                            )
                          ]
                          spids: [863 865 888 -1]
                        )
                        (case_arm
                          pat_list: [{($ Id.VSub_DollarName '$int_pat')}]
                          action: [
                            (C {<_Dbg_enable_disable_brkpt>} {($ Id.VSub_DollarName '$on')} 
                              {($ Id.VSub_DollarName '$en_dis')} {($ Id.VSub_DollarName '$i')}
                            )
                          ]
                          spids: [891 893 905 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<_Dbg_errmsg>} 
                              {(DQ <'Invalid entry number skipped: '> ($ Id.VSub_DollarName '$i'))}
                            )
                          ]
                          spids: [908 910 -1 921]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))})
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_print_brkpt_count
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<typeset>} {<-i>} {<i>})
              terminator: <Id.Op_Semi _>
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [964]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_NEqual
                                  left: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_LBracket
                                      left: <Id.Lit_ArithVarLike _Dbg_brkpt_counts>
                                      right: <Id.Lit_ArithVarLike i>
                                    )
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_LBracket
                                              left: <Id.Lit_ArithVarLike _Dbg_brkpt_counts>
                                              right: <Id.Lit_ArithVarLike i>
                                            )
                                          right: {<Id.Lit_Digits 1>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_Dbg_printf>} 
                              {(DQ <Id.Lit_BadBackslash '\\'> <'tbreakpoint already hit 1 time'>)}
                            )
                          ]
                          spids: [989 1007]
                        )
                      ]
                      else_action: [
                        (C {<_Dbg_printf>} 
                          {(DQ <Id.Lit_BadBackslash '\\'> <'tbreakpoint already hit %d times'>)} 
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name _Dbg_brkpt_counts>
                              bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')})
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [968 986]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_clear_all_brkpt
      body: 
        (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: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DPipe
                      left: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_Pound '$#')}
                          right: {<Id.Lit_Digits 3>}
                        )
                      right: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Great
                          left: {($ Id.VSub_Pound '$#')}
                          right: {<Id.Lit_Digits 4>}
                        )
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<typeset>} {<source_file>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:source_file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_Number '$1'))})
                      )
                    }
                  spids: [1165]
                )
              ]
            )
            (C {<typeset>} {<-ri>} {<Id.Lit_VarLike 'lineno='> ($ Id.VSub_Number '$2')})
            (C {<typeset>} {<-ri>} {<Id.Lit_VarLike 'is_temp='> ($ Id.VSub_Number '$3')})
            (C {<typeset>} {<-r>} 
              {<Id.Lit_VarLike 'condition='> 
                (braced_var_sub
                  token: <Id.VSub_Number 4>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<1>})
                )
              }
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: <Id.Lit_ArithVarLike _Dbg_brkpt_max>
                )
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDPlus
                  child: <Id.Lit_ArithVarLike _Dbg_brkpt_count>
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_line
                      index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')}
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$lineno')}
                  spids: [1223]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_file
                      index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')}
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$source_file'))}
                  spids: [1231]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_cond
                      index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')}
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$condition'))}
                  spids: [1241]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_onetime
                      index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')}
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$is_temp')}
                  spids: [1251]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_counts
                      index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')}
                    )
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1259]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: _Dbg_brkpt_enable
                      index: {($ Id.VSub_DollarName '$_Dbg_brkpt_max')}
                    )
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [1267]
                )
              ]
            )
            (C {<typeset>} {<dq_source_file>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dq_source_file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_esc_dq>} {(DQ ($ Id.VSub_DollarName '$source_file'))})
                      )
                    }
                  spids: [1281]
                )
              ]
            )
            (C {<typeset>} 
              {<Id.Lit_VarLike 'dq_condition='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<_Dbg_esc_dq>} {(DQ ($ Id.VSub_DollarName '$condition'))})
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_old_set_opts)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_old_set_opts') <' -o functrace'>)}
                  spids: [1308]
                )
              ]
            )
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'_Dbg_old_set_opts=\''> ($ Id.VSub_DollarName '$_Dbg_old_set_opts') <'\''>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {
                (DQ <'_Dbg_brkpt_line['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> 
                  ($ Id.VSub_DollarName '$lineno')
                )
              }
            )
            (C {<_Dbg_write_journal_eval>} 
              {
                (DQ <'_Dbg_brkpt_file['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$dq_source_file') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {<_Dbg_write_journal>} 
              {
                (DQ <'_Dbg_brkpt_cond['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) ($ Id.VSub_DollarName '$dq_condition') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {<_Dbg_write_journal>} 
              {
                (DQ <'_Dbg_brkpt_onetime['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> 
                  ($ Id.VSub_DollarName '$is_temp')
                )
              }
            )
            (C {<_Dbg_write_journal>} 
              {
                (DQ <'_Dbg_brkpt_counts['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <0> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {<_Dbg_write_journal>} 
              {(DQ <'_Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <']=1'>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {
                (DQ <'_Dbg_brkpt_file2linenos['> ($ Id.VSub_DollarName '$source_file') <']+='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> ($ Id.VSub_DollarName '$lineno') <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                )
              }
            )
            (C {<_Dbg_write_journal_eval>} 
              {
                (DQ <'_Dbg_brkpt_file2brkpt['> ($ Id.VSub_DollarName '$source_file') <']+='> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <' '> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:source_file)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_adjust_filename>} {(DQ ($ Id.VSub_DollarName '$source_file'))})
                      )
                    }
                  spids: [1428]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: <Id.Lit_ArithVarLike is_temp>
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_msg>} 
                      {
                        (DQ <'Breakpoint '> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') <' set in file '> 
                          (${ Id.VSub_Name source_file) <', line '> ($ Id.VSub_DollarName '$lineno') <.>
                        )
                      }
                    )
                  ]
                  spids: [1438 1453]
                )
              ]
              else_action: [
                (C {<_Dbg_msg>} 
                  {
                    (DQ <'One-time breakpoint '> ($ Id.VSub_DollarName '$_Dbg_brkpt_max') 
                      <' set in file '> (${ Id.VSub_Name source_file) <', line '> ($ Id.VSub_DollarName '$lineno') <.>
                    )
                  }
                )
              ]
            )
            (C {<_Dbg_write_journal>} 
              {(DQ <'_Dbg_brkpt_max='> ($ Id.VSub_DollarName '$_Dbg_brkpt_max'))}
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_unset_brkpt_arrays
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 1>}
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'del='> ($ Id.VSub_Number '$1')})
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'unset _Dbg_brkpt_line['> ($ Id.VSub_DollarName '$del') <']'>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'unset _Dbg_brkpt_counts['> ($ Id.VSub_DollarName '$del') <']'>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'unset _Dbg_brkpt_file['> ($ Id.VSub_DollarName '$del') <']'>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'unset _Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$del') <']'>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'unset _Dbg_brkpt_cond['> ($ Id.VSub_DollarName '$del') <']'>)}
            )
            (C {<_Dbg_write_journal_eval>} 
              {(DQ <'unset _Dbg_brkpt_onetime['> ($ Id.VSub_DollarName '$del') <']'>)}
            )
            (command.DParen
              child: 
                (arith_expr.UnaryAssign
                  op_id: Id.Node_PostDMinus
                  child: <Id.Lit_ArithVarLike _Dbg_brkpt_count>
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_unset_brkpt
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 2>}
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<typeset>} {<Id.Lit_VarLike 'filename='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'lineno='> ($ Id.VSub_Number '$2')})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'found='> <0>})
            (C {<typeset>} {<fullname>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fullname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_expand_filename>} {(DQ ($ Id.VSub_DollarName '$filename'))})
                      )
                    }
                  spids: [1676]
                )
              ]
            )
            (C {<typeset>} {<-a>} {<linenos>})
            (C {<eval>} 
              {
                (DQ <'linenos=('> 
                  (braced_var_sub
                    token: <Id.VSub_Name _Dbg_brkpt_file2linenos>
                    bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$fullname')})
                  ) <')'>
                )
              }
            )
            (C {<typeset>} {<-a>} {<brkpt_nos>})
            (C {<eval>} 
              {
                (DQ <'brkpt_nos=('> 
                  (braced_var_sub
                    token: <Id.VSub_Name _Dbg_brkpt_file2brkpt>
                    bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$fullname')})
                  ) <')'>
                )
              }
            )
            (C {<typeset>} {<-i>} {<i>})
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_LessEqual
                  left: <Id.Lit_ArithVarLike i>
                  right: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Name linenos>
                        prefix_op: (Id.VSub_Pound)
                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                      )
                    }
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_LBracket
                                              left: <Id.Lit_ArithVarLike linenos>
                                              right: <Id.Lit_ArithVarLike i>
                                            )
                                          right: <Id.Lit_ArithVarLike lineno>
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<typeset>} {<-i>} {<brkpt_num>})
                            (command.DParen
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: <Id.Lit_ArithVarLike brkpt_num>
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_LBracket
                                      left: <Id.Lit_ArithVarLike brkpt_nos>
                                      right: <Id.Lit_ArithVarLike i>
                                    )
                                )
                            )
                            (C {<_Dbg_unset_brkpt_arrays>} {($ Id.VSub_DollarName '$brkpt_num')})
                            (C {<unset>} {<Id.Lit_ArrayLhsOpen 'linenos['> <i> <Id.Lit_RBracket ']'>})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: _Dbg_brkpt_file2linenos
                                      index: {($ Id.VSub_DollarName '$fullname')}
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name linenos>
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      )
                                    }
                                  spids: [1834]
                                )
                              ]
                            )
                            (C {<typeset>} {<-a>} {<brkpt_nos>})
                            (C {<eval>} 
                              {
                                (DQ <'brkpt_nos=('> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name _Dbg_brkpt_file2brkpt>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$filename')}
                                      )
                                  ) <')'>
                                )
                              }
                            )
                            (C {<unset>} 
                              {<Id.Lit_ArrayLhsOpen 'brkpt_nos['> ($ Id.VSub_DollarName '$i') 
                                <Id.Lit_RBracket ']'>
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: _Dbg_brkpt_file2brkpt
                                      index: {($ Id.VSub_DollarName '$filename')}
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name brkpt_nos>
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      )
                                    }
                                  spids: [1875]
                                )
                              ]
                            )
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: <Id.Lit_ArithVarLike found>
                                )
                            )
                          ]
                          spids: [1775 1793]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: <Id.Lit_ArithVarLike found>
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:filename)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<_Dbg_file_canonic>} {(DQ ($ Id.VSub_DollarName '$filename'))})
                              )
                            }
                          spids: [1922]
                        )
                      ]
                    )
                    (C {<_Dbg_errmsg>} 
                      {
                        (DQ <'No breakpoint found at '> ($ Id.VSub_DollarName '$filename') <', line '> 
                          (${ Id.VSub_Name lineno) <.>
                        )
                      }
                    )
                  ]
                  spids: [1904 1919]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$found')}
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_delete_brkpt_entry
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_DEqual
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 0>}
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
            )
            (C {<typeset>} {<-r>} {<Id.Lit_VarLike 'del='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<typeset>} {<-i>} {<i>})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'found='> <0>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_z
                                  child: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name _Dbg_brkpt_file>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: {($ Id.VSub_DollarName '$del')}
                                          )
                                      )
                                    }
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_errmsg>} 
                      {(DQ <'No breakpoint number '> ($ Id.VSub_DollarName '$del') <.>)}
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2012 2029]
                )
              ]
            )
            (C {<typeset>} 
              {<Id.Lit_VarLike 'source_file='> 
                (braced_var_sub
                  token: <Id.VSub_Name _Dbg_brkpt_file>
                  bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$del')})
                )
              }
            )
            (C {<typeset>} {<-i>} 
              {<Id.Lit_VarLike 'lineno='> 
                (braced_var_sub
                  token: <Id.VSub_Name _Dbg_brkpt_line>
                  bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$del')})
                )
              }
            )
            (C {<typeset>} {<-i>} {<try>})
            (C {<typeset>} {<Id.Lit_VarLike 'new_lineno_val='> (SQ )})
            (C {<typeset>} {<Id.Lit_VarLike 'new_brkpt_nos='> (SQ )})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> <-1>})
            (C {<typeset>} {<-a>} {<brkpt_nos>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:brkpt_nos)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name _Dbg_brkpt_file2brkpt>
                              bracket_op: 
                                (bracket_op.ArrayIndex
                                  expr: {($ Id.VSub_DollarName '$source_file')}
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [2109]
                )
              ]
            )
            (command.ForEach
              iter_name: try
              iter_words: [
                {
                  (braced_var_sub
                    token: <Id.VSub_Name _Dbg_brkpt_file2linenos>
                    bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$source_file')})
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.DParen
                      child: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike i>
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_LBracket
                                              left: <Id.Lit_ArithVarLike brkpt_nos>
                                              right: <Id.Lit_ArithVarLike i>
                                            )
                                          right: <Id.Lit_ArithVarLike del>
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.DParen
                                              child: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_NEqual
                                                  left: <Id.Lit_ArithVarLike try>
                                                  right: <Id.Lit_ArithVarLike lineno>
                                                )
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<_Dbg_errmsg>} {(SQ <'internal brkpt structure inconsistency'>)})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Return return>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [2166 2181]
                                )
                              ]
                            )
                            (C {<_Dbg_unset_brkpt_arrays>} {($ Id.VSub_DollarName '$del')})
                            (command.DParen
                              child: 
                                (arith_expr.UnaryAssign
                                  op_id: Id.Node_PostDPlus
                                  child: <Id.Lit_ArithVarLike found>
                                )
                            )
                          ]
                          spids: [2145 2163]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:new_lineno_val)
                              op: assign_op.PlusEqual
                              rhs: {(DQ <' '> ($ Id.VSub_DollarName '$try') <' '>)}
                              spids: [2214]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:new_brkpt_nos)
                              op: assign_op.PlusEqual
                              rhs: 
                                {
                                  (DQ <' '> 
                                    (braced_var_sub
                                      token: <Id.VSub_Name brkpt_nos>
                                      bracket_op: 
                                        (bracket_op.ArrayIndex
                                          expr: {($ Id.VSub_DollarName '$i')}
                                        )
                                    ) <' '>
                                  )
                                }
                              spids: [2222]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Great
                                  left: <Id.Lit_ArithVarLike found>
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_DEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name new_lineno_val>
                                                prefix_op: (Id.VSub_Pound)
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                              )
                                            }
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_Dbg_write_journal_eval>} 
                              {
                                (DQ <'unset \'_Dbg_brkpt_file2linenos['> 
                                  ($ Id.VSub_DollarName '$source_file') <']\''>
                                )
                              }
                            )
                            (C {<_Dbg_write_journal_eval>} 
                              {
                                (DQ <'unset \'_Dbg_brkpt_file2brkpt['> 
                                  ($ Id.VSub_DollarName '$source_file') <']\''>
                                )
                              }
                            )
                          ]
                          spids: [2259 2280]
                        )
                      ]
                      else_action: [
                        (C {<_Dbg_write_journal_eval>} 
                          {
                            (DQ <'_Dbg_brkpt_file2linenos['> ($ Id.VSub_DollarName '$source_file') 
                              <']='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name new_lineno_val) 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              )
                            )
                          }
                        )
                        (C {<_Dbg_write_journal_eval>} 
                          {
                            (DQ <'_Dbg_brkpt_file2brkpt['> ($ Id.VSub_DollarName '$source_file') <']='> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\"'>
                              ) ($ Id.VSub_DollarName '$new_brkpt_nos') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                            )
                          }
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [2241 2256]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable_action
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 3>}
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$3')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name _Dbg_brkpt_file>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      )
                                    }
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _Dbg_action_enable>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                            }
                                          right: {($ Id.VSub_DollarName '$on')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_Dbg_errmsg>} 
                              {
                                (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' already '> 
                                  (${ Id.VSub_Name en_dis) <', so nothing done.'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2426 2445]
                        )
                      ]
                      else_action: [
                        (C {<_Dbg_write_journal_eval>} 
                          {
                            (DQ <'_Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$i') <']='> 
                              ($ Id.VSub_DollarName '$on')
                            )
                          }
                        )
                        (C {<_Dbg_msg>} 
                          {
                            (DQ <'Action entry '> ($ Id.VSub_DollarName '$i') <' '> 
                              ($ Id.VSub_DollarName '$en_dis') <.>
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                  ]
                  spids: [2404 2423]
                )
              ]
              else_action: [
                (C {<_Dbg_errmsg>} 
                  {
                    (DQ <'Action entry '> ($ Id.VSub_DollarName '$i') 
                      <' doesn\'t exist, so nothing done.'>
                    )
                  }
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable_brkpt
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: {($ Id.VSub_Pound '$#')}
                      right: {<Id.Lit_Digits 3>}
                    )
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$3')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name _Dbg_brkpt_file>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      )
                                    }
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _Dbg_brkpt_enable>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                            }
                                          right: {($ Id.VSub_DollarName '$on')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_Dbg_errmsg>} 
                              {
                                (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' already '> 
                                  (${ Id.VSub_Name en_dis) <', so nothing done.'>
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [2590 2609]
                        )
                      ]
                      else_action: [
                        (C {<_Dbg_write_journal_eval>} 
                          {
                            (DQ <'_Dbg_brkpt_enable['> ($ Id.VSub_DollarName '$i') <']='> 
                              ($ Id.VSub_DollarName '$on')
                            )
                          }
                        )
                        (C {<_Dbg_msg>} 
                          {
                            (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') <' '> 
                              ($ Id.VSub_DollarName '$en_dis') <.>
                            )
                          }
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {<0>}
                        )
                      ]
                    )
                  ]
                  spids: [2568 2587]
                )
              ]
              else_action: [
                (C {<_Dbg_errmsg>} 
                  {
                    (DQ <'Breakpoint entry '> ($ Id.VSub_DollarName '$i') 
                      <' doesn\'t exist, so nothing done.'>
                    )
                  }
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_get_watch_exp_eval
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<new_val>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<eval>} {<echo>} 
                                            {
                                              (word_part.EscapedLiteral
                                                token: <Id.Lit_EscapedChar '\\"'>
                                              ) 
                                              (braced_var_sub
                                                token: <Id.VSub_Name _Dbg_watch_exp>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                            }
                                          )
                                      )
                                    }
                                  right: {(DQ )}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:new_val)
                          op: assign_op.Equal
                          rhs: {(SQ )}
                          spids: [2739]
                        )
                      ]
                    )
                  ]
                  spids: [2709 2736]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_LBracket
                                      left: <Id.Lit_ArithVarLike _Dbg_watch_arith>
                                      right: {($ Id.VSub_DollarName '$i')}
                                    )
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<.>} {(${ Id.VSub_Name _Dbg_libdir) <'/dbg-set-d-vars.inc'>})
                    (C {<eval>} {<let>} 
                      {<Id.Lit_VarLike 'new_val='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                        ) 
                        (braced_var_sub
                          token: <Id.VSub_Name _Dbg_watch_exp>
                          bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')})
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                      }
                    )
                  ]
                  spids: [2744 2762]
                )
              ]
              else_action: [
                (C {<.>} {(${ Id.VSub_Name _Dbg_libdir) <'/dbg-set-d-vars.inc'>})
                (C {<eval>} 
                  {<Id.Lit_VarLike 'new_val='> 
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name _Dbg_watch_exp>
                        bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')})
                      )
                    )
                  }
                )
              ]
            )
            (C {<echo>} {($ Id.VSub_DollarName '$new_val')})
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_enable_disable_watch
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'on='> ($ Id.VSub_Number '$1')})
            (C {<typeset>} {<Id.Lit_VarLike 'en_dis='> ($ Id.VSub_Number '$2')})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'i='> ($ Id.VSub_Number '$3')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name _Dbg_watch_exp>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _Dbg_watch_enable>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {($ Id.VSub_DollarName '$i')}
                                                  )
                                              )
                                            }
                                          right: {($ Id.VSub_DollarName '$on')}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_Dbg_msg>} 
                              {
                                (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$i') <' already '> 
                                  ($ Id.VSub_DollarName '$en_dis') <' so nothing done.'>
                                )
                              }
                            )
                          ]
                          spids: [2876 2895]
                        )
                      ]
                      else_action: [
                        (C {<_Dbg_write_journal_eval>} 
                          {
                            (DQ <'_Dbg_watch_enable['> ($ Id.VSub_DollarName '$i') <']='> 
                              ($ Id.VSub_DollarName '$on')
                            )
                          }
                        )
                        (C {<_Dbg_msg>} 
                          {
                            (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$i') <' '> 
                              ($ Id.VSub_DollarName '$en_dis') <.>
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [2854 2873]
                )
              ]
              else_action: [
                (C {<_Dbg_msg>} 
                  {
                    (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$i') 
                      <' doesn\'t exist so nothing done.'>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_list_watch
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name _Dbg_watch_exp>
                                  prefix_op: (Id.VSub_Pound)
                                  bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                )
                              } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<typeset>} {<Id.Lit_VarLike 'i='> <0>} {<j>})
                    (C {<_Dbg_section>} {(DQ <'Num Type       Enb  Expression'>)})
                    (command.ForExpr
                      init: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: <Id.Lit_ArithVarLike i>
                          right: {<Id.Lit_Digits 0>}
                        )
                      cond: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: <Id.Lit_ArithVarLike i>
                          right: <Id.Lit_ArithVarLike _Dbg_watch_max>
                        )
                      update: 
                        (arith_expr.UnaryAssign
                          op_id: Id.Node_PostDPlus
                          child: <Id.Lit_ArithVarLike i>
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {
                                                (DQ 
                                                  (braced_var_sub
                                                    token: <Id.VSub_Name _Dbg_watch_exp>
                                                    bracket_op: 
                                                      (bracket_op.ArrayIndex
                                                        expr: {($ Id.VSub_DollarName '$i')}
                                                      )
                                                  )
                                                )
                                              } {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<_Dbg_printf>} {(SQ <'%-3d watchpoint %-4s %s'>)} 
                                      {($ Id.VSub_DollarName '$i')} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name _Dbg_yn>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: 
                                                {
                                                  (braced_var_sub
                                                    token: <Id.VSub_Name _Dbg_watch_enable>
                                                    bracket_op: 
                                                      (bracket_op.ArrayIndex
                                                        expr: {($ Id.VSub_DollarName '$i')}
                                                      )
                                                  )
                                                }
                                            )
                                        )
                                      } 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name _Dbg_watch_exp>
                                            bracket_op: 
                                              (bracket_op.ArrayIndex
                                                expr: {($ Id.VSub_DollarName '$i')}
                                              )
                                          )
                                        )
                                      }
                                    )
                                    (C {<_Dbg_print_brkpt_count>} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name _Dbg_watch_count>
                                          bracket_op: 
                                            (bracket_op.ArrayIndex
                                              expr: {($ Id.VSub_DollarName '$i')}
                                            )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [3031 3049]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [2960 2980]
                )
              ]
              else_action: [(C {<_Dbg_msg>} {(DQ <'No watch expressions have been set.'>)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_delete_watch_entry
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'del='> ($ Id.VSub_Number '$1')})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name _Dbg_watch_exp>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$del')}
                                      )
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_write_journal_eval>} 
                      {(DQ <'unset _Dbg_watch_exp['> ($ Id.VSub_DollarName '$del') <']'>)}
                    )
                    (C {<_Dbg_write_journal_eval>} 
                      {(DQ <'unset _Dbg_watch_val['> ($ Id.VSub_DollarName '$del') <']'>)}
                    )
                    (C {<_Dbg_write_journal_eval>} 
                      {(DQ <'unset _Dbg_watch_enable['> ($ Id.VSub_DollarName '$del') <']'>)}
                    )
                    (C {<_Dbg_write_journal_eval>} 
                      {(DQ <'unset _Dbg_watch_count['> ($ Id.VSub_DollarName '$del') <']'>)}
                    )
                  ]
                  spids: [3133 3152]
                )
              ]
              else_action: [
                (C {<_Dbg_msg>} 
                  {
                    (DQ <'Watchpoint entry '> ($ Id.VSub_DollarName '$del') 
                      <' doesn\'t exist so nothing done.'>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: _Dbg_clear_watch
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Less
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<typeset>} 
                      {<Id.Lit_VarLike '_Dbg_prompt_output='> 
                        (braced_var_sub
                          token: <Id.VSub_Name _Dbg_tty>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_ColonHyphen ':-'>
                              arg_word: {<Id.Lit_Slash '/'> <dev> <Id.Lit_Slash '/'> <null>}
                            )
                        )
                      }
                    )
                    (command.Simple
                      words: [
                        {<read>}
                        {($ Id.VSub_DollarName '$_Dbg_edit')}
                        {<-p>}
                        {(DQ <'Delete all watchpoints? (y/n): '>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_LessAnd '<&'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_DollarName '$_Dbg_input_desc')}
                        )
                        (redir
                          op: <Id.Redir_DGreat '2>>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {($ Id.VSub_DollarName '$_Dbg_prompt_output')}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {($ Id.VSub_DollarName '$REPLY')}
                                          right: 
                                            {<Id.Lit_Other '['> <Yy> <Id.Lit_Other ']'> 
                                              <Id.Lit_Other '*'>
                                            }
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_Dbg_write_journal_eval>} {<unset>} 
                              {<Id.Lit_ArrayLhsOpen '_Dbg_watch_exp['> <Id.Lit_At '@'> 
                                <Id.Lit_RBracket ']'>
                              }
                            )
                            (C {<_Dbg_write_journal_eval>} {<unset>} 
                              {<Id.Lit_ArrayLhsOpen '_Dbg_watch_val['> <Id.Lit_At '@'> 
                                <Id.Lit_RBracket ']'>
                              }
                            )
                            (C {<_Dbg_write_journal_eval>} {<unset>} 
                              {<Id.Lit_ArrayLhsOpen '_Dbg_watch_enable['> <Id.Lit_At '@'> 
                                <Id.Lit_RBracket ']'>
                              }
                            )
                            (C {<_Dbg_write_journal_eval>} {<unset>} 
                              {<Id.Lit_ArrayLhsOpen '_Dbg_watch_count['> <Id.Lit_At '@'> 
                                <Id.Lit_RBracket ']'>
                              }
                            )
                            (C {<_Dbg_msg>} {(DQ <'All Watchpoints have been cleared'>)})
                          ]
                          spids: [3266 3283]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [3215 3230]
                )
              ]
            )
            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_seteglob'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {($ Id.VSub_DollarName '$int_pat')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_Dbg_write_journal_eval>} 
                      {(DQ <'unset _Dbg_watch_exp['> ($ Id.VSub_Number '$1') <']'>)}
                    )
                    (C {<_msg>} {(DQ <'Watchpoint '> ($ Id.VSub_DollarName '$i') <' has been cleared'>)})
                  ]
                  spids: [3348 3361]
                )
              ]
              else_action: [
                (C {<_Dbg_list_watch>})
                (C {<_basdhb_msg>} {(DQ <'Please specify a numeric watchpoint number'>)})
              ]
            )
            (C {<eval>} {(DQ ($ Id.VSub_DollarName '$_resteglob'))})
          ]
        )
    )
  ]
)