(CommandList
  children: [
    (FuncDef
      name: print_message_and_exit
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(echo)} {($ VSub_Number "$1")}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[62])]
                )
              terminator: <Op_Semi ";">
            )
            (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ";">)
          ]
          spids: [55]
        )
      spids: [49 54]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CURRENT_SCRIPT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name BASH_SOURCE>
                bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                spids: [75 80]
              )
            }
          spids: [74]
        )
      ]
      spids: [74]
    )
    (AndOr
      children: [
        (C {(cd)} 
          {
            (DQ 
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(${ VSub_Name CURRENT_SCRIPT)})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [88 94]
              )
            )
          }
        )
        (C {(print_message_and_exit)} 
          {(DQ ("Unable to access ")) 
            (CommandSubPart
              command_list: (CommandList children:[(C {(dirname)} {(${ VSub_Name CURRENT_SCRIPT)})])
              left_token: <Left_CommandSub "$(">
              spids: [106 112]
            ) (DQ )
          }
        )
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_CommandSub "$(">
                spids: [118 120]
              )
            }
          spids: [117]
        )
      ]
      spids: [117]
    )
    (AndOr
      children: [
        (C {(source)} {(DQ ($ VSub_Name "$DIR") (/unittest.bash))})
        (C {(print_message_and_exit)} {(DQ ("unittest.bash not found!"))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (C {(source)} {(DQ ($ VSub_Name "$DIR") (/testenv.sh))})
        (C {(print_message_and_exit)} {(DQ ("testenv.sh not found!"))})
      ]
      op_id: Op_DPipe
    )
  ]
)