<nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:dc="http://purl.org/dc/elements/1.1">

   <!-- nt:base commented for example -->
   <nodeType name="nt:base" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <propertyDefinitions>
         <propertyDefinition name="jcr:primaryType" requiredType="Name" autoCreated="true" mandatory="true" onParentVersion="COMPUTE"
            protected="true" multiple="false">
            <valueConstraints /> <!-- ValueConstraints [], it's not null array, it's empty array -->
         </propertyDefinition>
         <propertyDefinition name="jcr:mixinTypes" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COMPUTE"
            protected="true" multiple="true">
            <valueConstraints /> <!-- ValueConstraints [], it's not null array, it's empty array -->
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <nodeType name="nt:unstructured" isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="*" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false"
            multiple="true">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="*" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
      <childNodeDefinitions>
         <childNodeDefinition name="*" defaultPrimaryType="nt:unstructured" autoCreated="false" mandatory="false" onParentVersion="VERSION"
            protected="false" sameNameSiblings="true">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:base</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>
   <nodeType name="nt:hierarchyNode" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:created" requiredType="Date" autoCreated="true" mandatory="false" onParentVersion="INITIALIZE"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="nt:file" isMixin="false" hasOrderableChildNodes="false" primaryItemName="jcr:content">
      <supertypes>
         <supertype>nt:hierarchyNode</supertype>
      </supertypes>
      <childNodeDefinitions>
         <childNodeDefinition name="jcr:content" defaultPrimaryType="" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:base</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>
   <nodeType name="nt:linkedFile" isMixin="false" hasOrderableChildNodes="false" primaryItemName="jcr:content">
      <supertypes>
         <supertype>nt:hierarchyNode</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:content" requiredType="Reference" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="nt:folder" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:hierarchyNode</supertype>
      </supertypes>
      <childNodeDefinitions>
         <childNodeDefinition name="*" defaultPrimaryType="" autoCreated="false" mandatory="false" onParentVersion="VERSION" protected="false"
            sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:hierarchyNode</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>

   <!-- nt:resource depends on mix:referenceable -->
   <nodeType name="mix:referenceable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
      <propertyDefinitions>
         <propertyDefinition name="jcr:uuid" requiredType="String" autoCreated="true" mandatory="true" onParentVersion="INITIALIZE"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="nt:resource" isMixin="false" hasOrderableChildNodes="false" primaryItemName="jcr:data">
      <supertypes>
         <supertype>nt:base</supertype>
         <supertype>mix:referenceable</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:encoding" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:mimeType" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:data" requiredType="Binary" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:lastModified" requiredType="Date" autoCreated="false" mandatory="true" onParentVersion="IGNORE"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <!-- nt:nodeType depends on nt:propertyDefinition, nt:childNodeDefinition -->
   <nodeType name="nt:propertyDefinition" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:name" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:autoCreated" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:mandatory" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:onParentVersion" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints>
               <valueConstraint>COPY</valueConstraint>
               <valueConstraint>VERSION</valueConstraint>
               <valueConstraint>INITIALIZE</valueConstraint>
               <valueConstraint>COMPUTE</valueConstraint>
               <valueConstraint>IGNORE</valueConstraint>
               <valueConstraint>ABORT</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:protected" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:requiredType" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints>
               <valueConstraint>STRING</valueConstraint>
               <valueConstraint>BINARY</valueConstraint>
               <valueConstraint>LONG</valueConstraint>
               <valueConstraint>DOUBLE</valueConstraint>
               <valueConstraint>BOOLEAN</valueConstraint>
               <valueConstraint>DATE</valueConstraint>
               <valueConstraint>NAME</valueConstraint>
               <valueConstraint>PATH</valueConstraint>
               <valueConstraint>REFERENCE</valueConstraint>
               <valueConstraint>UNDEFINED</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:valueConstraints" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="true">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:defaultValues" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="true">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:multiple" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="nt:childNodeDefinition" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:name" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:autoCreated" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:mandatory" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:onParentVersion" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints>
               <valueConstraint>COPY</valueConstraint>
               <valueConstraint>VERSION</valueConstraint>
               <valueConstraint>INITIALIZE</valueConstraint>
               <valueConstraint>COMPUTE</valueConstraint>
               <valueConstraint>IGNORE</valueConstraint>
               <valueConstraint>ABORT</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:protected" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:requiredPrimaryTypes" requiredType="Name" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="true">
            <valueConstraints />
            <defaultValues>
               <defaultValue>nt:base</defaultValue>
            </defaultValues>
         </propertyDefinition>
         <propertyDefinition name="jcr:defaultPrimaryType" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:sameNameSiblings" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="nt:nodeType" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:nodeTypeName" requiredType="Name" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:supertypes" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="true">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:isMixin" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:hasOrderableChildNodes" requiredType="Boolean" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:primaryItemName" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
      <childNodeDefinitions>
         <childNodeDefinition name="jcr:propertyDefinition" defaultPrimaryType="nt:propertyDefinition" autoCreated="false" mandatory="false"
            onParentVersion="VERSION" protected="false" sameNameSiblings="true">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:propertyDefinition</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
         <childNodeDefinition name="jcr:childNodeDefinition" defaultPrimaryType="nt:childNodeDefinition" autoCreated="false" mandatory="false"
            onParentVersion="VERSION" protected="false" sameNameSiblings="true">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:childNodeDefinition</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>

   <nodeType name="nt:frozenNode" isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
         <supertype>mix:referenceable</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:frozenPrimaryType" requiredType="Name" autoCreated="true" mandatory="true" onParentVersion="ABORT"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:frozenMixinTypes" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" multiple="true">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:frozenUuid" requiredType="String" autoCreated="true" mandatory="true" onParentVersion="ABORT"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="*" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="ABORT" protected="true"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="*" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="ABORT" protected="true"
            multiple="true">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
      <childNodeDefinitions>
         <childNodeDefinition name="*" defaultPrimaryType="" autoCreated="false" mandatory="false" onParentVersion="ABORT" protected="true"
            sameNameSiblings="true">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:base</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>
   <nodeType name="nt:version" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
         <supertype>mix:referenceable</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:created" requiredType="Date" autoCreated="true" mandatory="true" onParentVersion="ABORT" protected="true"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:predecessors" requiredType="Reference" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" multiple="true">
            <valueConstraints>
               <valueConstraint>nt:version</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:successors" requiredType="Reference" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" multiple="true">
            <valueConstraints>
               <valueConstraint>nt:version</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
      </propertyDefinitions>
      <childNodeDefinitions>
         <childNodeDefinition name="jcr:frozenNode" defaultPrimaryType="" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:frozenNode</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>
   <nodeType name="nt:versionLabels" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="*" requiredType="Reference" autoCreated="false" mandatory="false" onParentVersion="ABORT" protected="true"
            multiple="false">
            <valueConstraints>
               <valueConstraint>nt:version</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <nodeType name="nt:versionHistory" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
         <supertype>mix:referenceable</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:versionableUuid" requiredType="String" autoCreated="true" mandatory="true" onParentVersion="ABORT"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
      <childNodeDefinitions>
         <childNodeDefinition name="jcr:rootVersion" defaultPrimaryType="nt:version" autoCreated="true" mandatory="true" onParentVersion="ABORT"
            protected="true" sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:version</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
         <childNodeDefinition name="jcr:versionLabels" defaultPrimaryType="nt:versionLabels" autoCreated="true" mandatory="true"
            onParentVersion="ABORT" protected="true" sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:versionLabels</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
         <childNodeDefinition name="*" defaultPrimaryType="nt:version" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:version</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>
   <nodeType name="nt:versionedChild" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:childVersionHistory" requiredType="Reference" autoCreated="true" mandatory="true" onParentVersion="ABORT"
            protected="true" multiple="false">
            <valueConstraints>
               <valueConstraint>nt:versionHistory</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="nt:query" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:statement" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:language" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <nodeType name="mix:lockable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
      <propertyDefinitions>
         <propertyDefinition name="jcr:lockOwner" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="IGNORE"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:lockIsDeep" requiredType="Boolean" autoCreated="false" mandatory="false" onParentVersion="IGNORE"
            protected="true" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>
   <nodeType name="mix:versionable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>mix:referenceable</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:versionHistory" requiredType="Reference" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="true" multiple="false">
            <valueConstraints>
               <valueConstraint>nt:versionHistory</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:baseVersion" requiredType="Reference" autoCreated="false" mandatory="true" onParentVersion="IGNORE"
            protected="true" multiple="false">
            <valueConstraints>
               <valueConstraint>nt:version</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:isCheckedOut" requiredType="Boolean" autoCreated="true" mandatory="true" onParentVersion="IGNORE"
            protected="true" multiple="false">
            <valueConstraints />
            <defaultValues>
               <defaultValue>true</defaultValue>
            </defaultValues>
         </propertyDefinition>
         <propertyDefinition name="jcr:predecessors" requiredType="Reference" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="true" multiple="true">
            <valueConstraints>
               <valueConstraint>nt:version</valueConstraint>
            </valueConstraints>
         </propertyDefinition>
         <propertyDefinition name="jcr:mergeFailed" requiredType="Reference" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" multiple="true">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <!-- eXo impl nodetypes -->

   <nodeType name="exo:owneable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
      <propertyDefinitions>
         <propertyDefinition name="exo:owner" requiredType="String" autoCreated="true" mandatory="true" onParentVersion="COPY" protected="true"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <nodeType name="exo:privilegeable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
      <propertyDefinitions>
         <propertyDefinition name="exo:permissions" requiredType="Permission" autoCreated="true" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="true">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <nodeType name="exo:accessControllable" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>exo:owneable</supertype>
         <supertype>exo:privilegeable</supertype>
      </supertypes>
   </nodeType>


   <!--
      nodeType name="exo:accessControllable" isMixin="true" hasOrderableChildNodes="false" primaryItemName=""> <propertyDefinitions> <propertyDefinition
      name="exo:owner" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="true" multiple="false"> <valueConstraints/>
      </propertyDefinition> <propertyDefinition name="exo:permissions" requiredType="Permission" autoCreated="false" mandatory="true" onParentVersion="COPY"
      protected="true" multiple="true"> <valueConstraints/> </propertyDefinition> </propertyDefinitions> </nodeType
   -->

   <nodeType name="exo:namespace" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="exo:prefix" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="true"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="exo:uri" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="true"
            multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
   </nodeType>

   <nodeType name="exo:versionStorage" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <childNodeDefinitions>
         <childNodeDefinition name="*" defaultPrimaryType="nt:versionHistory" autoCreated="false" mandatory="false" onParentVersion="ABORT"
            protected="true" sameNameSiblings="false">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:versionHistory</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>

   <nodeType name="exo:mockNodeType" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
      <supertypes>
         <supertype>nt:base</supertype>
      </supertypes>
      <propertyDefinitions>
         <propertyDefinition name="jcr:nodeTypeName" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
         <propertyDefinition name="jcr:supertypes" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY"
            protected="false" multiple="false">
            <valueConstraints />
         </propertyDefinition>
      </propertyDefinitions>
      <childNodeDefinitions>
         <childNodeDefinition name="jcr:childNodeDefinition" defaultPrimaryType="nt:childNodeDefinition" autoCreated="false" mandatory="false"
            onParentVersion="VERSION" protected="false" sameNameSiblings="true">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:childNodeDefinition</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
         <childNodeDefinition name="jcr:childNodeDefinition" defaultPrimaryType="nt:childNodeDefinition" autoCreated="false" mandatory="false"
            onParentVersion="VERSION" protected="false" sameNameSiblings="true">
            <requiredPrimaryTypes>
               <requiredPrimaryType>nt:childNodeDefinition</requiredPrimaryType>
            </requiredPrimaryTypes>
         </childNodeDefinition>
      </childNodeDefinitions>
   </nodeType>

</nodeTypes>