An implementation may extend the definition of any predefined node type by adding supertypes to those defined in this specification. These additional supertypes may be either predefined mixin node types or implementation-specific mixin or primary node types.
For example, a repository may require that all nodes of type nt:file be, additionally, mix:versionable. In such a repository the definition of nt:file, when introspected, would report an additional supertype of mix:versionable.
The hierarchy above and the definitions below, therefore, reflect the minimal set of supertypes for each predefined node type.
Note that this extension mechanism is distinct from the automatic addition of mixin types that may be done on node creation in level 2 (see 7.4.4 Automatic Addition and Removal of Mixins). Though the two features may both be employed in the same repository, they differ in that one affects the actual hierarchy of the supported node types, while the other works on a node-by-node basis.