public object Evaluate(Context context, bool withvars = false)
{
if (!context.HasValue(this.variable.Name))
if (!withvars)
throw new Exception(string.Format("variable '{0}' is unbound", this.variable.Name));
else
return this.variable;
return context.GetValue(this.variable.Name);
}