public Env2 OutScope() {
if (this._functionScope.IsNone) {
throw new InvalidProgramException("Isn't in a function. Cannot pop scope.");
}
if (this._functionScope.Value.LocalScopes.IsEmpty) {
throw new InvalidProgramException("No Local scope to pop.");
}
return new Env2(
this._globalSymbolTable,
Option.Some(new FunctionScope(
this._functionScope.Value.FunctionType,
this._functionScope.Value.FunctionParams,
this._functionScope.Value.LocalScopes.Pop()
))
);
}