A state that can be stored in the StateMachine. State must override equals and hashCode to be used as data objects.