sclass VarContext { VarContext parent; MapSO vars; *() {} *(VarContext *parent) {} O get(S name) { if (containsKey(vars, name)) ret mapGet(vars, name); if (parent != null) ret parent.get(name); null; } void set aka put(S name, O value) { vars = putOrCreate(vars, name, value); } void unset(S name) { remove(vars, name); } void printMe { pnl(vars); print(+parent); } // mechanism for returning from a script settable O exitFromScript; settable O returnValue; bool exiting() { ping(); ret exitFromScript != null; } }