(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name VARIABLES_STACK_SH> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [9 13] ) } {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:VARIABLES_STACK_SH) op:Equal rhs:{(true)} spids:[25])] spids: [21] ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [35 40] ) (/common.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [45 50] ) (/logger.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [55 60] ) (/variables.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [65 70] ) (/variables.atom.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [75 80] ) (/variables.arraylist.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [85 90] ) (/variables.queue.sh) } ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(ArrayStack)} {(ArrayList)} ) (FuncDef name: 'variable::ArrayStack::new' body: (BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(ArrayStack)} {(DQ (${ VSub_At '@'))}) ] spids: [138] ) spids: [126 137] ) (FuncDef name: 'variable::ArrayStack::push' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('variable::ArrayStack::push ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 196] ) ] spids: [16777215 209] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (prepend) } {(DQ (${ VSub_At '@'))} ) ] spids: [178] ) spids: [166 177] ) (FuncDef name: 'variable::ArrayStack::pop' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('variable::ArrayStack::pop ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 268] ) ] spids: [16777215 281] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [286] ) ] spids: [284] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf) } {(DQ (${ VSub_Name token))} {(ArrayStack)} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name token))}) (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name token) ('] is not of type ArrayStack (actual type [') (${ VSub_Name RESULT) ('])') ) } ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 317] ) ] spids: [16777215 352] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {(DQ (${ VSub_Name token))} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Cannot pop from an empty stack'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 374] ) ] spids: [16777215 389] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (peek) } {(DQ (${ VSub_Name token))} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [411] ) ] spids: [409] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {($ VSub_Name '$token')}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [426] ) ] spids: [424] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (rest) } {($ VSub_Name '$token')} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [444] ) ] spids: [442] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (set)} {(DQ ($ VSub_Name '$token'))} {(DQ ($ VSub_Name '$type'))} {(DQ ($ VSub_Name '$value'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Name result))} spids: [466] ) ] spids: [466] ) ] spids: [250] ) spids: [238 249] ) (FuncDef name: 'variable::ArrayStack::peek' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [502] ) ] spids: [500] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf) } {(DQ (${ VSub_Name token))} {(ArrayStack)} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name token))}) (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name token) ('] is not of type ArrayStack (actual type [') (${ VSub_Name RESULT) ('])') ) } ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 533] ) ] spids: [16777215 568] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {($ VSub_Name '$token')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Cannot peek from an empty stack'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 586] ) ] spids: [16777215 601] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (first) } {($ VSub_Name '$token')} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [618] ) ] spids: [616] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Name result))} spids: [622] ) ] spids: [622] ) ] spids: [497] ) spids: [485 496] ) (FuncDef name: '_variable::ArrayStack::peek_p' body: (BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (peek) } {(DQ (${ VSub_At '@'))} ) (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))}) ] spids: [643] ) spids: [631 642] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Number '$0')} {(KW_Bang '!') (Lit_Other '=')} {($ VSub_Name '$BASH_SOURCE')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return>)] spids: [16777215 687] ) ] spids: [16777215 692] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (new)} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:vCode) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[715])] spids: [715] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (first))}) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (push)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (second))}) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (push)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (third))}) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (push)} {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (peek)} {($ VSub_Name '$vCode')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (third))} {(DQ ($ VSub_Name '$RESULT'))} {(DQ ('stack::peek first'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (pop)} {($ VSub_Name '$vCode')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (third))} {(DQ ($ VSub_Name '$RESULT'))} {(DQ ('stack::pop first'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (peek)} {($ VSub_Name '$vCode')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (second))} {(DQ ($ VSub_Name '$RESULT'))} {(DQ ('stack::peek second'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayStack) (Lit_Other ':') (Lit_Other ':') (pop)} {($ VSub_Name '$vCode')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (second))} {(DQ (${ VSub_Name RESULT))} {(DQ ('queue::dequeue second'))} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (report)}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [996 1000] ) } {(Lit_Other ']')} ) (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (debug))} {(Lit_Other ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(variable) (Lit_Other ':') (Lit_Other ':') (printMetadata)})] spids: [16777215 1022] ) ] spids: [16777215 1031] ) ] )