(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name ENVIRONMENT_SH> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(isset)}) spids: [9 13] ) } {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:ENVIRONMENT_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: [59 64] ) (/common.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [69 74] ) (/variables.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [79 84] ) (/variables.arraylist.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [89 94] ) (/variables.linkedlist.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [99 104] ) (/variables.stack.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [109 114] ) (/variables.queue.sh) } ) (C {(.)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ('*')}) spids: [119 124] ) (/variables.map.sh) } ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:ENVIRONMENT_DEBUG) op:Equal rhs:{(0)} spids:[133])] spids: [129] ) (FuncDef name: 'environment::new' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::new ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 195] ) ] spids: [16777215 208] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (new) } ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [222] ) ] spids: [222] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (new)} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (prepend) } {(DQ (${ VSub_Name env))} {(DQ (${ VSub_Name RESULT))} ) ] spids: [177] ) spids: [168 176] ) (FuncDef name: 'environment::pushScope' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::pushScope ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 311] ) ] spids: [16777215 324] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [330] ) ] spids: [328] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (new)} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (prepend) } {(DQ (${ VSub_Name env))} {(DQ (${ VSub_Name RESULT))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [370] ) ] spids: [370] ) ] spids: [293] ) spids: [284 292] ) (FuncDef name: 'environment::popScope' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::popScope ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 434] ) ] spids: [16777215 447] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (rest) } {(DQ ($ VSub_Number '$1'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [464] ) ] spids: [464] ) ] spids: [416] ) spids: [407 415] ) (FuncDef name: 'environment::hasValue' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::getValue ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 516] ) ] spids: [16777215 529] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [535] ) ] spids: [533] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [545] ) ] spids: [543] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:scope) op:Equal spids:[555])] spids: [553] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (${ VSub_Name name))} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [576] ) ] spids: [574] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ (${ VSub_Name env))} spids: [587] ) ] spids: [585] ) (While cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {(DQ (${ VSub_Name currentEnv))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (first) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scope) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [633] ) ] spids: [633] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c) } {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name name))} ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 665] ) ] spids: [16777215 673] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (rest) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ ($ VSub_Name '$RESULT'))} spids: [692] ) ] spids: [692] ) ] spids: [615 698] ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [498] ) spids: [489 497] ) (FuncDef name: 'environment::getValue' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::getValue ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 754] ) ] spids: [16777215 767] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [773] ) ] spids: [771] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [783] ) ] spids: [781] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:scope) op:Equal spids:[793])] spids: [791] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ (${ VSub_Name name))} ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [814] ) ] spids: [812] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ (${ VSub_Name env))} spids: [825] ) ] spids: [823] ) (While cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {(DQ (${ VSub_Name currentEnv))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (first) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scope) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [871] ) ] spids: [871] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c) } {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name name))} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (get) } {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name name))} ) (ControlFlow token: <ControlFlow_Return return> ) ] spids: [16777215 903] ) ] spids: [16777215 930] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (rest) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ ($ VSub_Name '$RESULT'))} spids: [949] ) ] spids: [949] ) ] spids: [853 955] ) ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {($ VSub_Name '$name')}) (C {(stderr)} { (DQ ('Variable [') (${ VSub_Name name) ('=') (${ VSub_Name RESULT) ('] not found in current environment') ) } ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [736] ) spids: [727 735] ) (FuncDef name: 'environment::setVariable' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::setVariable ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 1043] ) ] spids: [16777215 1056] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1062] ) ] spids: [1060] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [1072] ) ] spids: [1070] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:valueToken) op: Equal rhs: {(DQ (${ VSub_Number 3))} spids: [1082] ) ] spids: [1080] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (first) } {(DQ (${ VSub_Name env))} ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:scope) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1108] ) ] spids: [1106] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:returnValue) op:Equal spids:[1118])] spids: [1116] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c) } {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name keyToken))} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:returnValue) op: Equal rhs: {(0)} spids: [1149] ) ] spids: [1149] ) ] spids: [16777215 1146] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:returnValue) op: Equal rhs: {(1)} spids: [1156] ) ] spids: [1156] ) ] spids: [1153 1160] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (put)} {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name keyToken))} {(DQ (${ VSub_Name valueToken))} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RESULT) op:Equal rhs:{(DQ )} spids:[1191])] spids: [1191] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$returnValue')} ) ] spids: [1025] ) spids: [1016 1024] ) (FuncDef name: 'environment::setOrReplaceVariable' body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(${ VSub_Name ENVIRONMENT_DEBUG)} right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Sentence child: (C {(stderr)} {(DQ ('environment::setOrReplaceVariable ') (${ VSub_At '@'))}) terminator: <Op_Semi ';'> ) ] spids: [16777215 1249] ) ] spids: [16777215 1262] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:env) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1268] ) ] spids: [1266] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:keyToken) op: Equal rhs: {(DQ (${ VSub_Number 2))} spids: [1278] ) ] spids: [1276] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:valueToken) op: Equal rhs: {(DQ (${ VSub_Number 3))} spids: [1288] ) ] spids: [1286] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:scope) op:Equal spids:[1298])] spids: [1296] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ (${ VSub_Name env))} spids: [1304] ) ] spids: [1302] ) (While cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {(DQ (${ VSub_Name currentEnv))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (first) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scope) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1350] ) ] spids: [1350] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (containsKey_c) } {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name keyToken))} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (put) } {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name keyToken))} {(DQ (${ VSub_Name valueToken))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RESULT) op: Equal rhs: {(DQ )} spids: [1412] ) ] spids: [1412] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [16777215 1382] ) ] spids: [16777215 1422] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (rest) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ ($ VSub_Name '$RESULT'))} spids: [1441] ) ] spids: [1441] ) ] spids: [1332 1447] ) ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (first) } {(DQ (${ VSub_Name env))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:scope) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1470] ) ] spids: [1470] ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (put)} {(DQ (${ VSub_Name scope))} {(DQ (${ VSub_Name keyToken))} {(DQ (${ VSub_Name valueToken))} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RESULT) op:Equal rhs:{(DQ )} spids:[1505])] spids: [1505] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [1231] ) spids: [1222 1230] ) (FuncDef name: 'environment::print' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ (${ VSub_Number 1))} spids: [1531] ) ] spids: [1529] ) (C {(echo)} {(DQ ('Environment [') (${ VSub_Name currentEnv) (']'))}) (While cond: [ (Sentence child: (Pipeline children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (isEmpty_c) } {(DQ (${ VSub_Name currentEnv))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (first) } {(DQ (${ VSub_Name currentEnv))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (Map) (Lit_Other ':') (Lit_Other ':') (print) } {(DQ (${ VSub_Name RESULT))} ) (C {(variable) (Lit_Other ':') (Lit_Other ':') (LinkedList) (Lit_Other ':') (Lit_Other ':') (rest) } {(DQ (${ VSub_Name currentEnv))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:currentEnv) op: Equal rhs: {(DQ ($ VSub_Name '$RESULT'))} spids: [1621] ) ] spids: [1621] ) ] spids: [1572 1627] ) ) ] spids: [1526] ) spids: [1517 1525] ) (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 1649] ) ] spids: [16777215 1654] ) (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:[1670])] spids: [1670] ) (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: [1688] ) ] spids: [1688] ) (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:[1706])] spids: [1706] ) (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: [1724] ) ] spids: [1724] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('key three'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:key3) op:Equal rhs:{(${ VSub_Name RESULT)} spids:[1742])] spids: [1742] ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (new)} {(String)} {(DQ ('value three'))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:value3) op: Equal rhs: {(${ VSub_Name RESULT)} spids: [1760] ) ] spids: [1760] ) (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: [1778] ) ] spids: [1778] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:env1) op:Equal spids:[1785])] spids: [1783] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:env2) op:Equal spids:[1789])] spids: [1787] ) (Assignment keyword: Assign_Declare pairs: [(assign_pair lhs:(LhsName name:env3) op:Equal spids:[1793])] spids: [1791] ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (new)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env1) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [1803] ) ] spids: [1803] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key1')} {($ VSub_Name '$value1')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value one'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Single variable'))} ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key2')} {($ VSub_Name '$value2')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value one'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Multiple variables, first'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key2')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value two'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Multiple variables, second'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (new)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env1) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2023] ) ] spids: [2023] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key1')} {($ VSub_Name '$value1')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (pushScope)} {(DQ (${ VSub_Name env1))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env2) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2058] ) ] spids: [2058] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key2')} {($ VSub_Name '$value2')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key2')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value two'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Second scope'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value one'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Variable from first scope'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (popScope)} {(DQ (${ VSub_Name env2))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env3) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2205] ) ] spids: [2205] ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env3))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value one'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Variable from first scope post pop'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (hasValue)} {(DQ (${ VSub_Name env3))} {($ VSub_Name '$key2')} ) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('Variable from second scope after we popped it'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (new)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env1) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2316] ) ] spids: [2316] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setOrReplaceVariable)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key1')} {($ VSub_Name '$value1')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (pushScope)} {(DQ (${ VSub_Name env1))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env2) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2351] ) ] spids: [2351] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setOrReplaceVariable)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key2')} {($ VSub_Name '$value2')} ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setOrReplaceVariable)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key1')} {($ VSub_Name '$value3')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key2')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value two'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Second scope'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value three'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Variable from first scope'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (popScope)} {(DQ (${ VSub_Name env2))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env3) op: Equal rhs: {(DQ (${ VSub_Name RESULT))} spids: [2513] ) ] spids: [2513] ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env3))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value three'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('Variable from first scope post pop'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (hasValue)} {(DQ (${ VSub_Name env3))} {($ VSub_Name '$key2')} ) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(1)} {($ VSub_QMark '$?')} {(DQ ('Variable from second scope after we popped it'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (new)}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env1) op: Equal rhs: {(DQ ($ VSub_Name '$RESULT'))} spids: [2626] ) ] spids: [2626] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {($ VSub_Name '$env1')} {($ VSub_Name '$key1')} {($ VSub_Name '$value1')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (pushScope)} {(DQ (${ VSub_Name env1))}) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:env2) op: Equal rhs: {(DQ ($ VSub_Name '$RESULT'))} spids: [2655] ) ] spids: [2655] ) (C {(environment) (Lit_Other ':') (Lit_Other ':') (setVariable)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key1')} {($ VSub_Name '$value2')} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env1))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value one'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('setVariable, original env'))} ) (Sentence child: (C {(environment) (Lit_Other ':') (Lit_Other ':') (getValue)} {(DQ (${ VSub_Name env2))} {($ VSub_Name '$key1')} ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(variable) (Lit_Other ':') (Lit_Other ':') (value)} {(DQ (${ VSub_Name RESULT))}) terminator: <Op_Semi ';'> ) (C {(assert) (Lit_Other ':') (Lit_Other ':') (equals)} {(DQ ('value two'))} {(DQ (${ VSub_Name RESULT))} {(DQ ('setVariable, new env'))} ) (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: [2799 2803] ) } {(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 2825] ) ] spids: [16777215 2834] ) ] )