public class ExpressionState
An ExpressionState is for maintaining per-expression-evaluation state, any changes to
it are not seen by other expressions but it gives a place to hold local variables and
for component expressions in a compound expression to communicate state. This is in
contrast to the EvaluationContext, which is shared amongst expression evaluations, and
any changes to it will be seen by other expressions or any code that chooses to ask
questions of the context.
It also acts as a place for to define common utility routines that the various AST
nodes might need.