(CommandList
  children: [
    (FuncDef
      name: test_msg
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              flags: ["'-i'"]
              pairs: [(assign_pair lhs:(LhsName name:_Dbg_logging) op:Equal rhs:{(0)} spids:[18])]
              spids: [14]
            )
            (Assignment
              keyword: Assign_Local
              flags: ["'-i'"]
              pairs: [
                (assign_pair
                  lhs: (LhsName name:_Dbg_logging_redirect)
                  op: Equal
                  rhs: {(0)}
                  spids: [26]
                )
              ]
              spids: [22]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:_Dbg_tty) op:Equal rhs:{(SQ )} spids:[32])]
              spids: [30]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(_Dbg_msg)} {(hi)})])
                        left_token: <Left_CommandSub "$(">
                        spids: [40 44]
                      )
                    }
                  spids: [39]
                )
              ]
              spids: [37]
            )
            (C {(assertEquals)} {(SQ <hi>)} {(DQ ($ VSub_Name "$msg"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(_Dbg_msg_nocr)} {(hi)})])
                        left_token: <Left_CommandSub "$(">
                        spids: [59 63]
                      )
                    }
                  spids: [58]
                )
              ]
              spids: [58]
            )
            (C {(assertEquals)} {(SQ <hi>)} {(DQ ($ VSub_Name "$msg"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_Dbg_printf)} {(SQ <"%03d">)} {(5)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [78 86]
                      )
                    }
                  spids: [77]
                )
              ]
              spids: [77]
            )
            (C {(assertEquals)} {(SQ <005>)} {(DQ ($ VSub_Name "$msg"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_Dbg_printf_nocr)} {(SQ <"%-3s">)} {(SQ <fo>)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [101 111]
                      )
                    }
                  spids: [100]
                )
              ]
              spids: [100]
            )
            (C {(assertEquals)} {(SQ <"fo ">)} {(DQ ($ VSub_Name "$msg"))})
          ]
          spids: [11]
        )
      spids: [7 10]
    )
    (FuncDef
      name: test_undefined
      body: 
        (BraceGroup
          children: [
            (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_logging=") (0)})
            (C {(typeset)} {(-i)} {(Lit_VarLike "_Dbg_logging_redirect=") (0)})
            (C {(typeset)} {(Lit_VarLike "_Dbg_tty=") (SQ )})
            (C {(typeset)} {(msg)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(_Dbg_undefined_cmd)} {(foo)} {(bar)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [163 169]
                      )
                    }
                  spids: [162]
                )
              ]
              spids: [162]
            )
            (C {(assertEquals)} {(SQ <"** Undefined foo subcommand \"bar\". Try \"help foo\".">)} 
              {(DQ ($ VSub_Name "$msg"))}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(_Dbg_undefined_cmd)} {(foo)})])
                        left_token: <Left_CommandSub "$(">
                        spids: [184 188]
                      )
                    }
                  spids: [183]
                )
              ]
              spids: [183]
            )
            (C {(assertEquals)} {(SQ <"** Undefined command \"foo\". Try \"help\".">)} 
              {(DQ ($ VSub_Name "$msg"))}
            )
          ]
          spids: [131]
        )
      spids: [127 130]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:abs_top_srcdir)
          op: Equal
          rhs: {(/src/external-vcs/sourceforge/bashdb)}
          spids: [204]
        )
      ]
      spids: [204]
    )
    (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: [211 215]
              ) (/)
            }
          spids: [210]
        )
      ]
      spids: [210]
    )
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (test/unit/helper.sh)})
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (/lib/msg.sh)})
    (C {(.)} {(${ VSub_Name abs_top_srcdir) (/init/io.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:_Dbg_set_highlight) op:Equal rhs:{(SQ )} spids:[239])]
      spids: [239]
    )
    (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
    )
  ]
)