An implementation may be extended to add other subtype
relationships between the specified types, as long as they do
not violate the type relationships and disjointness requirements
specified here. An implementation may define additional types
that are subtypes or supertypes of any
specified types, as long as each additional type is
a subtype of typet and a supertype of typenil and the disjointness requirements
are not violated.