Currently, we do not differentiate between setting a SpEL variable programmatically versus within an expression even though the two actions are semantically different.

We should introduce infrastructure to differentiate between programmatically setting a variable in an EvaluationContext versus the assignment of a variable within a SpEL expression using the assignment operator (=). In addition, we should also disable variable assignment within expressions when using the SimpleEvaluationContext.