Type versioning. A more general term is schema or type evolution. This idea would be applicable if a type A exists, and someone later wants to create a type A' which is intended to be like A but not A and not related in a typed manner . It is important to note that A' and A are completely different types with no way to reason the delta between them. If one wanted some type based on A, they'd create a subclass of A and specialize accordingly. The practical uses of schema versioning is usually to create a completely new set of types which offer a different set of semantics than the previous version, so this is more of a way of labeling schemas.