<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>