(CommandList children: [ (AndOr 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>) ] op_id: Op_DAmp ) (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: [-1 178] ) ] spids: [-1 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: [-1 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>"))}) (C {(exit)} {(1)}) ] spids: [-1 299] ) ] spids: [-1 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) ("]"))}) (C {(exit)} {(1)}) ] spids: [-1 349] ) ] spids: [-1 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: [-1 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:[437442])) } ) (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: [-1 537] ) ] spids: [-1 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: [-1 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>"))}) (C {(exit)} {(1)}) ] spids: [-1 656] ) ] spids: [-1 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:[750755])) } ) (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: [-1 816] ) ] spids: [-1 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>"))}) (C {(exit)} {(1)}) ] spids: [-1 848] ) ] spids: [-1 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) ("]"))}) (C {(exit)} {(1)}) ] spids: [-1 914] ) ] spids: [-1 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:[956961])) } ) (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: [-1 1021] ) ] spids: [-1 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"))} ) (C {(exit)} {(1)}) ] spids: [-1 1065] ) ] spids: [-1 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"))} ) (C {(exit)} {(1)}) ] spids: [-1 1208] ) ] spids: [-1 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) ("]") ) } ) (C {(exit)} {(1)}) ] spids: [-1 1284] ) ] spids: [-1 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: [-1 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: [-1 1438] ) ] spids: [-1 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: [-1 1508] ) ] spids: [-1 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: False 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: [-1 1567] ) ] spids: [-1 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: True ) 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) ("])") ) } ) (C {(exit)} {(1)}) ] spids: [-1 1651] ) ] spids: [-1 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) ("]"))}) (C {(exit)} {(1)}) ] spids: [-1 1759] ) ] spids: [-1 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: [-1 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: [-1 1876] ) ] spids: [-1 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: True ) terminator: <Op_Semi ";"> ) ] action: [ (C {(stderr)} {(DQ ("The variable token [") (${ VSub_Name index) ("] does not exist"))} ) (C {(exit)} {(1)}) ] spids: [-1 1924] ) ] spids: [-1 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: [-1 2044] ) ] spids: [-1 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: [-1 2091] ) ] spids: [-1 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: False 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: [-1 2168] ) ] spids: [-1 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: [-1 2339] ) ] spids: [-1 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: [-1 2370] ) ] spids: [-1 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: [-1 2543] ) ] spids: [-1 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: [-1 2590] ) ] spids: [-1 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: False 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: [-1 2664] ) ] spids: [-1 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: False body: (DoGroup children: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name "$var"))}) terminator: <Op_Semi ";"> ) ] spids: [2761 2770] ) spids: [2749 2759] ) (C {(sort)} {(-n)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [2743 2777] ) } spids: [2742] ) ] spids: [2742] ) (ForEach iter_name: key iter_words: [{(${ VSub_Name keys)}] do_arg_iter: False 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: False body: (DoGroup children: [ (Sentence child: (C {(echo)} {(DQ ($ VSub_Name "$var"))}) terminator: <Op_Semi ";"> ) ] spids: [2843 2852] ) spids: [2831 2841] ) (C {(sort)} {(-n)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [2825 2859] ) } spids: [2824] ) ] spids: [2824] ) (ForEach iter_name: key iter_words: [{(${ VSub_Name keys)}] do_arg_iter: False 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: False 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 -1] ) (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 -1] ) (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 -1] ) (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)}) (C {(exit)} {(1)}) ] spids: [3128 3129 3158 -1] ) ] 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: [-1 3184] ) ] spids: [-1 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 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 "]")} ) ] op_id: Op_DAmp ) terminator: <Op_Semi ";"> ) ] action: [(C {(variable) (Lit_Other ":") (Lit_Other ":") (printMetadata)})] spids: [-1 3806] ) ] spids: [-1 3815] ) ] )