A state that implements this interface implies that it itself is immutable and the ObjectInstances it uses are immutable.
An immutable state is one that doesn't allow you to make modifications to its underlying data
structure, by using the getObject, setValue paradigm. Any changes to a state will result in a copy that reflects
those changes. The original state will not be modified.