(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name VARIABLES_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_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) } ) (Assignment keyword: Assign_Declare flags: [-g -A] pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_METADATA) op: Equal rhs: {(ArrayLiteralPart)} spids: [91] ) ] spids: [85] ) (Assignment keyword: Assign_Declare flags: [-g -A] pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_VALUES) op: Equal rhs: {(ArrayLiteralPart)} spids: [101] ) ] spids: [95] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:VARIABLES_INDEX) op:Equal rhs:{(0)} spids:[109])] spids: [105] ) (Assignment keyword: Assign_Declare flags: [-g -A] pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_OFFSETS) op: Equal rhs: { (ArrayLiteralPart words: [{(Lit_Other '[') (type) (Lit_Other ']') (Lit_Other '=') (0)}] ) } spids: [119] ) ] spids: [113] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:VARIABLES_DEBUG) op:Equal rhs:{(0)} spids:[133])] spids: [129] ) (Assignment keyword: Assign_Declare flags: [-g -A] pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_TYPES) op: Equal rhs: {(ArrayLiteralPart)} spids: [143] ) ] spids: [137] ) (FuncDef name: 'variable::new' 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::new ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 178] ) ] spids: [16777215 191] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:token) op:Equal spids:[198])] spids: [196] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Number 1))} right: {(DQ (-name))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [226] ) ] spids: [226] ) (C {(shift)}) ] spids: [16777215 220] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ ('auto#') (${ VSub_Name VARIABLES_INDEX))} spids: [240] ) ] spids: [240] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_INDEX) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name VARIABLES_INDEX)}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [250 261] ) } spids: [249] ) ] spids: [249] ) ] spids: [237 264] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_lt left: { (DQ (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [273 276] ) ) } right: {(1)} ) right: (BoolBinary op_id: BoolBinary_gt left: { (DQ (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [286 289] ) ) } right: {(2)} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Usage: variable::new ?name? <type> <value>'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 299] ) ] spids: [16777215 314] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [320] ) ] spids: [318] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name type)})) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [334 343] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Unknown variable type [') (${ VSub_Name type) (']'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 349] ) ] spids: [16777215 368] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: { (DQ (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [377 380] ) ) } right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:value) op:Equal rhs:{(DQ )} spids:[395])] spids: [393] ) ] spids: [16777215 390] ) ] else_action: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [405] ) ] spids: [403] ) ] spids: [400 413] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:metadata) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$type')}])} spids: [421] ) ] spids: [417] ) (C {(VARIABLES_METADATA) (Lit_Other '[') (DQ (${ VSub_Name token)) (Lit_Other ']') (Lit_Other '=') (DQ (BracedVarSub token:<VSub_Name metadata> bracket_op:(WholeArray op_id:Lit_At) spids:[437 442])) } ) (C {(VARIABLES_VALUES) (Lit_Other '[') (DQ (${ VSub_Name token)) (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$value')) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ ($ VSub_Name '$token'))} spids: [469] ) ] spids: [469] ) ] spids: [160] ) spids: [151 159] ) (FuncDef name: '_variable::new_p' body: (BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(DQ (${ VSub_At '@'))}) (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))}) ] spids: [486] ) spids: [477 485] ) (FuncDef name: 'variable::clone' 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::clone ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 537] ) ] spids: [16777215 550] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Number 1))} right: {(DQ (-name))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [581] ) ] spids: [579] ) (C {(shift)}) ] spids: [16777215 573] ) ] else_action: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ ('auto#') (${ VSub_Name VARIABLES_INDEX))} spids: [597] ) ] spids: [595] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VARIABLES_INDEX) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(${ VSub_Name VARIABLES_INDEX)}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [607 618] ) } spids: [606] ) ] spids: [606] ) ] spids: [592 621] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_lt left: { (DQ (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [630 633] ) ) } right: {(1)} ) right: (BoolBinary op_id: BoolBinary_gt left: { (DQ (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [643 646] ) ) } right: {(2)} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Usage: variable::new ?name? <type> <value>'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 656] ) ] spids: [16777215 671] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:from_token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [677] ) ] spids: [675] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name from_token))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [700] ) ] spids: [698] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name from_token))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [723] ) ] spids: [721] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:metadata) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$type')}])} spids: [736] ) ] spids: [732] ) (C {(VARIABLES_METADATA) (Lit_Other '[') (${ VSub_Name token) (Lit_Other ']') (Lit_Other '=') (DQ (BracedVarSub token:<VSub_Name metadata> bracket_op:(WholeArray op_id:Lit_At) spids:[750 755])) } ) (C {(VARIABLES_VALUES) (Lit_Other '[') (${ VSub_Name token) (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$value')) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ ($ VSub_Name '$token'))} spids: [772] ) ] spids: [772] ) ] spids: [519] ) spids: [510 518] ) (FuncDef name: 'variable::set' 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::set ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 816] ) ] spids: [16777215 829] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_ne left: { (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [836 839] ) } right: {(3)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Usage: variable::set <variable token> <type> <value>'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 848] ) ] spids: [16777215 863] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [869] ) ] spids: [867] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [877] ) ] spids: [875] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} spids: [885] ) ] spids: [883] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name type)})) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [899 908] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Unknown variable type [') (${ VSub_Name type) (']'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 914] ) ] spids: [16777215 933] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:metadata) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$type')}])} spids: [942] ) ] spids: [938] ) (C {(VARIABLES_METADATA) (Lit_Other '[') (${ VSub_Name token) (Lit_Other ']') (Lit_Other '=') (DQ (BracedVarSub token:<VSub_Name metadata> bracket_op:(WholeArray op_id:Lit_At) spids:[956 961])) } ) (C {(VARIABLES_VALUES) (Lit_Other '[') (${ VSub_Name token) (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$value')) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RESULT) op:Equal rhs:{(DQ )} spids:[978])] spids: [978] ) ] spids: [798] ) spids: [789 797] ) (FuncDef name: 'variable::type' 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::type ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 1021] ) ] spids: [16777215 1034] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:index) op: Equal rhs: {($ VSub_Number '$1')} spids: [1039] ) ] spids: [1037] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} { (DQ (BracedVarSub token: <VSub_Name VARIABLES_METADATA> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name index)})) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [1050 1059] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('The variable token [') (${ VSub_Name index) ('] does not exist'))} ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 1065] ) ] spids: [16777215 1084] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:metadata) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name VARIABLES_METADATA> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$index')})) spids: [1093 1098] ) } ] ) } spids: [1091] ) ] spids: [1087] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (BracedVarSub token: <VSub_Name metadata> bracket_op: (ArrayIndex expr: (ArithWord w: { (BracedVarSub token: <VSub_Name VARIABLES_OFFSETS> bracket_op: (ArrayIndex expr:(ArithVarRef name:type)) spids: [1106 1111] ) } ) ) spids: [1103 1113] ) } spids: [1102] ) ] spids: [1102] ) ] spids: [1003] ) spids: [994 1002] ) (FuncDef name: '_variable::type_p' body: (BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_At '@'))}) (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))}) ] spids: [1126] ) spids: [1117 1125] ) (FuncDef name: 'variable::type::define' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:typeName) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1167] ) ] spids: [1165] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:typeParents) op: Equal rhs: {(ArrayLiteralPart)} spids: [1179] ) ] spids: [1175] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name typeName)})) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [1193 1202] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Variable type [') (${ VSub_Name typeName) ('] already defined'))} ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 1208] ) ] spids: [16777215 1227] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [(assign_pair lhs:(LhsName name:superTypes) op:Equal spids:[1235])] spids: [1231] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [1242 1246] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:typeParent) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [1257] ) ] spids: [1255] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$typeParent')}) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [1271 1278] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} { (DQ ('Variable type [') (${ VSub_Name typeName) ('] declare unknown parent type [') (${ VSub_Name typeParent) (']') ) } ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 1284] ) ] spids: [16777215 1307] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:typeParents) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(DQ (${ VSub_Name typeParent))}])} spids: [1310] ) ] spids: [1310] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:typeParents) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr: (ArithWord w:{(${ VSub_Name typeParent)}) ) spids: [1322 1329] ) } ] ) } spids: [1320] ) ] spids: [1320] ) (C {(VARIABLES_TYPES) (Lit_Other '[') (${ VSub_Name typeName) (Lit_Other ']') (Lit_Other '=') (DQ (BracedVarSub token: <VSub_Name typeParents> bracket_op: (WholeArray op_id:Lit_At) spids: [1341 1346] ) ) } ) ] spids: [16777215 1252] ) ] else_action: [ (C {(VARIABLES_TYPES) (Lit_Other '[') (${ VSub_Name typeName) (Lit_Other ']') (Lit_Other '=') (DQ ) } ) ] spids: [1350 1364] ) ] spids: [1162] ) spids: [1150 1161] ) (FuncDef name: 'variable::type::instanceOf' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1395] ) ] spids: [1393] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:expectedType) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [1405] ) ] spids: [1403] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (exactlyA) } {(DQ (${ VSub_Name token))} {(DQ (${ VSub_Name expectedType))} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 1438] ) ] spids: [16777215 1446] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name token))}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:actualType) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1464] ) ] spids: [1462] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:actualSuperTypes) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$actualType')})) spids: [1479 1484] ) } ] ) } spids: [1477] ) ] spids: [1473] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name actualSuperTypes> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1492 1498] ) } {(-lt)} {(1)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [16777215 1508] ) ] spids: [16777215 1516] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:superType) op:Equal spids:[1522])] spids: [1520] ) (ForEach iter_name: superType iter_words: [ { (DQ (BracedVarSub token: <VSub_Name actualSuperTypes> bracket_op: (WholeArray op_id:Lit_At) spids: [1532 1537] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name expectedType))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (${ VSub_Name superType))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 1567] ) ] spids: [16777215 1575] ) ] spids: [1541 1578] ) spids: [1530 1539] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [1390] ) spids: [1378 1389] ) (FuncDef name: 'variable::type::instanceOfOrExit' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:valueToken) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1607] ) ] spids: [1605] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:expectedType) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [1617] ) ] spids: [1615] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf) } {(DQ (${ VSub_Name valueToken))} {(DQ (${ VSub_Name expectedType))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name valueToken))} ) (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name valueToken) ('] is not of type [') (${ VSub_Name expectedType) ('] (actual type [') (${ VSub_Name RESULT) ('])') ) } ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 1651] ) ] spids: [16777215 1690] ) ] spids: [1602] ) spids: [1590 1601] ) (FuncDef name: 'variable::type::exactlyA' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1721] ) ] spids: [1719] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:expectedType) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [1731] ) ] spids: [1729] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$expectedType')}) ) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [1746 1753] ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('Unknown type [') (${ VSub_Name expectedType) (']'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 1759] ) ] spids: [16777215 1778] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name token))}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:actualType) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1796] ) ] spids: [1794] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (${ VSub_Name actualType))} {(Lit_Other '=') (Lit_Other '=')} {(DQ (${ VSub_Name expectedType))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 1827] ) ] else_action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [1835 1843] ) ] spids: [1716] ) spids: [1704 1715] ) (FuncDef name: 'variable::value' 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::value ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 1876] ) ] spids: [16777215 1889] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:index) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1894] ) ] spids: [1892] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name VARIABLES_VALUES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name index)})) suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [1909 1918] ) ) } {(Lit_Other ']')} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(stderr)} {(DQ ('The variable token [') (${ VSub_Name index) ('] does not exist'))} ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 1924] ) ] spids: [16777215 1943] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (BracedVarSub token: <VSub_Name VARIABLES_VALUES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name index)})) spids: [1947 1954] ) } spids: [1946] ) ] spids: [1946] ) ] spids: [1858] ) spids: [1849 1857] ) (FuncDef name: '_variable::value_p' body: (BraceGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_At '@'))}) (C {(echo)} {(DQ ($ VSub_Name '$RESULT'))}) ] spids: [1968] ) spids: [1959 1967] ) (FuncDef name: 'variable::debug' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [2006] ) ] spids: [2004] ) (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: [2026] ) ] spids: [2024] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(functionExists)} {(DQ ('variable::') (${ VSub_Name type) ('::debug'))}) terminator: <Op_Semi ';'> ) ] action: [ (C {(eval)} {(DQ ('variable::') (${ VSub_Name type) ('::debug ') (${ VSub_Name token))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2061] ) ] spids: [2061] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2044] ) ] spids: [16777215 2068] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_z child: { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name type)})) spids: [2079 2086] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug) (Lit_Other ':') (Lit_Other ':') (simple) } {($ VSub_Name '$token')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2105] ) ] spids: [2105] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2091] ) ] spids: [16777215 2112] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:actualSuperTypes) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$type')})) spids: [2122 2127] ) } ] ) } spids: [2120] ) ] spids: [2116] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:superType) op:Equal spids:[2133])] spids: [2131] ) (ForEach iter_name: superType iter_words: [ { (DQ (BracedVarSub token: <VSub_Name actualSuperTypes> bracket_op: (WholeArray op_id:Lit_At) spids: [2143 2148] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(functionExists)} {(DQ ('variable::') (${ VSub_Name superType) ('::debug'))} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(eval)} { (DQ ('variable::') (${ VSub_Name superType) ('::debug ') (${ VSub_Name token) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2185] ) ] spids: [2185] ) (ControlFlow token: <ControlFlow_Return return> ) ] spids: [16777215 2168] ) ] spids: [16777215 2192] ) ] spids: [2152 2195] ) spids: [2141 2150] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug) (Lit_Other ':') (Lit_Other ':') (simple) } {($ VSub_Name '$token')} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2210] ) ] spids: [2210] ) ] spids: [2001] ) spids: [1992 2000] ) (FuncDef name: 'variable::debug::simple' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [2233] ) ] spids: [2231] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name token))}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:type) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2255] ) ] spids: [2253] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name token))}) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:value) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2277] ) ] spids: [2275] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Name type) (' :: ') (${ VSub_Name value))} spids: [2285] ) ] spids: [2285] ) ] spids: [2228] ) spids: [2216 2227] ) (FuncDef name: 'variable::debug::join' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:joinChar) op: Equal rhs: {(${ VSub_Number 1)} spids: [2316] ) ] spids: [2314] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [2327 2330] ) } right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ )} spids: [2343] ) ] spids: [2343] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2339] ) ] spids: [16777215 2351] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_At '@'> prefix_op: VSub_Pound spids: [2358 2361] ) } right: {(2)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [2373] ) ] spids: [2373] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2370] ) ] spids: [16777215 2384] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:items) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_At '@'> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)})) spids: [2395 2399] ) ) } ] ) } spids: [2392] ) ] spids: [2388] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs:(LhsName name:size) op:Equal spids:[2406]) (assign_pair lhs:(LhsName name:declare) op:Equal spids:[2408]) (assign_pair lhs:(LhsName name:max_index) op:Equal spids:[2410]) ] spids: [2404] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [2413] ) ] spids: [2413] ) (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: [2426 2432] ) } ) ) 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 1)}) ) cond: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:i) right: (ArithVarRef name:max_index) ) update: (BinaryAssign op_id: Arith_PlusEqual left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: { (DQ (${ VSub_Name RESULT) (${ VSub_Name joinChar) (BracedVarSub token: <VSub_Name items> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')})) spids: [2478 2483] ) ) } spids: [2470] ) ] spids: [2470] ) ] spids: [2467 2487] ) ) ] spids: [2311] ) spids: [2299 2310] ) (FuncDef name: 'variable::toSexp' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [2506] ) ] spids: [2504] ) (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: [2525] ) ] spids: [2523] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(functionExists)} {(DQ ('variable::') (${ VSub_Name type) ('::toSexp'))}) terminator: <Op_Semi ';'> ) ] action: [ (C {(eval)} {(DQ ('variable::') (${ VSub_Name type) ('::toSexp ') (${ VSub_Name token))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2560] ) ] spids: [2560] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2543] ) ] spids: [16777215 2567] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_z child: { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name type)})) spids: [2578 2585] ) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {($ VSub_Name '$token')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2601] ) ] spids: [2601] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 2590] ) ] spids: [16777215 2608] ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:actualSuperTypes) op: Equal rhs: { (ArrayLiteralPart words: [ { (BracedVarSub token: <VSub_Name VARIABLES_TYPES> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$type')})) spids: [2618 2623] ) } ] ) } spids: [2616] ) ] spids: [2612] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:superType) op:Equal spids:[2629])] spids: [2627] ) (ForEach iter_name: superType iter_words: [ { (DQ (BracedVarSub token: <VSub_Name actualSuperTypes> bracket_op: (WholeArray op_id:Lit_At) spids: [2639 2644] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(functionExists)} {(DQ ('variable::') (${ VSub_Name superType) ('::toSexp'))} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(eval)} { (DQ ('variable::') (${ VSub_Name superType) ('::toSexp ') (${ VSub_Name token) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2681] ) ] spids: [2681] ) (ControlFlow token: <ControlFlow_Return return> ) ] spids: [16777215 2664] ) ] spids: [16777215 2688] ) ] spids: [2648 2691] ) spids: [2637 2646] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (debug)} {($ VSub_Name '$token')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [2703] ) ] spids: [2703] ) ] spids: [2501] ) spids: [2492 2500] ) (FuncDef name: 'variable::printMetadata' body: (BraceGroup children: [ (C {(stderr)} {(DQ (VARIABLES_METADATA))}) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:keys) op:Equal spids:[2739])] spids: [2737] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keys) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (ForEach iter_name: var iter_words: [ { (DQ (BracedVarSub token: <VSub_Name VARIABLES_METADATA> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [2751 2757] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name '$var'))}) terminator: <Op_Semi ';'> ) ] spids: [2761 2770] ) spids: [2749 2759] ) (C {(sort)} {(-n)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2743 2777] ) } spids: [2742] ) ] spids: [2742] ) (ForEach iter_name: key iter_words: [{(${ VSub_Name keys)}] do_arg_iter: F body: (DoGroup children: [ (C {(stderr)} { (DQ (' [') (${ VSub_Name key) (']=[') (BracedVarSub token: <VSub_Name VARIABLES_METADATA> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name key)})) spids: [2802 2809] ) (']') ) } ) ] spids: [2791 2814] ) spids: [2785 2789] ) (C {(stderr)} {(DQ (VARIABLES_VALUES))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keys) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (ForEach iter_name: var iter_words: [ { (DQ (BracedVarSub token: <VSub_Name VARIABLES_VALUES> prefix_op: VSub_Bang bracket_op: (WholeArray op_id:Lit_At) spids: [2833 2839] ) ) } ] do_arg_iter: F body: (DoGroup children: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name '$var'))}) terminator: <Op_Semi ';'> ) ] spids: [2843 2852] ) spids: [2831 2841] ) (C {(sort)} {(-n)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2825 2859] ) } spids: [2824] ) ] spids: [2824] ) (ForEach iter_name: key iter_words: [{(${ VSub_Name keys)}] do_arg_iter: F body: (DoGroup children: [ (C {(stderr)} { (DQ (' [') (${ VSub_Name key) (']=[') (BracedVarSub token: <VSub_Name VARIABLES_VALUES> bracket_op: (ArrayIndex expr:(ArithWord w:{(${ VSub_Name key)})) spids: [2884 2891] ) (']') ) } ) ] spids: [2873 2896] ) spids: [2867 2871] ) (C {(stderr)} {(DQ ('VARIABLES_INDEX=') (${ VSub_Name VARIABLES_INDEX))}) ] spids: [2727] ) spids: [2718 2726] ) (FuncDef name: 'variable::print' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:token) op: Equal rhs: {($ VSub_Number '$1')} spids: [2925] ) ] spids: [2923] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:indent) op: Equal rhs: {($ VSub_Number '$2')} spids: [2931] ) ] spids: [2929] ) (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: [2946] ) ] spids: [2944] ) (Case to_match: {(${ VSub_Name type)} arms: [ (case_arm pat_list: [{(list)}] action: [ (C {(echo)} { (DQ (${ VSub_Name indent) (${ VSub_Name type) ('(') (${ VSub_Name token) (') :: [') ) } ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(${ VSub_Name token)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare flags: [-a] pairs: [ (assign_pair lhs: (LhsName name:values) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$RESULT')}])} spids: [2995] ) ] spids: [2991] ) (ForEach iter_name: value iter_words: [ { (BracedVarSub token: <VSub_Name values> bracket_op: (WholeArray op_id:Lit_At) spids: [3010 3015] ) } ] do_arg_iter: F body: (DoGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (print)} {(${ VSub_Name value)} {(DQ (${ VSub_Name indent) (' '))} ) ] spids: [3018 3038] ) spids: [3009 3016] ) (C {(echo)} {(DQ (${ VSub_Name indent) (']'))}) ] spids: [2960 2961 3055 16777215] ) (case_arm pat_list: [{(string)}] action: [ (C {(echo)} { (DQ (${ VSub_Name indent) (${ VSub_Name type) ('(') (${ VSub_Name token) (') :: [') (CommandSubPart command_list: (CommandList children: [ (C {(_variable) (Lit_Other ':') (Lit_Other ':') (value_p)} {(${ VSub_Name token)} ) ] ) left_token: <Left_CommandSub '$('> spids: [3076 3085] ) (']') ) } ) ] spids: [3058 3059 3090 16777215] ) (case_arm pat_list: [{(integer)}] action: [ (C {(echo)} { (DQ (${ VSub_Name indent) (${ VSub_Name type) ('(') (${ VSub_Name token) (') :: [') (CommandSubPart command_list: (CommandList children: [ (C {(_variable) (Lit_Other ':') (Lit_Other ':') (value_p)} {(${ VSub_Name token)} ) ] ) left_token: <Left_CommandSub '$('> spids: [3111 3120] ) (']') ) } ) ] spids: [3093 3094 3125 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(stderr)} { (DQ ('Invalid variable type [') (${ VSub_Name type) ('] for token [') (${ VSub_Name token) (']') ) } ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (printMetadata)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [3128 3129 3158 16777215] ) ] spids: [2951 2957 3161] ) ] spids: [2920] ) spids: [2911 2919] ) (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 3184] ) ] spids: [16777215 3189] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:testToken) op:Equal spids:[3194])] spids: [3192] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(atom)} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(string)} {(atom)} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(number)} {(atom)} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (define)} {(integer)} {(number)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(integer)} {(12)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:atomId_1) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [3262] ) ] spids: [3260] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {($ VSub_Name '$atomId_1')}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(integer)} {(DQ ($ VSub_Name '$RESULT'))} {(Type)} {(of)} {(first)} {(atom)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {(DQ (${ VSub_Name atomId_1))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(integer)} {(DQ ($ VSub_Name '$RESULT'))} {(Type)} {(of)} {(first)} {(atom)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$atomId_1')}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(12)} {(DQ ($ VSub_Name '$RESULT'))} {(Value)} {(of)} {(first)} {(atom)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$atomId_1')}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(12)} {(DQ ($ VSub_Name '$RESULT'))} {(Value)} {(of)} {(first)} {(atom)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(string)} {(DQ ('hello there'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:atomId_2) op: Equal rhs: {($ VSub_Name '$RESULT')} spids: [3408] ) ] spids: [3406] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {($ VSub_Name '$atomId_2')}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(string)} {(DQ ($ VSub_Name '$RESULT'))} {(Type)} {(of)} {(second)} {(atom)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$atomId_2')}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('hello there'))} {(DQ ($ VSub_Name '$RESULT'))} {(Value)} {(of)} {(second)} {(atom)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$atomId_1')}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(12)} {(DQ ($ VSub_Name '$RESULT'))} {(Value)} {(of)} {(first)} {(atom)} {(remains)} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(integer)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:testToken) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [3522] ) ] spids: [3522] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {($ VSub_Name '$testToken')}) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (exactlyA)} {(DQ (${ VSub_Name testToken))} {(integer)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(0)} {($ VSub_QMark '$?')} {(DQ ('exactlyA same'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (exactlyA)} {(DQ (${ VSub_Name testToken))} {(number)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('exactlyA super'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (exactlyA)} {(DQ (${ VSub_Name testToken))} {(string)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('exactlyA other'))} ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(number)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:testToken) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [3638] ) ] spids: [3638] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type)} {($ VSub_Name '$testToken')}) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf)} {(DQ (${ VSub_Name testToken))} {(integer)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('number instanceOf integer'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf)} {(DQ (${ VSub_Name testToken))} {(number)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(0)} {($ VSub_QMark '$?')} {(DQ ('number instanceOf number'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf)} {(DQ (${ VSub_Name testToken))} {(atom)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(0)} {($ VSub_QMark '$?')} {(DQ ('number instanceOf atom'))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (type) (Lit_Other ':') (Lit_Other ':') (instanceOf)} {(DQ (${ VSub_Name testToken))} {(string)} ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('number instanceOf string'))} ) (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: [3780 3784] ) } {(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 3806] ) ] spids: [16777215 3815] ) ] )