(command.CommandList children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (word_part.BracedVarSub token: <VSub_Name VARIABLES_QUEUE_SH> suffix_op: (suffix_op.StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [9 13] ) } {(Lit_Other ']')} ) (command.ControlFlow token:<ControlFlow_Return return>) ] ) (command.Assignment keyword: Assign_Declare flags: [-g] pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:VARIABLES_QUEUE_SH spids:[25]) op: Equal rhs: {(true)} spids: [25] ) ] spids: [21] ) (C {(.)} { (word_part.BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [31 36] ) (/common.sh) } ) (C {(.)} { (word_part.BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [41 46] ) (/logger.sh) } ) (C {(.)} { (word_part.BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [51 56] ) (/variables.sh) } ) (C {(.)} { (word_part.BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [61 66] ) (/variables.atom.sh) } ) (C {(.)} { (word_part.BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (suffix_op.StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [71 76] ) (/variables.arraylist.sh) } ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(ArrayQueue)} {(ArrayList)} ) (command.FuncDef name: 'variable::ArrayQueue::new' body: (command.BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(ArrayQueue)} {(DQ (${ VSub_At '@'))}) ] spids: [124] ) spids: [112 123] ) (command.FuncDef name: 'variable::ArrayQueue::enqueue' body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Sentence child: (C {(stderr)} {(DQ ('variable::ArrayQueue::enqueue ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 182] ) ] spids: [16777215 195] ) (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:token spids:[201]) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [201] ) ] spids: [199] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf) } {(DQ (${ VSub_Name token))} {(ArrayQueue)} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name token) ('] is not of type ArrayQueue (actual type [') (${ VSub_Name RESULT) ('])') ) } ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 231] ) ] spids: [16777215 254] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (append) } {(DQ (${ VSub_At '@'))} ) ] spids: [164] ) spids: [152 163] ) (command.FuncDef name: 'variable::ArrayQueue::dequeue' body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name VARIABLES_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Sentence child: (C {(stderr)} {(DQ ('variable::ArrayList::isEmpty_c ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 314] ) ] spids: [16777215 327] ) (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:token spids:[332]) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [332] ) ] spids: [330] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf) } {(DQ (${ VSub_Name token))} {(ArrayQueue)} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name token) ('] is not of type ArrayQueue (actual type [') (${ VSub_Name RESULT) ('])') ) } ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 363] ) ] spids: [16777215 386] ) (command.If arms: [ (if_arm cond: [ (command.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 dequeue from an empty queue'))}) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 408] ) ] spids: [16777215 423] ) (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (peek) } {(DQ (${ VSub_Name token))} ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result spids:[444]) op: Equal rhs: {($ VSub_DollarName '$RESULT')} spids: [444] ) ] spids: [442] ) (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {($ VSub_DollarName '$token')}) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:type spids:[458]) op: Equal rhs: {($ VSub_DollarName '$RESULT')} spids: [458] ) ] spids: [456] ) (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (rest) } {($ VSub_DollarName '$token')} ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:value spids:[475]) op: Equal rhs: {($ VSub_DollarName '$RESULT')} spids: [475] ) ] spids: [473] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (set)} {(DQ ($ VSub_DollarName '$token'))} {(DQ ($ VSub_DollarName '$type'))} {(DQ ($ VSub_DollarName '$value'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:RESULT spids:[497]) op: Equal rhs: {(DQ (${ VSub_Name result))} spids: [497] ) ] spids: [497] ) ] spids: [296] ) spids: [284 295] ) (command.FuncDef name: 'variable::ArrayQueue::peek' body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:token spids:[533]) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [533] ) ] spids: [531] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf) } {(DQ (${ VSub_Name token))} {(ArrayQueue)} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name token) ('] is not of type ArrayQueue (actual type [') (${ VSub_Name RESULT) ('])') ) } ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 564] ) ] spids: [16777215 587] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {($ VSub_DollarName '$token')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Cannot peek from an empty queue'))}) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 605] ) ] spids: [16777215 620] ) (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayList) (Lit_Other ':') (Lit_Other ':') (first) } {($ VSub_DollarName '$token')} ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result spids:[640]) op: Equal rhs: {($ VSub_DollarName '$RESULT')} spids: [640] ) ] spids: [638] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:RESULT spids:[644]) op: Equal rhs: {(DQ (${ VSub_Name result))} spids: [644] ) ] spids: [644] ) ] spids: [528] ) spids: [516 527] ) (command.FuncDef name: '_variable::ArrayQueue::peek_p' body: (command.BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (peek) } {(DQ (${ VSub_At '@'))} ) (C {(echo)} {(DQ ($ VSub_DollarName '$RESULT'))}) ] spids: [665] ) spids: [653 664] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_Other '[')} {($ VSub_Number '$0')} {(KW_Bang '!') (Lit_Other '=')} {($ VSub_DollarName '$BASH_SOURCE')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return>)] spids: [16777215 711] ) ] spids: [16777215 716] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (new) } ) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:vCode spids:[738]) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [738] ) ] spids: [738] ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (first))}) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (enqueue) } {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (second))}) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (enqueue) } {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (third))}) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (enqueue) } {(${ VSub_Name vCode)} {(${ VSub_Name RESULT)} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (peek) } {($ VSub_DollarName '$vCode')} ) terminator: <Op_Semi ';'> ) (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (first))} {(DQ ($ VSub_DollarName '$RESULT'))} {(DQ ('queue:peek first'))} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (dequeue) } {($ VSub_DollarName '$vCode')} ) terminator: <Op_Semi ';'> ) (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ (first))} {(DQ ($ VSub_DollarName '$RESULT'))} {(DQ ('queue::dequeue first'))} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (peek) } {($ VSub_DollarName '$vCode')} ) terminator: <Op_Semi ';'> ) (command.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_DollarName '$RESULT'))} {(DQ ('queue:peek second'))} ) ] ) (command.CommandList children: [ (command.Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (ArrayQueue) (Lit_Other ':') (Lit_Other ':') (dequeue) } {($ VSub_DollarName '$vCode')} ) terminator: <Op_Semi ';'> ) (command.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_DollarName '$RESULT'))} {(DQ ('queue::dequeue second'))} ) ] ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (report)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (word_part.BracedVarSub token: <VSub_Number 1> suffix_op: (suffix_op.StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [1018 1022] ) } {(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 1044] ) ] spids: [16777215 1053] ) ] )