<?xml version="1.0" encoding="UTF-8"?>
<gmfgen:GenEditorGenerator
    xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:gmfgen="http://www.eclipse.org/gmf/2009/GenModel"
    copyrightText="">
  <diagram
      visualID="1000"
      editPartClassName="PackageEditPart"
      itemSemanticEditPolicyClassName="PackageItemSemanticEditPolicy"
      canonicalEditPolicyClassName="PackageCanonicalEditPolicy"
      iconProviderPriority="Low"
      validationProviderPriority="Low"
      validationEnabled="true"
      validationDecorators="true"
      liveValidationUIFeedback="true">
    <diagramRunTimeClass
        href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType
        xsi:type="gmfgen:MetamodelType"
        editHelperClassName="PackageEditHelper"/>
    <viewmap
        xsi:type="gmfgen:FigureViewmap"
        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <containsShortcutsTo>subdiagrams</containsShortcutsTo>
    <shortcutsProvidedFor>subdiagrams</shortcutsProvidedFor>
    <domainDiagramElement
        href="subdiagrams.genmodel#//subdiagrams/Package"/>
    <childNodes
        visualID="3001"
        editPartClassName="Package3EditPart"
        itemSemanticEditPolicyClassName="Package3ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="Package3CanonicalEditPolicy"
        compartments="//@diagram/@compartments.1"
        graphicalNodeEditPolicyClassName="Package2GraphicalNodeEditPolicy"
        createCommandClassName="Package2CreateCommand"
        containers="//@diagram/@compartments.1 //@diagram/@compartments.0">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="PackageFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class PackageFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigurePackageLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fPackageContentsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public PackageFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigurePackageLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;&#xA;fFigurePackageLabelFigure.setText(&quot;Package&quot;);&#xA;fFigurePackageLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigurePackageLabelFigure);&#xA;&#xA;&#xA;&#xA;fPackageContentsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;&#xA;fPackageContentsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fPackageContentsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigurePackageLabelFigure() {&#xA;&#x9;&#x9;return fFigurePackageLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getPackageContentsCompartmentFigure() {&#xA;&#x9;&#x9;return fPackageContentsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"/>
      <modelFacet>
        <metaClass
            href="subdiagrams.genmodel#//subdiagrams/Package"/>
        <containmentMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
        <childMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
      </modelFacet>
      <labels
          visualID="5004"
          editPartClassName="PackageName2EditPart"
          itemSemanticEditPolicyClassName="PackageName2ItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigurePackageLabelFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="subdiagrams.genmodel#//subdiagrams/Package/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        visualID="3002"
        editPartClassName="Clazz2EditPart"
        itemSemanticEditPolicyClassName="Clazz2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="Clazz2CanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="Clazz2GraphicalNodeEditPolicy"
        createCommandClassName="Clazz2CreateCommand"
        containers="//@diagram/@compartments.1 //@diagram/@compartments.0">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ClazzEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ClazzFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ClazzFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureClazzLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ClazzFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureClazzLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;&#xA;fFigureClazzLabelFigure.setText(&quot;Clazz&quot;);&#xA;&#xA;this.add(fFigureClazzLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureClazzLabelFigure() {&#xA;&#x9;&#x9;return fFigureClazzLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet>
        <metaClass
            href="subdiagrams.genmodel#//subdiagrams/Clazz"/>
        <containmentMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
        <childMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
      </modelFacet>
      <labels
          visualID="5003"
          editPartClassName="ClazzName2EditPart"
          itemSemanticEditPolicyClassName="ClazzName2ItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureClazzLabelFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="subdiagrams.genmodel#//subdiagrams/Clazz/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <topLevelNodes
        visualID="2003"
        editPartClassName="Package2EditPart"
        itemSemanticEditPolicyClassName="Package2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="Package2CanonicalEditPolicy"
        compartments="//@diagram/@compartments.0"
        graphicalNodeEditPolicyClassName="PackageGraphicalNodeEditPolicy"
        createCommandClassName="PackageCreateCommand">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="PackageFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class PackageFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigurePackageLabelFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fPackageContentsCompartmentFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public PackageFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigurePackageLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;&#xA;fFigurePackageLabelFigure.setText(&quot;Package&quot;);&#xA;fFigurePackageLabelFigure.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10000)&#xA;, getMapMode().DPtoLP(50)&#xA;));&#xA;&#xA;this.add(fFigurePackageLabelFigure);&#xA;&#xA;&#xA;&#xA;fPackageContentsCompartmentFigure = new org.eclipse.draw2d.RectangleFigure();&#xA;&#xA;fPackageContentsCompartmentFigure.setOutline(false);&#xA;&#xA;this.add(fPackageContentsCompartmentFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigurePackageLabelFigure() {&#xA;&#x9;&#x9;return fFigurePackageLabelFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getPackageContentsCompartmentFigure() {&#xA;&#x9;&#x9;return fPackageContentsCompartmentFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"/>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"/>
      <modelFacet>
        <metaClass
            href="subdiagrams.genmodel#//subdiagrams/Package"/>
        <containmentMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
        <childMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
      </modelFacet>
      <labels
          visualID="5005"
          editPartClassName="PackageNameEditPart"
          itemSemanticEditPolicyClassName="PackageNameItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigurePackageLabelFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="subdiagrams.genmodel#//subdiagrams/Package/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2004"
        editPartClassName="ClazzEditPart"
        itemSemanticEditPolicyClassName="ClazzItemSemanticEditPolicy"
        canonicalEditPolicyClassName="ClazzCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ClazzGraphicalNodeEditPolicy"
        createCommandClassName="ClazzCreateCommand">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@childNodes.1/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ClazzFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ClazzFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureClazzLabelFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ClazzFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(8)&#xA;, getMapMode().DPtoLP(8)&#xA;));&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;, getMapMode().DPtoLP(5)&#xA;));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureClazzLabelFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;&#xA;fFigureClazzLabelFigure.setText(&quot;Clazz&quot;);&#xA;&#xA;this.add(fFigureClazzLabelFigure);&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureClazzLabelFigure() {&#xA;&#x9;&#x9;return fFigureClazzLabelFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet>
        <metaClass
            href="subdiagrams.genmodel#//subdiagrams/Clazz"/>
        <containmentMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
        <childMetaFeature
            href="subdiagrams.genmodel#//subdiagrams/Package/contents"/>
      </modelFacet>
      <labels
          visualID="5006"
          editPartClassName="ClazzNameEditPart"
          itemSemanticEditPolicyClassName="ClazzNameItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureClazzLabelFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="subdiagrams.genmodel#//subdiagrams/Clazz/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <compartments
        visualID="7001"
        editPartClassName="PackagePackageContentsCompartmentEditPart"
        itemSemanticEditPolicyClassName="PackagePackageContentsCompartmentItemSemanticEditPolicy"
        canonicalEditPolicyClassName="PackagePackageContentsCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"
        title="PackageContentsCompartment"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.0"
        listLayout="false">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getPackageContentsCompartmentFigure"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7002"
        editPartClassName="PackagePackageContentsCompartment2EditPart"
        itemSemanticEditPolicyClassName="PackagePackageContentsCompartment2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="PackagePackageContentsCompartment2CanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.1"
        title="PackageContentsCompartment"
        needsTitle="false"
        node="//@diagram/@childNodes.0"
        listLayout="false">
      <diagramRunTimeClass
          href="platform:/plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getPackageContentsCompartmentFigure"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <palette>
      <groups
          title="Objects"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Clazz"
            description="Create new Clazz"
            genNodes="//@diagram/@childNodes.1 //@diagram/@topLevelNodes.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Package"
            description="Create new Package"
            genNodes="//@diagram/@topLevelNodes.0 //@diagram/@childNodes.0"/>
      </groups>
    </palette>
    <preferencePages
        xsi:type="gmfgen:GenStandardPreferencePage"
        iD="org.eclipse.epsilon.eugenia.examples.subdiagrams.diagram.general"
        name="Subdiagrams Diagram">
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.subdiagrams.diagram.appearance"
          name="Appearance"
          kind="Appearance"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.subdiagrams.diagram.connections"
          name="Connections"
          kind="Connections"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.subdiagrams.diagram.printing"
          name="Printing"
          kind="Printing"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.epsilon.eugenia.examples.subdiagrams.diagram.rulersAndGrid"
          name="Rulers And Grid"
          kind="RulersAndGrid"/>
    </preferencePages>
  </diagram>
  <plugin
      printingEnabled="true">
    <requiredPlugins>org.eclipse.gmf.tooling.runtime</requiredPlugins>
    <requiredPlugins>org.eclipse.draw2d</requiredPlugins>
  </plugin>
  <editor/>
  <navigator>
    <childReferences
        child="//@diagram"/>
    <childReferences
        parent="//@diagram/@childNodes.0"
        child="//@diagram/@childNodes.0"/>
    <childReferences
        parent="//@diagram/@childNodes.0"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@childNodes.0"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.0"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.1"/>
  </navigator>
  <diagramUpdater/>
  <propertySheet>
    <tabs
        xsi:type="gmfgen:GenStandardPropertyTab"
        iD="appearance"/>
    <tabs
        xsi:type="gmfgen:GenStandardPropertyTab"
        iD="diagram"/>
    <tabs
        xsi:type="gmfgen:GenCustomPropertyTab"
        iD="domain"
        label="Core">
      <filter
          xsi:type="gmfgen:TypeTabFilter">
        <types>org.eclipse.gmf.runtime.notation.View</types>
        <types>org.eclipse.gef.EditPart</types>
        <generatedTypes>abstractNavigatorItem</generatedTypes>
      </filter>
    </tabs>
  </propertySheet>
  <domainGenModel
      href="subdiagrams.genmodel#/"/>
  <labelParsers
      extensibleViaService="true">
    <implementations
        xsi:type="gmfgen:PredefinedParser"
        uses="//@diagram/@childNodes.1/@labels.0/@modelFacet //@diagram/@childNodes.0/@labels.0/@modelFacet //@diagram/@topLevelNodes.0/@labels.0/@modelFacet //@diagram/@topLevelNodes.1/@labels.0/@modelFacet"/>
  </labelParsers>
  <contextMenus
      context="//@diagram">
    <items
        xsi:type="gmfgen:LoadResourceAction"/>
  </contextMenus>
</gmfgen:GenEditorGenerator>
