(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:this_script)
          op: Equal
          rhs: {(test-filecache.sh)}
          spids: [6]
        )
      ]
      spids: [6]
    )
    (FuncDef
      name: test_get_source_line
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_set_highlight)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [20]
                )
              ]
              spids: [20]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_source_line)
                  op: Equal
                  rhs: {(SQ <"no good">)}
                  spids: [25]
                )
              ]
              spids: [25]
            )
            (C {(_Dbg_get_source_line)} {(2)} {($ VSub_Name "$this_script")})
            (C {(assertEquals)} {(SQ <"# -*- shell-script -*-">)} 
              {(DQ ($ VSub_Name "$_Dbg_source_line"))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_source_line)
                  op: Equal
                  rhs: {(SQ <"no good">)}
                  spids: [62]
                )
              ]
              spids: [62]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_set_highlight)
                  op: Equal
                  rhs: {(SQ <light>)}
                  spids: [68]
                )
              ]
              spids: [68]
            )
            (C {(_Dbg_get_source_line)} {(2)} {($ VSub_Name "$this_script")})
            (C {(assertEquals)} {(DQ ("Requested highlight, it's not cached - fallback no highlight"))} 
              {(SQ <"# -*- shell-script -*-">)} {(DQ ($ VSub_Name "$_Dbg_source_line"))}
            )
          ]
          spids: [17]
        )
      spids: [13 16]
    )
    (FuncDef
      name: test_readin_maxline
      body: 
        (BraceGroup
          children: [
            (C {(typeset)} {(filename)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:shu)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(_Dbg_resolve_expand_filename)} {($ VSub_Name "$shunit_file")})
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [117 121]
                      )
                    }
                  spids: [116]
                )
              ]
              spids: [116]
            )
            (C {(_Dbg_readin)} {(${ VSub_Name shu)})
            (C {(assertEquals)} {(DQ ("Read ") (${ VSub_Name shu) (" status test"))} {(SQ <0>)} 
              {($ VSub_QMark "$?")}
            )
            (C {(typeset)} {(file2)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file2)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_Dbg_is_file)} {(${ VSub_Name shu)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [154 160]
                      )
                    }
                  spids: [153]
                )
              ]
              spids: [153]
            )
            (C {(assertEquals)} {(DQ ("Cached read of ") (${ VSub_Name shu) (" test"))} {(SQ <0>)} 
              {($ VSub_QMark "$?")}
            )
            (C {(assertNotEquals)} {(DQ ("Getting cached file name back"))} {(SQ )} 
              {(DQ ($ VSub_Name "$file2"))}
            )
            (C {(typeset)} {(-i)} {(maxline)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:maxline)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_Dbg_get_maxline)} {($ VSub_Name "$file2")})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [202 206]
                      )
                    }
                  spids: [201]
                )
              ]
              spids: [201]
            )
            (C {(assertEquals)} {(DQ ("Line-count of ") ($ VSub_Name "$file") (" exit status"))} 
              {(SQ <0>)} {($ VSub_QMark "$?")}
            )
            (C {(assertEquals)} {(DQ ("Number of lines in ") ($ VSub_Name "$file2"))} {(1)} 
              {
                (ArithSubPart
                  anode: 
                    (ArithBinary
                      op_id: Arith_Great
                      left: (ArithVarRef name:maxline)
                      right: (ArithWord w:{(Lit_Digits 1000)})
                    )
                  spids: [237 246]
                )
              }
            )
          ]
          spids: [108]
        )
      spids: [104 107]
    )
    (FuncDef
      name: test_check_line
      body: 
        (BraceGroup
          children: [
            (FuncDef
              name: _Dbg_errmsg
              body: 
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:errmsg)
                          op: PlusEqual
                          rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_Number "$1"))}])}
                          spids: [271]
                        )
                      ]
                      spids: [271]
                    )
                  ]
                  spids: [268]
                )
              spids: [264 267]
            )
            (Sentence child:(C {(typeset)} {(-a)} {(errmsg)}) terminator:<Op_Semi ";">)
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:errmsg)
                  op: Equal
                  rhs: {(ArrayLiteralPart)}
                  spids: [289]
                )
              ]
              spids: [289]
            )
            (C {(_Dbg_check_line)})
            (C {(assertNotEquals)} {(DQ ("check_line with wrong number of args"))} {(SQ <0>)} 
              {($ VSub_QMark "$?")}
            )
            (C {(_Dbg_check_line)} {(a)})
            (C {(assertNotEquals)} {(DQ ("check_line with wrong number of args"))} {(SQ <0>)} 
              {($ VSub_QMark "$?")}
            )
            (C {(_Dbg_check_line)} {(a)} {(b)} {(c)})
            (C {(assertNotEquals)} {(DQ ("check_line with wrong number of args"))} {(SQ <0>)} 
              {($ VSub_QMark "$?")}
            )
            (C {(_Dbg_readin)} {(DQ ($ VSub_Name "$shunit_file"))})
            (C {(_Dbg_check_line)} {(10)} {($ VSub_Name "$shunit_file")})
            (C {(assertEquals)} 
              {(DQ ("check_line with an in_range number for ") ($ VSub_Name "$shunit_file"))} {(SQ <0>)} {($ VSub_QMark "$?")}
            )
            (C {(assertEquals)} {(DQ ("error queue empty so far for ") ($ VSub_Name "$shunit_file"))} 
              {(SQ <0>)} 
              {
                (BracedVarSub
                  token: <VSub_Name errmsg>
                  prefix_op: VSub_Pound
                  bracket_op: (WholeArray op_id:Lit_At)
                  spids: [389 395]
                )
              }
            )
            (C {(_Dbg_check_line)} {(10000)} {($ VSub_Name "$shunit_file")})
            (C {(assertNotEquals)} {(DQ ("check_line with wrong number of args"))} {(SQ <0>)} 
              {($ VSub_QMark "$?")}
            )
            (C {(assertEquals)} {(DQ ("error message generated"))} {(SQ <1>)} 
              {
                (BracedVarSub
                  token: <VSub_Name errmsg>
                  prefix_op: VSub_Pound
                  bracket_op: (WholeArray op_id:Lit_At)
                  spids: [428 434]
                )
              }
            )
            (C {(_Dbg_check_line)} {(10000)} {($ VSub_Name "$shunit_file")})
          ]
          spids: [261]
        )
      spids: [257 260]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(SQ </src/external-vcs/sourceforge/bashdb>)} {(Lit_Other "=")} {(SQ )} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("Something is wrong abs_top_srcdir is not set."))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 463]
        )
      ]
      spids: [-1 477]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:abs_top_srcdir)
          op: Equal
          rhs: {(/src/external-vcs/sourceforge/bashdb)}
          spids: [480]
        )
      ]
      spids: [480]
    )
    (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: [487 491]
              ) (/)
            }
          spids: [486]
        )
      ]
      spids: [486]
    )
    (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/filecache.sh)})
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (lib/file.sh)})
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (lib/msg.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
    )
  ]
)