Returns a copy of this state suitable for creating state transitions. This copy may be a shallow copy
or deep copy and is domain specific. The State implementation may indicate its copy level with the
DeepCopyState or ShallowCopyState annotations. If it is a shallow copy, you should not *directly*
modify any fields of a copied state without copying the fields first, or it could contaminate the state from
which the copy was made. Alternatively, use the MutableState.set(Object, Object) method to modify
ShallowCopyState copied states,
which for ShallowCopyState instances should perform a safe copy-on-write operation.