(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name VARIABLES_MAP_SH> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [9 13] ) } {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:VARIABLES_MAP_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: [31 36] ) (/common.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [41 46] ) (/logger.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [51 56] ) (/variables.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [61 66] ) (/variables.arraylist.sh) } ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(Map)} {(ArrayList)} ) (FuncDef name: 'variable::Map::new' body: (BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(Map)} {(DQ (${ VSub_At '@'))}) ] spids: [114] ) spids: [102 113] ) (FuncDef name: 'variable::Map::containsKey_c' 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::Map::containsKey_c ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 173] ) ] spids: [16777215 186] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:mapToken) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [192] ) ] spids: [190] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [202] ) ] spids: [200] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name mapToken))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[228])] spids: [224] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name RESULT))} right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart)} spids: [251] ) ] spids: [251] ) terminator: <Op_Semi ';'> ) ] spids: [16777215 249] ) ] else_action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])} spids: [259] ) ] spids: [259] ) terminator: <Op_Semi ';'> ) ] spids: [257 268] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name keyToken))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:key) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [287] ) ] spids: [285] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[298])] spids: [296] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[304])] spids: [302] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[309])] spids: [307] ) (DParen child: (ArithBinary op_id: Arith_Comma left: (BinaryAssign op_id: Arith_Equal left: (LhsName name:size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [316 322] ) } ) ) right: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_index) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ) (Assignment keyword: Assign_Declare flags: [-i] pairs: [(assign_pair lhs:(LhsName name:i) op:Equal spids:[339])] spids: [335] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 2)}) ) ) body: (DoGroup children: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)})) spids: [373 380] ) ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentKey) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [385] ) ] spids: [385] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name currentKey))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (${ VSub_Name key))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 415] ) ] spids: [16777215 423] ) ] spids: [364 426] ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [155] ) spids: [143 154] ) (FuncDef name: 'variable::Map::get' 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::Map::get ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 476] ) ] spids: [16777215 489] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:mapToken) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [495] ) ] spids: [493] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [505] ) ] spids: [503] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name keyToken))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:key) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [528] ) ] spids: [526] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[541])] spids: [537] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$mapToken')}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name RESULT))} right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart)} spids: [572] ) ] spids: [572] ) terminator: <Op_Semi ';'> ) ] spids: [16777215 570] ) ] else_action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])} spids: [580] ) ] spids: [580] ) terminator: <Op_Semi ';'> ) ] spids: [578 589] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[598])] spids: [596] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[604])] spids: [602] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[609])] spids: [607] ) (DParen child: (ArithBinary op_id: Arith_Comma left: (BinaryAssign op_id: Arith_Equal left: (LhsName name:size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [616 622] ) } ) ) right: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_index) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 2)}) ) ) body: (DoGroup children: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)})) spids: [666 673] ) ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentKey) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [678] ) ] spids: [678] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name currentKey))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (${ VSub_Name key))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name i)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [720 733] ) ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name i)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [740 753] ) ) } spids: [738] ) ] spids: [738] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [16777215 708] ) ] spids: [16777215 762] ) ] spids: [657 765] ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [458] ) spids: [446 457] ) (FuncDef name: '_variable::Map::get_p' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (get) } {(DQ (${ VSub_At '@'))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Map does not contain the specified key [') (${ VSub_Number 2) (']'))} ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 809] ) ] spids: [16777215 828] ) (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))}) ] spids: [787] ) spids: [775 786] ) (FuncDef name: 'variable::Map::put' 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::Map::put ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 885] ) ] spids: [16777215 898] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:mapToken) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [904] ) ] spids: [902] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [914] ) ] spids: [912] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:valueToken) op: Equal rhs: {(DQ (${ VSub_Number 3))} spids: [924] ) ] spids: [922] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$mapToken')}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[946])] spids: [942] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name RESULT))} right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart)} spids: [969] ) ] spids: [969] ) terminator: <Op_Semi ';'> ) ] spids: [16777215 967] ) ] else_action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])} spids: [977] ) ] spids: [977] ) terminator: <Op_Semi ';'> ) ] spids: [975 986] ) (C {(log)} { (DQ ('MAP: ') (CommandSubPart command_list: (CommandList children: [ (C {(_variable) (Lit_Other ':') (Lit_Other ':') (value_p)} {($ VSub_Name '$mapToken')} ) ] ) left_token: <Left_CommandSub '$('> spids: [993 1000] ) ) } ) (C {(log)} { (DQ ('Adding new key/value to items [') ($ VSub_Name '$keyToken') (']=[') ($ VSub_Name '$valueToken') ('] -> ') (BracedVarSub token: <VSub_Name items> bracket_op: (WholeArray op_id:Lit_At) suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: { (BracedVarSub token: <VSub_Name items> bracket_op: (WholeArray op_id:Lit_At) spids: [1018 1023] ) } ) spids: [1012 1024] ) ) } ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$keyToken')}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:key) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1039] ) ] spids: [1037] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$valueToken')}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1058] ) ] spids: [1056] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[1069])] spids: [1067] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[1074])] spids: [1072] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[1079])] spids: [1077] ) (DParen child: (ArithBinary op_id: Arith_Comma left: (BinaryAssign op_id: Arith_Equal left: (LhsName name:size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1086 1092] ) } ) ) right: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_index) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 2)}) ) ) body: (DoGroup children: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)})) spids: [1135 1142] ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentKey) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1146] ) ] spids: [1146] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name currentKey))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (${ VSub_Name key))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(items) (Lit_Other '[')}) (DParen child: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name i)}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) (C {(Lit_Other ']') (Lit_Other '=') (DQ (${ VSub_Name valueToken))}) (C {(variable) (Lit_Other ':') (Lit_Other ':') (set)} {(${ VSub_Name mapToken)} {(ArrayList)} { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (WholeArray op_id:Arith_Star) spids: [1213 1218] ) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [16777215 1176] ) ] spids: [16777215 1227] ) ] spids: [1127 1230] ) ) (C {(items) (Lit_Other '[') (DQ (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1241 1247] ) ) (Lit_Other ']') (Lit_Other '=') (DQ (${ VSub_Name keyToken)) } ) (C {(items) (Lit_Other '[') (DQ (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1261 1267] ) ) (Lit_Other ']') (Lit_Other '=') (DQ (${ VSub_Name valueToken)) } ) (C {(log)} { (DQ ('Added new key/value to items [') ($ VSub_Name '$keyToken') (']=[') ($ VSub_Name '$valueToken') ('] -> ') (BracedVarSub token: <VSub_Name items> bracket_op: (WholeArray op_id:Lit_At) spids: [1286 1291] ) ) } ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (set)} {(${ VSub_Name mapToken)} {(ArrayList)} { (DQ (BracedVarSub token: <VSub_Name items> bracket_op: (WholeArray op_id:Arith_Star) spids: [1307 1312] ) ) } ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [867] ) spids: [855 866] ) (FuncDef name: 'variable::Map::print' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:mapToken) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1350] ) ] spids: [1348] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:indent) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(EmptyPart)}) spids: [1362 1365] ) ) } spids: [1360] ) ] spids: [1358] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$mapToken')}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [(assign_pair lhs:(LhsName name:items) op:Equal spids:[1384])] spids: [1380] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name RESULT))} right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart)} spids: [1409] ) ] spids: [1409] ) (C {(echo)} {(DQ (${ VSub_Name indent) ('MAP [') (${ VSub_Name mapToken) ('=()]'))}) ] spids: [16777215 1405] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: {(ArrayLiteralPart words:[{(${ VSub_Name RESULT)}])} spids: [1433] ) ] spids: [1433] ) (C {(echo)} { (DQ (${ VSub_Name indent) ('MAP [') (${ VSub_Name mapToken) ('=(') (BracedVarSub token: <VSub_Name items> bracket_op: (WholeArray op_id:Lit_At) spids: [1452 1457] ) (')]') ) } ) ] spids: [1429 1462] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:size) op:Equal spids:[1471])] spids: [1469] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:max_index) op:Equal spids:[1476])] spids: [1474] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[1481])] spids: [1479] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentValue) op:Equal spids:[1486])] spids: [1484] ) (DParen child: (ArithBinary op_id: Arith_Comma left: (BinaryAssign op_id: Arith_Equal left: (LhsName name:size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1495 1501] ) } ) ) right: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_index) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 2)}) ) ) body: (DoGroup children: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)})) spids: [1544 1551] ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentKey) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1555] ) ] spids: [1555] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [1568 1579] ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentValue) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1583] ) ] spids: [1583] ) (C {(echo)} { (DQ (${ VSub_Name indent) (' [') (${ VSub_Name currentKey) (']=[') (${ VSub_Name currentValue) (']') ) } ) ] spids: [1536 1609] ) ) ] spids: [1345] ) spids: [1333 1344] ) (FuncDef name: 'variable::Map::debug' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1631] ) ] spids: [1629] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$mapToken')}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name RESULT))} right: {(DQ )} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ ('{}'))} spids: [1670] ) ] spids: [1670] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 1667] ) ] spids: [16777215 1679] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name RESULT> bracket_op: (WholeArray op_id:Lit_At) spids: [1690 1695] ) ) } ] ) } spids: [1687] ) ] spids: [1683] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs:(LhsName name:size) op:Equal spids:[1703]) (assign_pair lhs:(LhsName name:declare) op:Equal spids:[1705]) (assign_pair lhs:(LhsName name:max_index) op:Equal spids:[1707]) ] spids: [1701] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentKey) op:Equal spids:[1712])] spids: [1710] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:currentValue) op:Equal spids:[1717])] spids: [1715] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:formatted) op: Equal rhs: {(ArrayLiteralPart)} spids: [1725] ) ] spids: [1721] ) (DParen child: (ArithBinary op_id: Arith_Comma left: (BinaryAssign op_id: Arith_Equal left: (LhsName name:size) right: (ArithWord w: { (BracedVarSub token: <VSub_Name items> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1735 1741] ) } ) ) right: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_index) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:size) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 2)}) ) ) body: (DoGroup children: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name i)})) spids: [1784 1791] ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentKey) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1795] ) ] spids: [1795] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} { (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [1808 1819] ) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentValue) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1823] ) ] spids: [1823] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:formatted) op: PlusEqual rhs: { (ArrayLiteralPart words: [ {(DQ (${ VSub_Name currentKey) ('=') (${ VSub_Name currentValue))} ] ) } spids: [1831] ) ] spids: [1831] ) ] spids: [1776 1845] ) ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug) (Lit_Other ':') (Lit_Other ':') (join)} {(DQ (', '))} { (DQ (BracedVarSub token: <VSub_Name formatted> bracket_op: (WholeArray op_id:Lit_At) spids: [1862 1867] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ ('{') ($ VSub_Name '$RESULT') ('}'))} spids: [1871] ) ] spids: [1871] ) ] spids: [1626] ) spids: [1614 1625] ) (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 1898] ) ] spids: [16777215 1903] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (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: [1926] ) ] spids: [1926] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('key one'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:key1) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[1944])] spids: [1944] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('value one'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value1) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [1962] ) ] spids: [1962] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('key two'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:key2) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[1980])] spids: [1980] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('value two'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value2) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [1998] ) ] spids: [1998] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('no such key'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keyUnknown) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [2016] ) ] spids: [2016] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c)} {($ VSub_Name '$vCode')} {($ VSub_Name '$keyUnknown')} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('containsKey false'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (put)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key1')} {($ VSub_Name '$value1')} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key1')} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(0)} {($ VSub_QMark '$?')} {(DQ ('containsKey one true'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (get)} {(DQ ($ VSub_Name '$vCode'))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))} {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value one'))} {(DQ ($ VSub_Name '$RESULT'))} {(DQ ('get key one'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (put)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key2')} {($ VSub_Name '$value2')} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key2')} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(0)} {($ VSub_QMark '$?')} {(DQ ('containsKey two true'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (get)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key2')} ) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))} {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value two'))} {(DQ ($ VSub_Name '$RESULT'))} {(DQ ('get key two'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (put)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key1')} {($ VSub_Name '$value2')} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key1')} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(0)} {($ VSub_QMark '$?')} {(DQ ('containsKey one replaced true'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (get)} {($ VSub_Name '$vCode')} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))} {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value two'))} {(DQ ($ VSub_Name '$RESULT'))} {(DQ ('get key one replaced'))} ) (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: [2326 2330] ) } {(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 2352] ) ] spids: [16777215 2361] ) ] )