(List (FunctionDef print_message_and_exit [] (List (Com {[LIT_CHARS echo]} {[VarSub 1]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('CURRENT_SCRIPT', {[VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[VarSub CURRENT_SCRIPT]})]]}) (Com {[LIT_CHARS print_message_and_exit]} {[DQ [LIT_CHARS "Unable to access "]] [ComSub (Com {[LIT_CHARS dirname]} {[VarSub CURRENT_SCRIPT]})] [DQ ]}) ) (= scope= flags=0 words=[] bindings=[('DIR', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub DIR][LIT_CHARS /unittest.bash]]}) (Com {[LIT_CHARS print_message_and_exit]} {[DQ [LIT_CHARS "unittest.bash not found!"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub DIR][LIT_CHARS /testenv.sh]]}) (Com {[LIT_CHARS print_message_and_exit]} {[DQ [LIT_CHARS "testenv.sh not found!"]]}) ) )