<?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/2005/GenModel" modelID="Mindmap" diagramFileExtension="mmd">
  <audits id="org.eclipse.gmf.mindmap" name="Mindmap Audits" description="A simple set of audits for mindmap tutorial">
    <audits name="Cyclic relationship check" description="This audit will detect situations where relationships links of the same type form a cycle between two Topics." id="cycle" message="A cycle was found in relationships between two Topic elements.">
      <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>
    </audits>
  </audits>
  <diagram visualID="79" editPartClassName="MapEditPart" itemSemanticEditPolicyClassName="MapItemSemanticEditPolicy" notationViewFactoryClassName="MapViewFactory" iconProviderPriority="Low" canonicalEditPolicyClassName="MapCanonicalEditPolicy" creationWizardIconPath="../org.eclipse.gmf.examples.mindmap.diagram/icons/full/obj16/MindmapModelFile.gif" validationProviderPriority="Medium" validationEnabled="true">
    <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType xsi:type="gmfgen:MetamodelType"/>
    <viewmap xsi:type="gmfgen:FigureViewmap" figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <containsShortcutsTo>mindmap</containsShortcutsTo>
    <shortcutsProvidedFor>mindmap</shortcutsProvidedFor>
    <domainDiagramElement href="mindmap.genmodel#//mindmap/Map"/>
    <childNodes visualID="2001" editPartClassName="ThreadEditPart" itemSemanticEditPolicyClassName="ThreadItemSemanticEditPolicy" notationViewFactoryClassName="ThreadViewFactory" canonicalEditPolicyClassName="ThreadCanonicalEditPolicy" compartments="//@diagram/@compartments.1" graphicalNodeEditPolicyClassName="ThreadGraphicalNodeEditPolicy" containers="//@diagram/@compartments.0">
      <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType xsi:type="gmfgen:MetamodelType"/>
      <viewmap xsi:type="gmfgen:InnerClassViewmap" className="StickyNoteFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class StickyNoteFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public StickyNoteFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;this.setBackgroundColor(new org.eclipse.swt.graphics.Color(null, 250, 250, 190));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;&#x9;org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();&#xA;fig_0.setText(&quot;&lt;...>&quot;);&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;setFigureStickyNoteNameFigure(fig_0);&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;Object layData0 = null;&#xA;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fStickyNoteNameFigure; &#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureStickyNoteNameFigure() {&#xA;&#x9;&#x9;return fStickyNoteNameFigure;&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void setFigureStickyNoteNameFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig){&#xA;&#x9;&#x9;fStickyNoteNameFigure = fig;&#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;&#x9;&#xA;}&#xA;">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </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="4002" editPartClassName="Thread_subjectEditPart" itemSemanticEditPolicyClassName="Thread_subjectItemSemanticEditPolicy" notationViewFactoryClassName="Thread_subjectViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="StickyNoteNameFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class StickyNoteNameFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public StickyNoteNameFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;this.setText(&quot;&lt;...>&quot;);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:FeatureLabelModelFacet" editPattern="">
          <metaFeature href="mindmap.genmodel#//mindmap/Thread/subject"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes visualID="2002" editPartClassName="ThreadItemEditPart" itemSemanticEditPolicyClassName="ThreadItemItemSemanticEditPolicy" notationViewFactoryClassName="ThreadItemViewFactory" canonicalEditPolicyClassName="ThreadItemCanonicalEditPolicy" graphicalNodeEditPolicyClassName="ThreadItemGraphicalNodeEditPolicy" containers="//@diagram/@compartments.1">
      <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType xsi:type="gmfgen:MetamodelType"/>
      <viewmap xsi:type="gmfgen:InnerClassViewmap" className="ThreadItemFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ThreadItemFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ThreadItemFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;&#x9;org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;setFigureThreadItemLabelFigure(fig_0);&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;Object layData0 = null;&#xA;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fThreadItemLabelFigure; &#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureThreadItemLabelFigure() {&#xA;&#x9;&#x9;return fThreadItemLabelFigure;&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void setFigureThreadItemLabelFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig){&#xA;&#x9;&#x9;fThreadItemLabelFigure = fig;&#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;&#x9;&#xA;}&#xA;">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass href="mindmap.genmodel#//mindmap/ThreadItem"/>
        <containmentMetaFeature href="mindmap.genmodel#//mindmap/Thread/items"/>
        <childMetaFeature href="mindmap.genmodel#//mindmap/Thread/items"/>
      </modelFacet>
      <labels visualID="4001" editPartClassName="ThreadItem_bodyEditPart" itemSemanticEditPolicyClassName="ThreadItem_bodyItemSemanticEditPolicy" notationViewFactoryClassName="ThreadItem_bodyViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="ThreadItemLabelFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ThreadItemLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ThreadItemLabelFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature href="mindmap.genmodel#//mindmap/ThreadItem/body"/>
        </modelFacet>
      </labels>
    </childNodes>
    <topLevelNodes visualID="1001" editPartClassName="TopicEditPart" itemSemanticEditPolicyClassName="TopicItemSemanticEditPolicy" notationViewFactoryClassName="TopicViewFactory" canonicalEditPolicyClassName="TopicCanonicalEditPolicy" compartments="//@diagram/@compartments.0" graphicalNodeEditPolicyClassName="TopicGraphicalNodeEditPolicy">
      <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType xsi:type="gmfgen:MetamodelType"/>
      <viewmap xsi:type="gmfgen:InnerClassViewmap" className="RoundedTopicFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class RoundedTopicFigure extends org.eclipse.draw2d.RoundedRectangle {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public RoundedTopicFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;this.setForegroundColor(new org.eclipse.swt.graphics.Color(null, 220, 220, 250));&#xA;this.setCornerDimensions(new org.eclipse.draw2d.geometry.Dimension(20, 20));&#xA;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;&#x9;org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();&#xA;fig_0.setText(&quot;&quot;);&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;setFigureTopicNameFigure(fig_0);&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;Object layData0 = null;&#xA;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fTopicNameFigure; &#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureTopicNameFigure() {&#xA;&#x9;&#x9;return fTopicNameFigure;&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void setFigureTopicNameFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig){&#xA;&#x9;&#x9;fTopicNameFigure = fig;&#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;&#x9;&#xA;}&#xA;">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </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="4003" editPartClassName="Topic_nameEditPart" itemSemanticEditPolicyClassName="Topic_nameItemSemanticEditPolicy" notationViewFactoryClassName="Topic_nameViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="TopicNameFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class TopicNameFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public TopicNameFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;this.setText(&quot;&quot;);&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature href="mindmap.genmodel#//mindmap/Topic/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes visualID="1002" editPartClassName="ResourceEditPart" itemSemanticEditPolicyClassName="ResourceItemSemanticEditPolicy" notationViewFactoryClassName="ResourceViewFactory" canonicalEditPolicyClassName="ResourceCanonicalEditPolicy" graphicalNodeEditPolicyClassName="ResourceGraphicalNodeEditPolicy">
      <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType xsi:type="gmfgen:MetamodelType"/>
      <viewmap xsi:type="gmfgen:InnerClassViewmap" className="ResourceFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class ResourceFigure extends org.eclipse.draw2d.RectangleFigure {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public ResourceFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;org.eclipse.draw2d.XYLayout myGenLayoutManager = new org.eclipse.draw2d.XYLayout();&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;this.setLayoutManager(myGenLayoutManager);&#xA;&#xA;&#x9;&#x9;&#x9;&#x9;this.setFill(false);&#xA;&#x9;&#x9;this.setOutline(false);&#xA;&#x9;&#x9;this.setLineWidth(0);&#xA;&#x9;&#x9;this.setPreferredSize(40, 60);&#xA;&#x9;&#x9;this.setSize(40, 60);&#xA;&#x9;&#x9;this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(40, 60));&#xA;&#x9;&#x9;this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(40, 60));&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;&#x9;org.eclipse.draw2d.Ellipse fig_0 = new org.eclipse.draw2d.Ellipse();&#xA;&#x9;&#x9;fig_0.setForegroundColor(new org.eclipse.swt.graphics.Color(null, 220, 220, 250));&#xA;&#x9;&#x9;fig_0.setBackgroundColor(new org.eclipse.swt.graphics.Color(null, 230, 230, 255));&#xA;&#x9;&#x9;fig_0.setSize(40, 20);&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;setFigureHead(fig_0);&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;Object layData0 = null;&#xA;&#xA;&#x9;&#x9;this.add(fig_0, layData0);&#xA;&#x9;&#x9;org.eclipse.draw2d.Polygon fig_1 = new org.eclipse.draw2d.Polygon();&#xA;&#x9;&#x9;fig_1.setFill(true);&#x9;&#x9;fig_1.setForegroundColor(new org.eclipse.swt.graphics.Color(null, 220, 220, 250));&#xA;&#x9;&#x9;fig_1.setBackgroundColor(new org.eclipse.swt.graphics.Color(null, 230, 230, 255));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 19));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 24));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 24));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 29));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 29));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(23, 36));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 48));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(39, 53));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(20, 42));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 53));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 48));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 36));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 29));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 29));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(1, 24));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 24));&#xA;&#x9;&#x9;fig_1.addPoint(new org.eclipse.draw2d.geometry.Point(17, 19));&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;setFigureBody(fig_1);&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;Object layData1 = null;&#xA;&#xA;&#x9;&#x9;this.add(fig_1, layData1);&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.Ellipse fHead; &#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.Ellipse getFigureHead() {&#xA;&#x9;&#x9;return fHead;&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void setFigureHead(org.eclipse.draw2d.Ellipse fig){&#xA;&#x9;&#x9;fHead = fig;&#xA;&#x9;}&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.Polygon fBody; &#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public org.eclipse.draw2d.Polygon getFigureBody() {&#xA;&#x9;&#x9;return fBody;&#xA;&#x9;}&#xA;&#x9;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void setFigureBody(org.eclipse.draw2d.Polygon fig){&#xA;&#x9;&#x9;fBody = fig;&#xA;&#x9;}&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private boolean myUseLocalCoordinates = true;&#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;&#x9;&#xA;}&#xA;">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </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="4004" editPartClassName="Resource_name_emailEditPart" itemSemanticEditPolicyClassName="Resource_name_emailItemSemanticEditPolicy" notationViewFactoryClassName="Resource_name_emailViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="BasicLabelFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class BasicLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public BasicLabelFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:CompositeFeatureLabelModelFacet" viewPattern="{0} [{1}]" editPattern="{0} : {1}">
          <metaFeatures href="mindmap.genmodel#//mindmap/Resource/name"/>
          <metaFeatures href="mindmap.genmodel#//mindmap/Resource/email"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <links visualID="3001" editPartClassName="SubtopicsEditPart" itemSemanticEditPolicyClassName="SubtopicsItemSemanticEditPolicy" notationViewFactoryClassName="SubtopicsViewFactory">
      <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType xsi:type="gmfgen:SpecializationType"/>
      <viewmap xsi:type="gmfgen:InnerClassViewmap" className="TopicSubtopicsFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class TopicSubtopicsFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public TopicSubtopicsFigure() {&#xA;&#xA;&#x9;}&#xA;&#xA;&#xA;}">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature href="mindmap.genmodel#//mindmap/Topic/subtopics"/>
      </modelFacet>
      <creationConstraints>
        <sourceEnd body="self &lt;> oppositeEnd"/>
      </creationConstraints>
    </links>
    <links visualID="3002" editPartClassName="RelationshipEditPart" itemSemanticEditPolicyClassName="RelationshipItemSemanticEditPolicy" notationViewFactoryClassName="RelationshipViewFactory">
      <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType xsi:type="gmfgen:MetamodelType"/>
      <viewmap xsi:type="gmfgen:InnerClassViewmap" className="DashedLineOpenArrow" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineOpenArrow extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineOpenArrow() {&#xA;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.PolylineDecoration createTargetDecoration() {&#xA;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;// dispatchNext?&#xA;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xA;&#x9;&#x9;pl.addPoint(-1, 1);&#xA;&#x9;&#x9;pl.addPoint(0, 0);&#xA;&#x9;&#x9;pl.addPoint(-1, -1);&#xA;&#x9;&#x9;df.setTemplate(pl);&#xA;&#x9;&#x9;df.setScale(7, 3);&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;}">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <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"/>
        <modelElementInitializer xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers body="RelationshipType::DEPENDENCY">
            <feature href="mindmap.genmodel#//mindmap/Relationship/type"/>
          </initializers>
          <initializers 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="4005" editPartClassName="Relationship_labelEditPart" itemSemanticEditPolicyClassName="Relationship_labelItemSemanticEditPolicy" notationViewFactoryClassName="Relationship_labelViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="DashedLineLabelFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineLabelFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <attributes xsi:type="gmfgen:LabelOffsetAttributes" y="20"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature href="mindmap.genmodel#//mindmap/Relationship/label"/>
        </modelFacet>
      </labels>
    </links>
    <links visualID="3003" editPartClassName="Relationship2EditPart" itemSemanticEditPolicyClassName="Relationship2ItemSemanticEditPolicy" notationViewFactoryClassName="Relationship2ViewFactory">
      <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;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineOpenArrow extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineOpenArrow() {&#xA;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.PolylineDecoration createTargetDecoration() {&#xA;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;// dispatchNext?&#xA;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xA;&#x9;&#x9;pl.addPoint(-1, 1);&#xA;&#x9;&#x9;pl.addPoint(0, 0);&#xA;&#x9;&#x9;pl.addPoint(-1, -1);&#xA;&#x9;&#x9;df.setTemplate(pl);&#xA;&#x9;&#x9;df.setScale(7, 3);&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;}">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <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"/>
        <modelElementInitializer xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers body="RelationshipType::INCLUDES">
            <feature href="mindmap.genmodel#//mindmap/Relationship/type"/>
          </initializers>
          <initializers 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="4006" editPartClassName="Relationship_label2EditPart" itemSemanticEditPolicyClassName="Relationship_label2ItemSemanticEditPolicy" notationViewFactoryClassName="Relationship_label2ViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="DashedLineLabelFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineLabelFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <attributes xsi:type="gmfgen:LabelOffsetAttributes" y="20"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature href="mindmap.genmodel#//mindmap/Relationship/label"/>
        </modelFacet>
      </labels>
    </links>
    <links visualID="3004" editPartClassName="Relationship3EditPart" itemSemanticEditPolicyClassName="Relationship3ItemSemanticEditPolicy" notationViewFactoryClassName="Relationship3ViewFactory">
      <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;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineOpenArrow extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineOpenArrow() {&#xA;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private org.eclipse.draw2d.PolylineDecoration createTargetDecoration() {&#xA;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xA;// dispatchNext?&#xA;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xA;&#x9;&#x9;pl.addPoint(-1, 1);&#xA;&#x9;&#x9;pl.addPoint(0, 0);&#xA;&#x9;&#x9;pl.addPoint(-1, -1);&#xA;&#x9;&#x9;df.setTemplate(pl);&#xA;&#x9;&#x9;df.setScale(7, 3);&#xA;&#xA;&#xA;&#xA;&#xA;&#x9;&#x9;return df;&#xA;&#x9;}&#xA;}">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <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"/>
        <modelElementInitializer xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers body="RelationshipType::EXTENDS">
            <feature href="mindmap.genmodel#//mindmap/Relationship/type"/>
          </initializers>
          <initializers 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="4007" editPartClassName="Relationship_label3EditPart" itemSemanticEditPolicyClassName="Relationship_label3ItemSemanticEditPolicy" notationViewFactoryClassName="Relationship_label3ViewFactory">
        <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap xsi:type="gmfgen:InnerClassViewmap" className="DashedLineLabelFigure" classBody="&#xA;&#xA;/**&#xA; * @generated&#xA; */&#xA;public class DashedLineLabelFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel {&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;public DashedLineLabelFigure() {&#x9;&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;createContents();&#xA;&#x9;}&#xA;&#xA;&#xA;&#x9;/**&#xA;&#x9; * @generated&#xA;&#x9; */&#xA;&#x9;private void createContents(){&#xA;&#x9;}&#xA;&#x9;&#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;&#x9;&#xA;}&#xA;">
          <attributes xsi:type="gmfgen:LabelOffsetAttributes" y="20"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeature href="mindmap.genmodel#//mindmap/Relationship/label"/>
        </modelFacet>
      </labels>
    </links>
    <compartments visualID="5001" editPartClassName="Topic_ThreadCompartmentEditPart" itemSemanticEditPolicyClassName="Topic_ThreadCompartmentItemSemanticEditPolicy" notationViewFactoryClassName="Topic_ThreadCompartmentViewFactory" childNodes="//@diagram/@childNodes.0" canonicalEditPolicyClassName="Topic_ThreadCompartmentCanonicalEditPolicy" listLayout="false" title="ThreadCompartment" 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:FigureViewmap" figureQualifiedClassName="XXX">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
    </compartments>
    <compartments visualID="5002" editPartClassName="Thread_ThreadItemCompartmentEditPart" itemSemanticEditPolicyClassName="Thread_ThreadItemCompartmentItemSemanticEditPolicy" notationViewFactoryClassName="Thread_ThreadItemCompartmentViewFactory" childNodes="//@diagram/@childNodes.1" canonicalEditPolicyClassName="Thread_ThreadItemCompartmentCanonicalEditPolicy" 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:FigureViewmap" figureQualifiedClassName="XXX">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
    </compartments>
    <palette>
      <groups title="Nodes">
        <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="Thread Item" 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">
        <entries xsi:type="gmfgen:ToolEntry" title="Dependency" description="" genLinks="//@diagram/@links.1"/>
        <entries xsi:type="gmfgen:ToolEntry" title="Extends" description="" genLinks="//@diagram/@links.3"/>
        <entries xsi:type="gmfgen:ToolEntry" title="Includes" description="" genLinks="//@diagram/@links.2"/>
        <entries xsi:type="gmfgen:ToolEntry" title="Subtopic" description="Create a new Subtopic" smallIconPath="/org.eclipse.gmf.examples.mindmap.edit/icons/full/obj16/Subtopic.gif" genLinks="//@diagram/@links.0"/>
      </groups>
    </palette>
  </diagram>
  <plugin name="mindmap Plugin"/>
  <editor iconPath="../org.eclipse.gmf.examples.mindmap.diagram/icons/full/obj16/MindmapModelFile.gif"/>
  <domainGenModel href="mindmap.genmodel#/"/>
  <expressionProviders>
    <providers xsi:type="gmfgen:GenExpressionInterpreter" expressions="//@diagram/@links.0/@creationConstraints/@sourceEnd //@diagram/@links.1/@modelFacet/@modelElementInitializer/@initializers.0 //@diagram/@links.1/@modelFacet/@modelElementInitializer/@initializers.1 //@diagram/@links.2/@modelFacet/@modelElementInitializer/@initializers.0 //@diagram/@links.2/@modelFacet/@modelElementInitializer/@initializers.1 //@diagram/@links.3/@modelFacet/@modelElementInitializer/@initializers.0 //@diagram/@links.3/@modelFacet/@modelElementInitializer/@initializers.1 //@audits/@audits.0/@rule" language="ocl">
      <requiredPluginIDs>org.eclipse.emf.ocl</requiredPluginIDs>
      <requiredPluginIDs>org.eclipse.emf.query.ocl</requiredPluginIDs>
    </providers>
  </expressionProviders>
</gmfgen:GenEditorGenerator>
