public Value Find(string name, Value newval = null)
{
if (Variables.ContainsKey(name))
{
if (newval != null)
Variables[name] = newval;
return Variables[name];
}
else
if (Parent == null)
throw new KeyNotFoundException("Unknown variable: " + name);
else
return Parent.Find(name, newval);
}