(CommandList children: [ (AndOr 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>) ] op_id: Op_DAmp ) (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: [-1 196] ) ] spids: [-1 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: [-1 268] ) ] spids: [-1 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: True ) 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) ("])") ) } ) (C {(exit)} {(1)}) ] spids: [-1 317] ) ] spids: [-1 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"))}) (C {(exit)} {(1)})] spids: [-1 374] ) ] spids: [-1 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: True ) 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) ("])") ) } ) (C {(exit)} {(1)}) ] spids: [-1 533] ) ] spids: [-1 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"))}) (C {(exit)} {(1)})] spids: [-1 586] ) ] spids: [-1 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: [-1 687] ) ] spids: [-1 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 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 "]")} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ";"> ) ] action: [(C {(variable) (Lit_Other ":") (Lit_Other ":") (printMetadata)})] spids: [-1 1022] ) ] spids: [-1 1031] ) ] )