Invariant means that neither subtype nor supertype can be accepted, the
type has to be exactly that which is declared.
no subtypes hierarchy
shared actual String string
A developer-friendly string representing the instance.
Concatenates the name of the concrete class of the
instance with the hash of the instance. Subclasses
are encouraged to refine this implementation to produce
a more meaningful representation.