static LaxExpression EvaluateAssignment(Assignment s) { var val = Evaluate(s.Right); if (val == s.Right) return s; //no optimization return s.WithOperands(s.Left, val); }