(CommandList
  children: [
    (FuncDef
      name: test_breakpoint
      body: 
        (BraceGroup
          children: [
            (FuncDef
              name: _Dbg_errmsg
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:errmsgs)
                          op: PlusEqual
                          rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_At "$@"))}])}
                          spids: [27]
                        )
                      ]
                      spids: [27]
                    )
                  ]
                  spids: [24]
                )
              spids: [20 23]
            )
            (FuncDef
              name: _Dbg_msg
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:msgs)
                          op: PlusEqual
                          rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_At "$@"))}])}
                          spids: [45]
                        )
                      ]
                      spids: [45]
                    )
                  ]
                  spids: [42]
                )
              spids: [38 41]
            )
            (FuncDef
              name: _Dbg_adjust_filename
              body: (BraceGroup children:[(C {(echo)} {($ VSub_Star "$*")})] spids:[60])
              spids: [56 59]
            )
            (FuncDef
              name: _Dbg_expand_filename
              body: (BraceGroup children:[(C {(echo)} {($ VSub_Star "$*")})] spids:[75])
              spids: [71 74]
            )
            (C {(typeset)} {(-a)} {(msgs)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [94]
                )
              ]
              spids: [94]
            )
            (C {(_Dbg_set_brkpt)})
            (C {(assertNotEquals)} {(SQ <"set breakpoint no parameters">)} {(SQ <0>)} 
              {(DQ ($ VSub_QMark "$?"))}
            )
            (C {(_Dbg_set_brkpt)} {(1)} {(2)} {(3)} {(4)} {(5)})
            (C {(assertNotEquals)} {(SQ <"set breakpoint too many parameter">)} {(SQ <0>)} 
              {(DQ ($ VSub_QMark "$?"))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_frame_last_lineno)
                  op: Equal
                  rhs: {(5)}
                  spids: [156]
                )
              ]
              spids: [156]
            )
            (C {(_Dbg_set_brkpt)} {(test.sh)} {(5)} {(0)})
            (C {(assertEquals)} {(SQ <"simple set breakpoint">)} 
              {(SQ <"Breakpoint 1 set in file test.sh, line 5.">)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name msgs>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                    spids: [182 187]
                  )
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [192]
                )
              ]
              spids: [192]
            )
            (C {(_Dbg_unset_brkpt)})
            (C {(assertEquals)} {(SQ <"unset_brkpt no params invalid">)} {(SQ <0>)} 
              {(DQ ($ VSub_QMark "$?"))}
            )
            (C {(_Dbg_unset_brkpt)} {(1)} {(2)} {(3)})
            (C {(assertEquals)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [256]
                )
              ]
              spids: [256]
            )
            (C {(_Dbg_unset_brkpt)} {(test.sh)} {(5)})
            (C {(assertEquals)} {(SQ <"valid unset_brkpt">)} {(SQ <1>)} {(DQ ($ VSub_QMark "$?"))})
            (C {(assertEquals)} {(SQ <0>)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name msgs>
                    prefix_op: VSub_Pound
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [294 300]
                  )
                )
              }
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msgs)
                      op: Equal
                      rhs: {(ArrayLiteralPart)}
                      spids: [321]
                    )
                  ]
                  spids: [321]
                )
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:errmsgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [326]
                )
              ]
              spids: [326]
            )
            (C {(_Dbg_enable_disable_brkpt)})
            (C {(assertEquals)} {(SQ <enable_disable_brkpt>)} {(SQ <1>)} {(DQ ($ VSub_QMark "$?"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [358]
                )
              ]
              spids: [358]
            )
            (C {(_Dbg_enable_disable_brkpt)} {(1)} {(SQ <enabled>)} {(1)})
            (C {(assertEquals)} {(DQ ("enable_disable_brkpt enabled"))} 
              {(DQ ("Breakpoint entry 1 doesn't exist, so nothing done."))} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name errmsgs>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                    spids: [387 392]
                  )
                )
              }
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msgs)
                      op: Equal
                      rhs: {(ArrayLiteralPart)}
                      spids: [398]
                    )
                  ]
                  spids: [398]
                )
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:errmsgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [403]
                )
              ]
              spids: [403]
            )
            (C {(_Dbg_set_brkpt)} {(test.sh)} {(6)} {(1)})
            (C {(assertEquals)} {(SQ <"add 2nd breakpoint">)} 
              {(SQ <"One-time breakpoint 2 set in file test.sh, line 6.">)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name msgs>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                    spids: [434 439]
                  )
                )
              }
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msgs)
                      op: Equal
                      rhs: {(ArrayLiteralPart)}
                      spids: [445]
                    )
                  ]
                  spids: [445]
                )
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:errmsgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [450]
                )
              ]
              spids: [450]
            )
            (C {(_Dbg_enable_disable_brkpt)} {(1)} {(SQ <enabled>)} {(2)})
            (C {(assertEquals)} {(SQ <"redundant 2nd breakpoint enable">)} 
              {(SQ <"Breakpoint entry 2 already enabled, so nothing done.">)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name errmsgs>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                    spids: [479 484]
                  )
                )
              }
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msgs)
                      op: Equal
                      rhs: {(ArrayLiteralPart)}
                      spids: [490]
                    )
                  ]
                  spids: [490]
                )
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:errmsgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [495]
                )
              ]
              spids: [495]
            )
            (C {(_Dbg_enable_disable_brkpt)} {(0)} {(SQ <enabled>)} {(2)})
            (C {(assertEquals)} {(SQ <"Breakpoint entry 2 enabled.">)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name msgs>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                    spids: [518 523]
                  )
                )
              }
            )
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:msgs)
                      op: Equal
                      rhs: {(ArrayLiteralPart)}
                      spids: [529]
                    )
                  ]
                  spids: [529]
                )
              terminator: <Op_Semi ";">
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:errmsgs)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [534]
                )
              ]
              spids: [534]
            )
            (C {(_Dbg_enable_disable_brkpt)} {(1)} {(SQ <disabled>)} {(2)})
            (C {(assertEquals)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))})
            (C {(assertEquals)} {(SQ <"Breakpoint entry 2 disabled.">)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name msgs>
                    bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                    spids: [568 573]
                  )
                )
              }
            )
            (C {(_Dbg_clear_all_brkpt)})
          ]
          spids: [13]
        )
      spids: [9 12]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:abs_top_srcdir)
          op: Equal
          rhs: {(/src/external-vcs/sourceforge/bashdb)}
          spids: [584]
        )
      ]
      spids: [584]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:abs_top_srcdir)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name abs_top_srcdir>
                suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(Lit_Slash /)})
                spids: [591 595]
              ) (/)
            }
          spids: [590]
        )
      ]
      spids: [590]
    )
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (test/unit/helper.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/init/pre.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/file.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/fns.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/journal.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/break.sh)})
    (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/validate.sh)})
    (C {(set)} {(--)})
    (AndOr
      children: [
        (DBracket
          expr: 
            (BoolBinary
              op_id: BoolBinary_GlobDEqual
              left: {($ VSub_Number "$0")}
              right: {(${ VSub_Name BASH_SOURCE)}
            )
        )
        (C {(.)} {(${ VSub_Name shunit_file)})
      ]
      op_id: Op_DAmp
    )
  ]
)