<?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">
  <diagram
      visualID="1000"
      editPartClassName="ACoreRootEditPart"
      itemSemanticEditPolicyClassName="ACoreRootItemSemanticEditPolicy"
      canonicalEditPolicyClassName="ACoreRootCanonicalEditPolicy"
      iconProviderPriority="Low"
      validationProviderPriority="Low">
    <diagramRunTimeClass
        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType
        xsi:type="gmfgen:MetamodelType"
        editHelperClassName="ACoreRootEditHelper"/>
    <viewmap
        xsi:type="gmfgen:FigureViewmap"
        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <domainDiagramElement
        href="acore.genmodel#//acore/ACoreRoot"/>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3001"
        editPartClassName="AAttributeEditPart"
        itemSemanticEditPolicyClassName="AAttributeItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AAttributeCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="AAttributeGraphicalNodeEditPolicy"
        createCommandClassName="AAttributeCreateCommand"
        containers="//@diagram/@compartments.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="AAttributeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
      <modelFacet>
        <metaClass
            href="acore.genmodel#//acore/AAttribute"/>
        <containmentMetaFeature
            href="acore.genmodel#//acore/ABasicClass/attributes"/>
        <childMetaFeature
            href="acore.genmodel#//acore/ABasicClass/attributes"/>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet"
          parser="//@labelParsers/@implementations.0"
          viewPattern="{0} {2}:{1}"
          editorPattern=""
          editPattern="">
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/accessright"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/dataType"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/name"/>
      </labelModelFacet>
    </childNodes>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3002"
        editPartClassName="AOperationEditPart"
        itemSemanticEditPolicyClassName="AOperationItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AOperationCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="AOperationGraphicalNodeEditPolicy"
        createCommandClassName="AOperationCreateCommand"
        containers="//@diagram/@compartments.1">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="AOperationEditHelper"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
      <modelFacet>
        <metaClass
            href="acore.genmodel#//acore/AOperation"/>
        <containmentMetaFeature
            href="acore.genmodel#//acore/ABasicClass/operations"/>
        <childMetaFeature
            href="acore.genmodel#//acore/ABasicClass/operations"/>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet"
          parser="//@labelParsers/@implementations.0"
          viewPattern="{0} {2}():{1}"
          editorPattern=""
          editPattern="">
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/accessright"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/dataType"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/name"/>
      </labelModelFacet>
    </childNodes>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3003"
        editPartClassName="AAttribute2EditPart"
        itemSemanticEditPolicyClassName="AAttribute2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AAttribute2CanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="AAttribute2GraphicalNodeEditPolicy"
        createCommandClassName="AAttribute2CreateCommand"
        containers="//@diagram/@compartments.2">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@childNodes.0/@elementType"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
      <modelFacet>
        <metaClass
            href="acore.genmodel#//acore/AAttribute"/>
        <containmentMetaFeature
            href="acore.genmodel#//acore/ABasicClass/attributes"/>
        <childMetaFeature
            href="acore.genmodel#//acore/ABasicClass/attributes"/>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet"
          parser="//@labelParsers/@implementations.0"
          viewPattern="{0} {2}:{1}"
          editorPattern=""
          editPattern="">
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/accessright"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/dataType"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/name"/>
      </labelModelFacet>
    </childNodes>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3004"
        editPartClassName="AOperation2EditPart"
        itemSemanticEditPolicyClassName="AOperation2ItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AOperation2CanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="AOperation2GraphicalNodeEditPolicy"
        createCommandClassName="AOperation2CreateCommand"
        containers="//@diagram/@compartments.3">
      <diagramRunTimeClass
          href="../../../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:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
      <modelFacet>
        <metaClass
            href="acore.genmodel#//acore/AOperation"/>
        <containmentMetaFeature
            href="acore.genmodel#//acore/ABasicClass/operations"/>
        <childMetaFeature
            href="acore.genmodel#//acore/ABasicClass/operations"/>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet"
          parser="//@labelParsers/@implementations.0"
          viewPattern="{0} {2}():{1}"
          editorPattern=""
          editPattern="">
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/accessright"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/dataType"/>
        <metaFeatures
            href="acore.genmodel#//acore/AClassChild/name"/>
      </labelModelFacet>
    </childNodes>
    <topLevelNodes
        visualID="2001"
        editPartClassName="AInterfaceEditPart"
        itemSemanticEditPolicyClassName="AInterfaceItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AInterfaceCanonicalEditPolicy"
        compartments="//@diagram/@compartments.0 //@diagram/@compartments.1"
        graphicalNodeEditPolicyClassName="AInterfaceGraphicalNodeEditPolicy"
        createCommandClassName="AInterfaceCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="AInterfaceEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="AInterfaceFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AInterfaceFigure 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 fFigureAInterfaceNameFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fFigureInterfaceAttributes; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fFigureInterfaceOperations; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AInterfaceFigure() {&#xA;&#x9;&#x9;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutThis = new org.eclipse.draw2d.ToolbarLayout();&#xA;&#x9;layoutThis.setStretchMinorAxis(true);&#xA;&#x9;layoutThis.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xA;);&#xA;&#xA;&#x9;layoutThis.setSpacing(0);&#xA;&#x9;layoutThis.setVertical(true);&#xA;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xA;&#xA;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(12)&#xA;, getMapMode().DPtoLP(12)&#xA;));&#xA;this.setLineWidth(1);&#xA;&#x9;this.setBackgroundColor(THIS_BACK&#xA;);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel aInterfaceTypeLabelFigure0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;aInterfaceTypeLabelFigure0.setText(&quot;«Interface»&quot;);&#xA;&#xA;this.add(aInterfaceTypeLabelFigure0);&#xA;&#xA;&#xA;&#xA;fFigureAInterfaceNameFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAInterfaceNameFigure.setText(&quot;&lt;...>&quot;);&#xA;&#xA;this.add(fFigureAInterfaceNameFigure);&#xA;&#xA;&#xA;&#xA;fFigureInterfaceAttributes = new org.eclipse.draw2d.RectangleFigure();&#xA;fFigureInterfaceAttributes.setLineWidth(1);&#xA;&#xA;this.add(fFigureInterfaceAttributes);&#xA;fFigureInterfaceAttributes.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xA;&#xA;&#xA;&#xA;fFigureInterfaceOperations = new org.eclipse.draw2d.RectangleFigure();&#xA;fFigureInterfaceOperations.setLineWidth(1);&#xA;&#xA;this.add(fFigureInterfaceOperations);&#xA;fFigureInterfaceOperations.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;protected boolean useLocalCoordinates() {&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAInterfaceNameFigure() {&#xA;&#x9;&#x9;return fFigureAInterfaceNameFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getFigureInterfaceAttributes() {&#xA;&#x9;&#x9;return fFigureInterfaceAttributes;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getFigureInterfaceOperations() {&#xA;&#x9;&#x9;return fFigureInterfaceOperations;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_BACK = new org.eclipse.swt.graphics.Color(null, 250, 250, 190);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
      </viewmap>
      <modelFacet>
        <metaClass
            href="acore.genmodel#//acore/AInterface"/>
        <containmentMetaFeature
            href="acore.genmodel#//acore/ACoreRoot/interfaces"/>
        <childMetaFeature
            href="acore.genmodel#//acore/ACoreRoot/interfaces"/>
      </modelFacet>
      <labels
          visualID="5001"
          editPartClassName="AInterfaceNameEditPart"
          itemSemanticEditPolicyClassName="AInterfaceNameItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureAInterfaceNameFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="acore.genmodel#//acore/ABasicClass/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2002"
        editPartClassName="AClassEditPart"
        itemSemanticEditPolicyClassName="AClassItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AClassCanonicalEditPolicy"
        compartments="//@diagram/@compartments.2 //@diagram/@compartments.3"
        graphicalNodeEditPolicyClassName="AClassGraphicalNodeEditPolicy"
        createCommandClassName="AClassCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="AClassEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="AClassFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AClassFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fFigureClassAttributes; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel fFigureAClassNameFigure; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fFigureClassOperations; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AClassFigure() {&#xA;&#x9;&#x9;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutThis = new org.eclipse.draw2d.ToolbarLayout();&#xA;&#x9;layoutThis.setStretchMinorAxis(true);&#xA;&#x9;layoutThis.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xA;);&#xA;&#xA;&#x9;layoutThis.setSpacing(0);&#xA;&#x9;layoutThis.setVertical(true);&#xA;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xA;&#xA;&#x9;&#x9;this.setLineWidth(1);&#xA;&#x9;this.setBackgroundColor(THIS_BACK&#xA;);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureAClassNameFigure = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel();&#xA;fFigureAClassNameFigure.setText(&quot;&lt;...>&quot;);&#xA;&#xA;this.add(fFigureAClassNameFigure);&#xA;&#xA;&#xA;&#xA;fFigureClassAttributes = new org.eclipse.draw2d.RectangleFigure();&#xA;fFigureClassAttributes.setLineWidth(1);&#xA;&#xA;this.add(fFigureClassAttributes);&#xA;fFigureClassAttributes.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xA;&#xA;&#xA;&#xA;fFigureClassOperations = new org.eclipse.draw2d.RectangleFigure();&#xA;fFigureClassOperations.setLineWidth(1);&#xA;&#xA;this.add(fFigureClassOperations);&#xA;fFigureClassOperations.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xA;&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;protected boolean useLocalCoordinates() {&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getFigureClassAttributes() {&#xA;&#x9;&#x9;return fFigureClassAttributes;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel getFigureAClassNameFigure() {&#xA;&#x9;&#x9;return fFigureAClassNameFigure;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getFigureClassOperations() {&#xA;&#x9;&#x9;return fFigureClassOperations;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_BACK = new org.eclipse.swt.graphics.Color(null, 230, 230, 255);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
      </viewmap>
      <modelFacet>
        <metaClass
            href="acore.genmodel#//acore/AClass"/>
        <containmentMetaFeature
            href="acore.genmodel#//acore/ACoreRoot/classes"/>
        <childMetaFeature
            href="acore.genmodel#//acore/ACoreRoot/classes"/>
      </modelFacet>
      <labels
          visualID="5002"
          editPartClassName="AClassNameEditPart"
          itemSemanticEditPolicyClassName="AClassNameItemSemanticEditPolicy"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureAClassNameFigure"
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            parser="//@labelParsers/@implementations.0">
          <metaFeatures
              href="acore.genmodel#//acore/ABasicClass/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <links
        visualID="4001"
        editPartClassName="AClassSubClassesEditPart"
        itemSemanticEditPolicyClassName="AClassSubClassesItemSemanticEditPolicy"
        createCommandClassName="AClassSubClassesCreateCommand"
        reorientCommandClassName="AClassSubClassesReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="AClassSubClassesFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AClassSubClassesFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AClassSubClassesFigure() {&#xA;&#x9;&#x9;this.setLineWidth(1);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolygonDecoration df = new org.eclipse.draw2d.PolygonDecoration();&#xA;df.setFill(true);&#xA;df.setLineWidth(1);&#xA;&#x9;df.setBackgroundColor(DF_BACK&#xA;);&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(2)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xA;, getMapMode().DPtoLP(0)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(-2)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(2)&#xA;);&#xA;df.setTemplate(pl);&#xA;df.setScale(getMapMode().DPtoLP(7)&#xA;, getMapMode().DPtoLP(3)&#xA;);&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color DF_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 255);&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="acore.genmodel#//acore/AClass/subClasses"/>
      </modelFacet>
    </links>
    <links
        visualID="4002"
        editPartClassName="AClassImplementedInterfacesEditPart"
        itemSemanticEditPolicyClassName="AClassImplementedInterfacesItemSemanticEditPolicy"
        createCommandClassName="AClassImplementedInterfacesCreateCommand"
        reorientCommandClassName="AClassImplementedInterfacesReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="AClassImplementedInterfacesFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AClassImplementedInterfacesFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AClassImplementedInterfacesFigure() {&#xA;&#x9;&#x9;this.setLineWidth(1);&#xA;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;df.setLineWidth(1);&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="acore.genmodel#//acore/AClass/implementedInterfaces"/>
      </modelFacet>
    </links>
    <links
        visualID="4003"
        editPartClassName="AClassAssociationsEditPart"
        itemSemanticEditPolicyClassName="AClassAssociationsItemSemanticEditPolicy"
        createCommandClassName="AClassAssociationsCreateCommand"
        reorientCommandClassName="AClassAssociationsReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx"/>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="acore.genmodel#//acore/AClass/associations"/>
      </modelFacet>
    </links>
    <links
        visualID="4004"
        editPartClassName="AClassAggregationsEditPart"
        itemSemanticEditPolicyClassName="AClassAggregationsItemSemanticEditPolicy"
        createCommandClassName="AClassAggregationsCreateCommand"
        reorientCommandClassName="AClassAggregationsReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="AClassAggregationClassesFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AClassAggregationClassesFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AClassAggregationClassesFigure() {&#xA;&#x9;&#x9;this.setLineWidth(1);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolygonDecoration df = new org.eclipse.draw2d.PolygonDecoration();&#xA;df.setFill(true);&#xA;df.setLineWidth(1);&#xA;&#x9;df.setBackgroundColor(DF_BACK&#xA;);&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(2)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xA;, getMapMode().DPtoLP(0)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(-2)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-4)&#xA;, getMapMode().DPtoLP(0)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(2)&#xA;);&#xA;df.setTemplate(pl);&#xA;df.setScale(getMapMode().DPtoLP(7)&#xA;, getMapMode().DPtoLP(3)&#xA;);&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color DF_BACK = new org.eclipse.swt.graphics.Color(null, 255, 255, 255);&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="acore.genmodel#//acore/AClass/aggregations"/>
      </modelFacet>
    </links>
    <links
        visualID="4005"
        editPartClassName="AClassCompositionsEditPart"
        itemSemanticEditPolicyClassName="AClassCompositionsItemSemanticEditPolicy"
        createCommandClassName="AClassCompositionsCreateCommand"
        reorientCommandClassName="AClassCompositionsReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="AClassCompositionClassesFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class AClassCompositionClassesFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public AClassCompositionClassesFigure() {&#xA;&#x9;&#x9;this.setLineWidth(1);&#xA;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xA;&#x9;&#x9;org.eclipse.draw2d.PolygonDecoration df = new org.eclipse.draw2d.PolygonDecoration();&#xA;df.setFill(true);&#xA;df.setLineWidth(1);&#xA;&#x9;df.setBackgroundColor(DF_BACK&#xA;);&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(2)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xA;, getMapMode().DPtoLP(0)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(-2)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-4)&#xA;, getMapMode().DPtoLP(0)&#xA;);&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xA;, getMapMode().DPtoLP(2)&#xA;);&#xA;df.setTemplate(pl);&#xA;df.setScale(getMapMode().DPtoLP(7)&#xA;, getMapMode().DPtoLP(3)&#xA;);&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color DF_BACK = new org.eclipse.swt.graphics.Color(null, 0, 0, 0);&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="acore.genmodel#//acore/AClass/compositions"/>
      </modelFacet>
    </links>
    <compartments
        visualID="7001"
        editPartClassName="AInterfaceAAttributeInterfaceCompartmentEditPart"
        itemSemanticEditPolicyClassName="AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0"
        title="AAttributeInterfaceCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getFigureInterfaceAttributes"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7002"
        editPartClassName="AInterfaceAOperationInterfaceCompartmentEditPart"
        itemSemanticEditPolicyClassName="AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="AOperationInterfaceCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getFigureInterfaceOperations"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7003"
        editPartClassName="AClassAAttributeCompartmentEditPart"
        itemSemanticEditPolicyClassName="AClassAAttributeCompartmentItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AClassAAttributeCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.2"
        title="AAttributeCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.1">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getFigureClassAttributes"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7004"
        editPartClassName="AClassAOperationClassCompartmentEditPart"
        itemSemanticEditPolicyClassName="AClassAOperationClassCompartmentItemSemanticEditPolicy"
        canonicalEditPolicyClassName="AClassAOperationClassCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.3"
        title="AOperationClassCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.1">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getFigureClassOperations"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <palette>
      <groups
          title="Node"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="AClass"
            description="Create new AClass"
            genNodes="//@diagram/@topLevelNodes.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="AInterface"
            description="Create new AInterface"
            genNodes="//@diagram/@topLevelNodes.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="AAttribute"
            description="Create an Attribute"
            genNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.2"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="AOperation"
            description="Create an Operation"
            genNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.3"/>
      </groups>
      <groups
          title="Connections"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="inherits"
            description="Create new AClassSubClasses"
            largeIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/inherits.png"
            smallIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/inherits.png"
            genLinks="//@diagram/@links.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="implements"
            description="Create new AClassImplementedInterfaces"
            largeIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/implements.png"
            smallIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/implements.png"
            genLinks="//@diagram/@links.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="association"
            description="Create new AClassSubClasses"
            largeIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/association.png"
            smallIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/association.png"
            genLinks="//@diagram/@links.2"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="aggregation"
            description="Create new AClassSubClasses"
            largeIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/aggregation.png"
            smallIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/aggregation.png"
            genLinks="//@diagram/@links.3"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="composition"
            description="Create new AClassSubClasses"
            largeIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/composition.png"
            smallIconPath="/org.eclipse.emf.cdo.dawn.examples.acore.edit/icons/full/obj16/composition.png"
            genLinks="//@diagram/@links.4"/>
      </groups>
    </palette>
    <preferencePages
        xsi:type="gmfgen:GenStandardPreferencePage"
        iD="org.eclipse.emf.cdo.dawn.examples.acore.diagram.general"
        name="Acore Diagram">
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.emf.cdo.dawn.examples.acore.diagram.appearance"
          name="Appearance"
          kind="Appearance"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.emf.cdo.dawn.examples.acore.diagram.connections"
          name="Connections"
          kind="Connections"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.emf.cdo.dawn.examples.acore.diagram.printing"
          name="Printing"
          kind="Printing"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.emf.cdo.dawn.examples.acore.diagram.rulersAndGrid"
          name="Rulers And Grid"
          kind="RulersAndGrid"/>
    </preferencePages>
  </diagram>
  <plugin>
    <requiredPlugins>org.eclipse.draw2d</requiredPlugins>
    <requiredPlugins>org.eclipse.gmf.runtime.draw2d.ui</requiredPlugins>
  </plugin>
  <editor/>
  <navigator>
    <childReferences
        child="//@diagram"/>
    <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/@topLevelNodes.1"
        child="//@diagram/@childNodes.2"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@childNodes.3"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.1"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.0"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.0"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.1"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@topLevelNodes.0"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@links.1"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.1"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.2"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.3"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.4"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.4"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
  </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="acore.genmodel#/"/>
  <labelParsers
      extensibleViaService="true">
    <implementations
        xsi:type="gmfgen:PredefinedParser"
        uses="//@diagram/@childNodes.0/@labelModelFacet //@diagram/@childNodes.1/@labelModelFacet //@diagram/@topLevelNodes.0/@labels.0/@modelFacet //@diagram/@childNodes.2/@labelModelFacet //@diagram/@childNodes.3/@labelModelFacet //@diagram/@topLevelNodes.1/@labels.0/@modelFacet"/>
  </labelParsers>
  <contextMenus
      context="//@diagram">
    <items
        xsi:type="gmfgen:LoadResourceAction"/>
  </contextMenus>
</gmfgen:GenEditorGenerator>
