(CommandList children: [ (AndOr 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>) ] op_id: Op_DAmp ) (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: [-1 173] ) ] spids: [-1 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: [-1 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: [-1 415] ) ] spids: [-1 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: [-1 476] ) ] spids: [-1 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: [-1 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: [-1 708] ) ] spids: [-1 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: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} {(DQ ("Map does not contain the specified key [") (${ VSub_Number 2) ("]"))} ) (C {(exit)} {(1)}) ] spids: [-1 809] ) ] spids: [-1 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: [-1 885] ) ] spids: [-1 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: [-1 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: [-1 1176] ) ] spids: [-1 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:[12861291]) ) } ) (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:[13071312]))} ) (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:{(SQ )}) 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: [-1 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: [-1 1667] ) ] spids: [-1 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: [-1 1898] ) ] spids: [-1 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 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 "]")} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ";"> ) ] action: [(C {(variable) (Lit_Other ":") (Lit_Other ":") (printMetadata)})] spids: [-1 2352] ) ] spids: [-1 2361] ) ] )