Interface IValue

A value represents the value of a variable.
A value representing a complex data structure contains variables.

An implementation may choose to re-use or discard
values on iterative thread suspensions. Clients
cannot assume that values are identical or equal across
iterative thread suspensions and must check for equality on iterative
suspensions if they wish to re-use the objects.

An implementation that preserves equality
across iterative suspensions may display more desirable behavior in
some clients. For example, if variables are preserved
while stepping, a UI client would be able to update the UI incrementally,
rather than collapse and redraw the entire list or tree.