<?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/2006/GenModel" packageNamePrefix="org.eclipse.gmf.examples.mindmap.rcp"
    sameFileForDiagramAndModel="true"
    diagramFileExtension="mmd"
    copyrightText="Copyright (c) 2006, 2007 Borland Software Corporation.&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License v1.0&#xA; which accompanies this distribution, and is available at&#xA; http://www.eclipse.org/legal/epl-v10.html&#xA; &#xA;  Contributors:&#xA;     Richard Gronback (Borland) - initial API and implementation">
  <audits>
    <categories
        id="org.eclipse.gmf.examples.mindmap.audits"
        name="Mindmap Audits"
        description="Audits to detect problems in mindmap diagrams."
        path="//@audits/@categories.0"
        audits="//@audits/@rules.0 //@audits/@rules.1"/>
    <rules
        name="Cyclic relationship check"
        description="This audit detects (simple) cycles between Topic relationships"
        id="cycle"
        message="A cycle was found in relationships between two Topic elements."
        category="//@audits/@categories.0">
      <rule
          body="self.relations->forAll(r1, r2 |  r1.target = r2.source and r1.type = r2.type implies r2.target &lt;> r1.source)"/>
      <target
          xsi:type="gmfgen:GenDomainElementTarget">
        <element
            href="mindmap.genmodel#//mindmap/Map"/>
      </target>
    </rules>
    <rules
        name="Topic name audit"
        description="A Topic must have a name provided."
        id="topic.name"
        message="Topics must have a name"
        category="//@audits/@categories.0">
      <rule
          body="name.size() > 0"/>
      <target
          xsi:type="gmfgen:GenDomainElementTarget">
        <element
            href="mindmap.genmodel#//mindmap/Topic"/>
      </target>
    </rules>
  </audits>
  <diagram
      visualID="1000"
      editPartClassName="MapEditPart"
      itemSemanticEditPolicyClassName="MapItemSemanticEditPolicy"
      notationViewFactoryClassName="MapViewFactory"
      canonicalEditPolicyClassName="MapCanonicalEditPolicy"
      iconProviderPriority="Low"
      validationProviderPriority="Low">
    <diagramRunTimeClass
        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType
        xsi:type="gmfgen:MetamodelType"
        editHelperClassName="MapEditHelper"/>
    <viewmap
        xsi:type="gmfgen:FigureViewmap"
        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <domainDiagramElement
        href="mindmap.genmodel#//mindmap/Map"/>
    <childNodes
        visualID="3001"
        editPartClassName="ThreadEditPart"
        itemSemanticEditPolicyClassName="ThreadItemSemanticEditPolicy"
        notationViewFactoryClassName="ThreadViewFactory"
        canonicalEditPolicyClassName="ThreadCanonicalEditPolicy"
        compartments="//@diagram/@compartments.1"
        graphicalNodeEditPolicyClassName="ThreadGraphicalNodeEditPolicy"
        createCommandClassName="ThreadCreateCommand"
        containers="//@diagram/@compartments.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ThreadEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="StickyNoteFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class StickyNoteFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fFigureThreadItems; &#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.Label fFigureStickyNoteNameFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public StickyNoteFigure() {&#xA;&#x9;&#x9;&#xA;&#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;&#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;fFigureStickyNoteNameFigure = new org.eclipse.draw2d.Label();&#xA;fFigureStickyNoteNameFigure.setText(&quot;&lt;...>&quot;);&#xA;&#xA;this.add(fFigureStickyNoteNameFigure);&#xA;&#xA;&#xA;&#xA;fFigureThreadItems = new org.eclipse.draw2d.RectangleFigure();&#xA;&#xA;this.add(fFigureThreadItems);&#xA;&#xA;fFigureThreadItems.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 getFigureThreadItems() {&#xA;&#x9;&#x9;return fFigureThreadItems;&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.Label getFigureStickyNoteNameFigure() {&#xA;&#x9;&#x9;return fFigureStickyNoteNameFigure;&#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="mindmap.genmodel#//mindmap/Thread"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Topic/comments"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Topic/comments"/>
      </modelFacet>
      <labels
          visualID="5001"
          editPartClassName="ThreadSubjectEditPart"
          itemSemanticEditPolicyClassName="ThreadSubjectItemSemanticEditPolicy"
          notationViewFactoryClassName="ThreadSubjectViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureStickyNoteNameFigure"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Thread/subject"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3002"
        editPartClassName="ThreadItemEditPart"
        itemSemanticEditPolicyClassName="ThreadItemItemSemanticEditPolicy"
        notationViewFactoryClassName="ThreadItemViewFactory"
        canonicalEditPolicyClassName="ThreadItemCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ThreadItemGraphicalNodeEditPolicy"
        createCommandClassName="ThreadItemCreateCommand"
        containers="//@diagram/@compartments.1">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ThreadItemEditHelper"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.draw2d.Label"/>
      <modelFacet>
        <metaClass
            href="mindmap.genmodel#//mindmap/ThreadItem"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Thread/items"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Thread/items"/>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet">
        <metaFeatures
            href="mindmap.genmodel#//mindmap/ThreadItem/body"/>
      </labelModelFacet>
    </childNodes>
    <topLevelNodes
        visualID="2001"
        editPartClassName="TopicEditPart"
        itemSemanticEditPolicyClassName="TopicItemSemanticEditPolicy"
        notationViewFactoryClassName="TopicViewFactory"
        canonicalEditPolicyClassName="TopicCanonicalEditPolicy"
        compartments="//@diagram/@compartments.0"
        graphicalNodeEditPolicyClassName="TopicGraphicalNodeEditPolicy"
        createCommandClassName="TopicCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="TopicEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="RoundedTopicFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class RoundedTopicFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.Label fFigureTopicNameFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public RoundedTopicFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(&#xA;12, &#xA;12));&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureTopicNameFigure = new org.eclipse.draw2d.Label();&#xA;fFigureTopicNameFigure.setText(&quot;&quot;);&#xA;&#xA;this.add(fFigureTopicNameFigure);&#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.Label getFigureTopicNameFigure() {&#xA;&#x9;&#x9;return fFigureTopicNameFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 220, 220, 250);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
      </viewmap>
      <modelFacet>
        <metaClass
            href="mindmap.genmodel#//mindmap/Topic"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Map/rootTopics"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Map/rootTopics"/>
      </modelFacet>
      <labels
          visualID="5002"
          editPartClassName="TopicNameEditPart"
          itemSemanticEditPolicyClassName="TopicNameItemSemanticEditPolicy"
          notationViewFactoryClassName="TopicNameViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureTopicNameFigure"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Topic/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2002"
        editPartClassName="ResourceEditPart"
        itemSemanticEditPolicyClassName="ResourceItemSemanticEditPolicy"
        notationViewFactoryClassName="ResourceViewFactory"
        canonicalEditPolicyClassName="ResourceCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ResourceGraphicalNodeEditPolicy"
        createCommandClassName="ResourceCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ResourceEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ResourceFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ResourceFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ResourceFigure() {&#xA;&#x9;&#x9;&#xA;this.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xA;&#x9;&#x9;this.setFill(false);&#xA;this.setOutline(false);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;org.eclipse.draw2d.RectangleFigure resource0 = new org.eclipse.draw2d.RectangleFigure();&#xA;resource0.setFill(false);&#xA;resource0.setOutline(false);&#xA;&#xA;this.add(resource0);&#xA;&#xA;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutResource0 = new org.eclipse.draw2d.ToolbarLayout();&#xA;&#x9;layoutResource0.setStretchMinorAxis(false);&#xA;&#x9;layoutResource0.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xA;);&#xA;&#xA;&#x9;layoutResource0.setSpacing(0);&#xA;&#x9;layoutResource0.setVertical(true);&#xA;&#xA;&#x9;resource0.setLayoutManager(layoutResource0);&#xA;&#xA;&#xA;&#xA;org.eclipse.draw2d.Ellipse head1 = new org.eclipse.draw2d.Ellipse();&#xA;&#x9;head1.setForegroundColor(HEAD1_FORE&#xA;);&#xA;&#x9;head1.setBackgroundColor(HEAD1_BACK&#xA;);&#xA;head1.setSize(40, 20);&#xA;&#xA;resource0.add(head1);&#xA;&#xA;&#xA;&#xA;org.eclipse.draw2d.Polygon body1 = new org.eclipse.draw2d.Polygon();&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 19));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 24));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 24));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 29));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 29));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 36));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 48));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 53));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(20, 42));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 53));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 48));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 36));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 29));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 29));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 24));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 24));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 19));&#xA;body1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 19));&#xA;&#x9;body1.setForegroundColor(BODY1_FORE&#xA;);&#xA;&#x9;body1.setBackgroundColor(BODY1_BACK&#xA;);&#xA;&#xA;resource0.add(body1);&#xA;&#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;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color HEAD1_FORE = new org.eclipse.swt.graphics.Color(null, 220, 220, 250);&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color HEAD1_BACK = new org.eclipse.swt.graphics.Color(null, 230, 230, 255);&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color BODY1_FORE = new org.eclipse.swt.graphics.Color(null, 220, 220, 250);&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color BODY1_BACK = new org.eclipse.swt.graphics.Color(null, 230, 230, 255);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            height="60"/>
      </viewmap>
      <modelFacet>
        <metaClass
            href="mindmap.genmodel#//mindmap/Resource"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Map/resources"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Map/resources"/>
      </modelFacet>
      <labels
          xsi:type="gmfgen:GenExternalNodeLabel"
          visualID="5003"
          editPartClassName="ResourceNameEmailEditPart"
          itemSemanticEditPolicyClassName="ResourceNameEmailItemSemanticEditPolicy"
          notationViewFactoryClassName="ResourceNameEmailViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            viewPattern="{0} [{1}]"
            editorPattern="{0} : {1}"
            editPattern="{0} : {1}">
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Resource/name"/>
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Resource/email"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <links
        visualID="4001"
        editPartClassName="TopicSubtopicsEditPart"
        itemSemanticEditPolicyClassName="TopicSubtopicsItemSemanticEditPolicy"
        notationViewFactoryClassName="TopicSubtopicsViewFactory"
        createCommandClassName="TopicSubtopicsCreateCommand"
        reorientCommandClassName="TopicSubtopicsReorientCommand">
      <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.draw2d.PolylineConnection"/>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="mindmap.genmodel#//mindmap/Topic/subtopics"/>
      </modelFacet>
      <creationConstraints>
        <sourceEnd
            body="self &lt;> oppositeEnd"/>
      </creationConstraints>
    </links>
    <links
        visualID="4002"
        editPartClassName="RelationshipEditPart"
        itemSemanticEditPolicyClassName="RelationshipItemSemanticEditPolicy"
        notationViewFactoryClassName="RelationshipViewFactory"
        createCommandClassName="RelationshipCreateCommand"
        reorientCommandClassName="RelationshipReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="RelationshipEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="DashedLineOpenArrow"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineOpenArrow extends org.eclipse.draw2d.PolylineConnection {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineOpenArrow() {&#xA;&#x9;&#x9;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;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="mindmap.genmodel#//mindmap/Relationship"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Map/relations"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Map/relations"/>
        <modelElementSelector
            body="self.type = RelationshipType::EXTENDS"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              body="RelationshipType::EXTENDS">
            <feature
                href="mindmap.genmodel#//mindmap/Relationship/type"/>
          </initializers>
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              body="'extends'">
            <feature
                href="mindmap.genmodel#//mindmap/Relationship/label"/>
          </initializers>
        </modelElementInitializer>
        <sourceMetaFeature
            href="mindmap.genmodel#//mindmap/Relationship/source"/>
        <targetMetaFeature
            href="mindmap.genmodel#//mindmap/Relationship/target"/>
      </modelFacet>
      <labels
          visualID="6001"
          editPartClassName="RelationshipLabelEditPart"
          itemSemanticEditPolicyClassName="RelationshipLabelItemSemanticEditPolicy"
          notationViewFactoryClassName="RelationshipLabelViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="40"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            viewPattern="«{0}»">
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Relationship/label"/>
        </modelFacet>
      </labels>
    </links>
    <links
        visualID="4003"
        editPartClassName="Relationship2EditPart"
        itemSemanticEditPolicyClassName="Relationship2ItemSemanticEditPolicy"
        notationViewFactoryClassName="Relationship2ViewFactory"
        createCommandClassName="Relationship2CreateCommand"
        reorientCommandClassName="Relationship2ReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@links.1/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="DashedLineOpenArrow"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineOpenArrow extends org.eclipse.draw2d.PolylineConnection {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineOpenArrow() {&#xA;&#x9;&#x9;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;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="mindmap.genmodel#//mindmap/Relationship"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Map/relations"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Map/relations"/>
        <modelElementSelector
            body="self.type = RelationshipType::INCLUDES"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              body="RelationshipType::INCLUDES">
            <feature
                href="mindmap.genmodel#//mindmap/Relationship/type"/>
          </initializers>
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              body="'includes'">
            <feature
                href="mindmap.genmodel#//mindmap/Relationship/label"/>
          </initializers>
        </modelElementInitializer>
        <sourceMetaFeature
            href="mindmap.genmodel#//mindmap/Relationship/source"/>
        <targetMetaFeature
            href="mindmap.genmodel#//mindmap/Relationship/target"/>
      </modelFacet>
      <labels
          visualID="6002"
          editPartClassName="RelationshipLabel2EditPart"
          itemSemanticEditPolicyClassName="RelationshipLabel2ItemSemanticEditPolicy"
          notationViewFactoryClassName="RelationshipLabel2ViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="40"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            viewPattern="«{0}»">
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Relationship/label"/>
        </modelFacet>
      </labels>
    </links>
    <links
        visualID="4004"
        editPartClassName="Relationship3EditPart"
        itemSemanticEditPolicyClassName="Relationship3ItemSemanticEditPolicy"
        notationViewFactoryClassName="Relationship3ViewFactory"
        createCommandClassName="Relationship3CreateCommand"
        reorientCommandClassName="Relationship3ReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@links.1/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="DashedLineOpenArrow"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineOpenArrow extends org.eclipse.draw2d.PolylineConnection {&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineOpenArrow() {&#xA;&#x9;&#x9;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;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;}&#xA;&#xA;"/>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="mindmap.genmodel#//mindmap/Relationship"/>
        <containmentMetaFeature
            href="mindmap.genmodel#//mindmap/Map/relations"/>
        <childMetaFeature
            href="mindmap.genmodel#//mindmap/Map/relations"/>
        <modelElementSelector
            body="self.type = RelationshipType::DEPENDENCY"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              body="RelationshipType::DEPENDENCY">
            <feature
                href="mindmap.genmodel#//mindmap/Relationship/type"/>
          </initializers>
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              body="'depends'">
            <feature
                href="mindmap.genmodel#//mindmap/Relationship/label"/>
          </initializers>
        </modelElementInitializer>
        <sourceMetaFeature
            href="mindmap.genmodel#//mindmap/Relationship/source"/>
        <targetMetaFeature
            href="mindmap.genmodel#//mindmap/Relationship/target"/>
      </modelFacet>
      <labels
          visualID="6003"
          editPartClassName="RelationshipLabel3EditPart"
          itemSemanticEditPolicyClassName="RelationshipLabel3ItemSemanticEditPolicy"
          notationViewFactoryClassName="RelationshipLabel3ViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="40"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            viewPattern="«{0}»">
          <metaFeatures
              href="mindmap.genmodel#//mindmap/Relationship/label"/>
        </modelFacet>
      </labels>
    </links>
    <compartments
        visualID="7001"
        editPartClassName="TopicThreadCompartmentEditPart"
        itemSemanticEditPolicyClassName="TopicThreadCompartmentItemSemanticEditPolicy"
        notationViewFactoryClassName="TopicThreadCompartmentViewFactory"
        canonicalEditPolicyClassName="TopicThreadCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0"
        title="ThreadCompartment"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.0"
        listLayout="false">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="RoundedTopicFigure"
          classBody="&#xA;/**&#xA; * @generated&#xA; */&#xA;public class RoundedTopicFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.Label fFigureTopicNameFigure; &#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public RoundedTopicFigure() {&#xA;&#x9;&#x9;&#x9;&#x9;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(&#xA;12, &#xA;12));&#xA;&#x9;this.setForegroundColor(THIS_FORE&#xA;);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#xA;&#xA;fFigureTopicNameFigure = new org.eclipse.draw2d.Label();&#xA;fFigureTopicNameFigure.setText(&quot;&quot;);&#xA;&#xA;this.add(fFigureTopicNameFigure);&#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.Label getFigureTopicNameFigure() {&#xA;&#x9;&#x9;return fFigureTopicNameFigure;&#xA;&#x9;}&#xA;&#xA;&#xA;}&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;static final org.eclipse.swt.graphics.Color THIS_FORE = new org.eclipse.swt.graphics.Color(null, 220, 220, 250);&#xA;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
      </viewmap>
    </compartments>
    <compartments
        visualID="7002"
        editPartClassName="ThreadThreadItemCompartmentEditPart"
        itemSemanticEditPolicyClassName="ThreadThreadItemCompartmentItemSemanticEditPolicy"
        notationViewFactoryClassName="ThreadThreadItemCompartmentViewFactory"
        canonicalEditPolicyClassName="ThreadThreadItemCompartmentCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="ThreadItemCompartment"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@childNodes.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getFigureThreadItems"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <palette>
      <groups
          title="Nodes"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Topic"
            description="Create new Topic"
            genNodes="//@diagram/@topLevelNodes.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Thread"
            description="Create new Thread"
            genNodes="//@diagram/@childNodes.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="ThreadItem"
            description="Create new Thread Item"
            genNodes="//@diagram/@childNodes.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Resource"
            description="Create new Resource"
            genNodes="//@diagram/@topLevelNodes.1"/>
      </groups>
      <groups
          title="Links"
          collapse="true">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Subtopic"
            description="Create new Subtopic link"
            genLinks="//@diagram/@links.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Dependency"
            description="Create new Dependency"
            genLinks="//@diagram/@links.3"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Includes"
            description="Create new Includes"
            genLinks="//@diagram/@links.2"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Extends"
            description="Create new Extends"
            genLinks="//@diagram/@links.1"/>
      </groups>
    </palette>
    <preferencePages
        xsi:type="gmfgen:GenStandardPreferencePage"
        iD="org.eclipse.gmf.examples.mindmap.lite.diagram.general"
        name="Mindmap Diagram">
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.gmf.examples.mindmap.lite.diagram.appearance"
          name="Appearance"
          kind="Appearance"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.gmf.examples.mindmap.lite.diagram.connections"
          name="Connections"
          kind="Connections"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.gmf.examples.mindmap.lite.diagram.printing"
          name="Printing"
          kind="Printing"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.gmf.examples.mindmap.lite.diagram.rulersAndGrid"
          name="Rulers And Grid"
          kind="RulersAndGrid"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.gmf.examples.mindmap.lite.diagram.pathmaps"
          name="Pathmaps"
          kind="Pathmaps"/>
    </preferencePages>
  </diagram>
  <plugin
      iD="org.eclipse.gmf.examples.mindmap.lite.rcp"
      name="Mindmap Lite RCP Plugin"
      provider="Eclipse.org"/>
  <editor/>
  <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>
      </filter>
    </tabs>
  </propertySheet>
  <application>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="CLOSE"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="CLOSE_ALL"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="SAVE"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="SAVE_AS"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="SAVE_ALL"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="QUIT"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="UNDO"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="REDO"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="CUT"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="COPY"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="PASTE"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="DELETE"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="SELECT_ALL"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="OPEN_NEW_WINDOW"/>
    <sharedContributionItems
        xsi:type="gmfgen:GenActionFactoryContributionItem"
        name="PRINT"/>
    <mainMenu>
      <items
          xsi:type="gmfgen:GenMenuManager"
          iD="org.eclipse.ui.IWorkbenchActionConstants.M_FILE"
          name="&amp;File">
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.FILE_START"/>
        <items
            xsi:type="gmfgen:GenMenuManager"
            iD="&quot;new&quot;"
            name="&amp;New">
          <items
              xsi:type="gmfgen:GenGroupMarker"
              groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
        </items>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.0"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.1"/>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.2"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.3"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.4"/>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.5"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.FILE_END"/>
      </items>
      <items
          xsi:type="gmfgen:GenMenuManager"
          iD="org.eclipse.ui.IWorkbenchActionConstants.M_EDIT"
          name="&amp;Edit">
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.EDIT_START"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.6"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.7"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.UNDO_EXT"/>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.8"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.9"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.10"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.CUT_EXT"/>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.11"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.12"/>
        <items
            xsi:type="gmfgen:GenSeparator"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.ADD_EXT"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.EDIT_END"/>
        <items
            xsi:type="gmfgen:GenSeparator"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
      </items>
      <items
          xsi:type="gmfgen:GenGroupMarker"
          groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
      <items
          xsi:type="gmfgen:GenMenuManager"
          iD="org.eclipse.ui.IWorkbenchActionConstants.M_WINDOW"
          name="&amp;Window">
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.13"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
      </items>
      <items
          xsi:type="gmfgen:GenMenuManager"
          iD="org.eclipse.ui.IWorkbenchActionConstants.M_HELP"
          name="&amp;Help">
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.HELP_START"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.HELP_END"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
      </items>
    </mainMenu>
    <mainToolBar>
      <items
          xsi:type="gmfgen:GenGroupMarker"
          groupName="&quot;group.file&quot;"/>
      <items
          xsi:type="gmfgen:GenToolBarManager"
          iD="org.eclipse.ui.IWorkbenchActionConstants.TOOLBAR_FILE">
        <items
            xsi:type="gmfgen:GenSeparator"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.NEW_GROUP"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.NEW_EXT"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.SAVE_GROUP"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.2"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.SAVE_EXT"/>
        <items
            xsi:type="gmfgen:GenSharedContributionItem"
            actualItem="//@application/@sharedContributionItems.14"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.PRINT_EXT"/>
        <items
            xsi:type="gmfgen:GenSeparator"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
      </items>
      <items
          xsi:type="gmfgen:GenGroupMarker"
          groupName="org.eclipse.ui.IWorkbenchActionConstants.MB_ADDITIONS"/>
      <items
          xsi:type="gmfgen:GenGroupMarker"
          groupName="&quot;group.nav&quot;"/>
      <items
          xsi:type="gmfgen:GenGroupMarker"
          groupName="org.eclipse.ui.IWorkbenchActionConstants.GROUP_EDITOR"/>
      <items
          xsi:type="gmfgen:GenGroupMarker"
          groupName="org.eclipse.ui.IWorkbenchActionConstants.GROUP_HELP"/>
      <items
          xsi:type="gmfgen:GenToolBarManager"
          iD="org.eclipse.ui.IWorkbenchActionConstants.TOOLBAR_HELP">
        <items
            xsi:type="gmfgen:GenSeparator"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.GROUP_HELP"/>
        <items
            xsi:type="gmfgen:GenGroupMarker"
            groupName="org.eclipse.ui.IWorkbenchActionConstants.GROUP_APP"/>
      </items>
    </mainToolBar>
  </application>
  <domainGenModel
      href="mindmap.genmodel#/"/>
  <expressionProviders>
    <providers
        xsi:type="gmfgen:GenExpressionInterpreter"
        expressions="//@diagram/@links.0/@creationConstraints/@sourceEnd //@diagram/@links.1/@modelFacet/@modelElementSelector //@diagram/@links.1/@modelFacet/@modelElementInitializer/@initializers.0 //@diagram/@links.1/@modelFacet/@modelElementInitializer/@initializers.1 //@diagram/@links.2/@modelFacet/@modelElementSelector //@diagram/@links.2/@modelFacet/@modelElementInitializer/@initializers.0 //@diagram/@links.2/@modelFacet/@modelElementInitializer/@initializers.1 //@diagram/@links.3/@modelFacet/@modelElementSelector //@diagram/@links.3/@modelFacet/@modelElementInitializer/@initializers.0 //@diagram/@links.3/@modelFacet/@modelElementInitializer/@initializers.1 //@audits/@rules.0/@rule //@audits/@rules.1/@rule"/>
  </expressionProviders>
</gmfgen:GenEditorGenerator>
