<?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/2008/GenModel"
    xmlns:uml2.gmfgenext="http://www.eclipse.org/uml2/diagram/gmfgenext/DiagramFigure/1.0" packageNamePrefix="org.eclipse.uml2.diagram.usecase"
    modelID="UMLUseCase"
    diagramFileExtension="umlusc,umlusecase_diagram"
    dynamicTemplates="true"
    templateDirectory="/org.eclipse.uml2.diagram.def/dynamic-templates/codegen">
  <diagram
      visualID="1000"
      editPartClassName="PackageEditPart"
      itemSemanticEditPolicyClassName="PackageItemSemanticEditPolicy"
      notationViewFactoryClassName="PackageViewFactory"
      canonicalEditPolicyClassName="PackageCanonicalEditPolicy"
      iconProviderPriority="Low"
      creationWizardCategoryID="org.eclipse.uml2.diagram.New"
      validationProviderPriority="Low">
    <diagramRunTimeClass
        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
    <elementType
        xsi:type="gmfgen:MetamodelType"
        editHelperClassName="PackageEditHelper"/>
    <viewmap
        xsi:type="gmfgen:FigureViewmap"
        figureQualifiedClassName="org.eclipse.draw2d.FreeformLayer"/>
    <domainDiagramElement
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package"/>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3001"
        editPartClassName="ElementImportEditPart"
        itemSemanticEditPolicyClassName="ElementImportItemSemanticEditPolicy"
        notationViewFactoryClassName="ElementImportViewFactory"
        canonicalEditPolicyClassName="ElementImportCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ElementImportGraphicalNodeEditPolicy"
        createCommandClassName="ElementImportCreateCommand"
        containers="//@diagram/@compartments.0">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ElementImportEditHelper"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.draw2d.Label">
        <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/ElementImport"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Namespace/elementImport"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Namespace/elementImport"/>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet">
        <metaFeatures
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/ElementImport/alias"/>
      </labelModelFacet>
    </childNodes>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3002"
        editPartClassName="ExtensionPointEditPart"
        itemSemanticEditPolicyClassName="ExtensionPointItemSemanticEditPolicy"
        notationViewFactoryClassName="ExtensionPointViewFactory"
        canonicalEditPolicyClassName="ExtensionPointCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ExtensionPointGraphicalNodeEditPolicy"
        createCommandClassName="ExtensionPointCreateCommand"
        containers="//@diagram/@compartments.1 //@diagram/@compartments.4 //@diagram/@compartments.6">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ExtensionPointEditHelper"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.draw2d.Label">
        <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/ExtensionPoint"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/extensionPoint"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/extensionPoint"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.3">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet"
          editPattern="">
        <metaFeatures
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
      </labelModelFacet>
    </childNodes>
    <childNodes
        xsi:type="gmfgen:GenChildLabelNode"
        visualID="3003"
        editPartClassName="ExtensionPoint2EditPart"
        itemSemanticEditPolicyClassName="ExtensionPoint2ItemSemanticEditPolicy"
        notationViewFactoryClassName="ExtensionPoint2ViewFactory"
        canonicalEditPolicyClassName="ExtensionPoint2CanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ExtensionPoint2GraphicalNodeEditPolicy"
        createCommandClassName="ExtensionPoint2CreateCommand"
        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.1/@elementType"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.draw2d.Label">
        <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/ExtensionPoint"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/extensionPoint"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/extensionPoint"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.5">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labelModelFacet
          xsi:type="gmfgen:FeatureLabelModelFacet"
          editPattern="">
        <metaFeatures
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
      </labelModelFacet>
    </childNodes>
    <childNodes
        visualID="3004"
        editPartClassName="InnerUseCaseEditPart"
        itemSemanticEditPolicyClassName="InnerUseCaseItemSemanticEditPolicy"
        notationViewFactoryClassName="InnerUseCaseViewFactory"
        canonicalEditPolicyClassName="InnerUseCaseCanonicalEditPolicy"
        compartments="//@diagram/@compartments.4"
        graphicalNodeEditPolicyClassName="InnerUseCaseGraphicalNodeEditPolicy"
        createCommandClassName="InnerUseCaseCreateCommand"
        containers="//@diagram/@compartments.3">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@topLevelNodes.3/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="UseCaseFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCaseFigure extends org.eclipse.draw2d.Ellipse {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fUseCaseFigure_name; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fUseCaseFigure_contents; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCaseFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.SplitEllipseLayout layoutThis = new org.eclipse.uml2.diagram.common.draw2d.SplitEllipseLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fUseCaseFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseFigure_name, org.eclipse.draw2d.BorderLayout.TOP);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseFigure_contents = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;fUseCaseFigure_contents.setFill(false);&#xD;&#xA;fUseCaseFigure_contents.setOutline(false);&#xD;&#xA;fUseCaseFigure_contents.setBorder(createBorder0());&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseFigure_contents, org.eclipse.draw2d.BorderLayout.CENTER);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Border createBorder0() {&#xD;&#xA;&#x9;&#x9;org.eclipse.uml2.diagram.common.draw2d.OneLineDashedBorder result = new org.eclipse.uml2.diagram.common.draw2d.OneLineDashedBorder();&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return result;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getUseCaseFigure_name() {&#xD;&#xA;&#x9;&#x9;return fUseCaseFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getUseCaseFigure_contents() {&#xD;&#xA;&#x9;&#x9;return fUseCaseFigure_contents;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="140"
            height="60"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Classifier/ownedUseCase"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Classifier/useCase"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.2">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5006"
          editPartClassName="UseCaseName3EditPart"
          itemSemanticEditPolicyClassName="UseCaseName3ItemSemanticEditPolicy"
          notationViewFactoryClassName="UseCaseName3ViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getUseCaseFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <attributes
              xsi:type="gmfgen:StyleAttributes"
              fixedFont="true"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        visualID="3005"
        editPartClassName="ActorInPackageEditPart"
        itemSemanticEditPolicyClassName="ActorInPackageItemSemanticEditPolicy"
        notationViewFactoryClassName="ActorInPackageViewFactory"
        canonicalEditPolicyClassName="ActorInPackageCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ActorInPackageGraphicalNodeEditPolicy"
        createCommandClassName="ActorInPackageCreateCommand"
        containers="//@diagram/@compartments.5">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.uml2.diagram.usecase.draw2d.StickMan">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="30"
            height="50"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Actor"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.0">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          xsi:type="gmfgen:GenExternalNodeLabel"
          visualID="5009"
          editPartClassName="ActorName3EditPart"
          itemSemanticEditPolicyClassName="ActorName3ItemSemanticEditPolicy"
          notationViewFactoryClassName="ActorName3ViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <childNodes
        visualID="3006"
        editPartClassName="UseCaseinPackageEditPart"
        itemSemanticEditPolicyClassName="UseCaseinPackageItemSemanticEditPolicy"
        notationViewFactoryClassName="UseCaseinPackageViewFactory"
        canonicalEditPolicyClassName="UseCaseinPackageCanonicalEditPolicy"
        compartments="//@diagram/@compartments.6"
        graphicalNodeEditPolicyClassName="UseCaseinPackageGraphicalNodeEditPolicy"
        createCommandClassName="UseCaseinPackageCreateCommand"
        containers="//@diagram/@compartments.5">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@topLevelNodes.3/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="UseCaseFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCaseFigure extends org.eclipse.draw2d.Ellipse {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fUseCaseFigure_name; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fUseCaseFigure_contents; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCaseFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.SplitEllipseLayout layoutThis = new org.eclipse.uml2.diagram.common.draw2d.SplitEllipseLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fUseCaseFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseFigure_name, org.eclipse.draw2d.BorderLayout.TOP);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseFigure_contents = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;fUseCaseFigure_contents.setFill(false);&#xD;&#xA;fUseCaseFigure_contents.setOutline(false);&#xD;&#xA;fUseCaseFigure_contents.setBorder(createBorder0());&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseFigure_contents, org.eclipse.draw2d.BorderLayout.CENTER);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Border createBorder0() {&#xD;&#xA;&#x9;&#x9;org.eclipse.uml2.diagram.common.draw2d.OneLineDashedBorder result = new org.eclipse.uml2.diagram.common.draw2d.OneLineDashedBorder();&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return result;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getUseCaseFigure_name() {&#xD;&#xA;&#x9;&#x9;return fUseCaseFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getUseCaseFigure_contents() {&#xD;&#xA;&#x9;&#x9;return fUseCaseFigure_contents;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="140"
            height="60"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.2">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5010"
          editPartClassName="UseCaseName4EditPart"
          itemSemanticEditPolicyClassName="UseCaseName4ItemSemanticEditPolicy"
          notationViewFactoryClassName="UseCaseName4ViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getUseCaseFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </childNodes>
    <topLevelNodes
        visualID="2001"
        editPartClassName="DiagramHeaderEditPart"
        itemSemanticEditPolicyClassName="DiagramHeaderItemSemanticEditPolicy"
        notationViewFactoryClassName="DiagramHeaderViewFactory"
        canonicalEditPolicyClassName="DiagramHeaderCanonicalEditPolicy"
        compartments="//@diagram/@compartments.0"
        primaryDragEditPolicyQualifiedClassName="org.eclipse.uml2.diagram.common.editpolicies.UnmovableUnselectableShapeEditPolicy"
        graphicalNodeEditPolicyClassName="DiagramHeaderGraphicalNodeEditPolicy"
        createCommandClassName="DiagramHeaderCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="SecondaryPackageFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class SecondaryPackageFigure extends org.eclipse.draw2d.Shape {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fFigureSecondaryPackage_PackageLabel; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fFigureSecondaryPackage_NameLabel; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fFigureSecondaryPackage_Imports; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public SecondaryPackageFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutThis = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;layoutThis.setStretchMinorAxis(true);&#xD;&#xA;&#x9;layoutThis.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xD;&#xA;);&#xD;&#xA;&#xD;&#xA;&#x9;layoutThis.setSpacing(0);&#xD;&#xA;&#x9;layoutThis.setVertical(true);&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;this.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;));&#xD;&#xA;this.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(40)&#xD;&#xA;));&#xD;&#xA;this.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(35)&#xD;&#xA;, getMapMode().DPtoLP(40)&#xD;&#xA;));&#xD;&#xA;this.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(40)&#xD;&#xA;, getMapMode().DPtoLP(35)&#xD;&#xA;));&#xD;&#xA;this.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(40)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(13)&#xD;&#xA;, getMapMode().DPtoLP(10)&#xD;&#xA;));&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fFigureSecondaryPackage_PackageLabel = new org.eclipse.draw2d.Label();&#xD;&#xA;fFigureSecondaryPackage_PackageLabel.setText(&quot;Package&quot;);&#xD;&#xA;&#xD;&#xA;this.add(fFigureSecondaryPackage_PackageLabel);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fFigureSecondaryPackage_NameLabel = new org.eclipse.draw2d.Label();&#xD;&#xA;fFigureSecondaryPackage_NameLabel.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;this.add(fFigureSecondaryPackage_NameLabel);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fFigureSecondaryPackage_Imports = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;fFigureSecondaryPackage_Imports.setOutline(false);&#xD;&#xA;&#xD;&#xA;this.add(fFigureSecondaryPackage_Imports);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private final org.eclipse.draw2d.geometry.PointList myTemplate = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.geometry.Rectangle myTemplateBounds;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public void addPoint(org.eclipse.draw2d.geometry.Point point){&#xD;&#xA;&#x9;&#x9;myTemplate.addPoint(point);&#xD;&#xA;&#x9;&#x9;myTemplateBounds = null;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void fillShape(org.eclipse.draw2d.Graphics graphics) {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle bounds = getBounds();&#xD;&#xA;&#x9;&#x9;graphics.pushState();&#xD;&#xA;&#x9;&#x9;graphics.translate(bounds.x, bounds.y);&#xD;&#xA;&#x9;&#x9;graphics.fillPolygon(scalePointList());&#xD;&#xA;&#x9;&#x9;graphics.popState();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void outlineShape(org.eclipse.draw2d.Graphics graphics) {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle bounds = getBounds();&#xD;&#xA;&#x9;&#x9;graphics.pushState();&#xD;&#xA;&#x9;&#x9;graphics.translate(bounds.x, bounds.y);&#xD;&#xA;&#x9;&#x9;graphics.drawPolygon(scalePointList());&#xD;&#xA;&#x9;&#x9;graphics.popState();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.geometry.Rectangle getTemplateBounds(){&#xD;&#xA;&#x9;&#x9;if (myTemplateBounds == null){&#xD;&#xA;&#x9;&#x9;&#x9;myTemplateBounds = myTemplate.getBounds().getCopy().union(0, 0);&#xD;&#xA;&#x9;&#x9;&#x9;//just safety -- we are going to use this as divider &#xD;&#xA;&#x9;&#x9;&#x9;if (myTemplateBounds.width &lt; 1){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;myTemplateBounds.width = 1;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;if (myTemplateBounds.height &lt; 1){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;myTemplateBounds.height = 1;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return myTemplateBounds;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private int[] scalePointList() {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle pointsBounds = getTemplateBounds();&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle actualBounds = getBounds();&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;float xScale = ((float) actualBounds.width) / pointsBounds.width;&#xD;&#xA;&#x9;&#x9;float yScale = ((float) actualBounds.height) / pointsBounds.height;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;if (xScale == 1 &amp;&amp; yScale == 1) {&#xD;&#xA;&#x9;&#x9;&#x9;return myTemplate.toIntArray();&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;int[] scaled = (int[]) myTemplate.toIntArray().clone();&#xD;&#xA;&#x9;&#x9;for (int i = 0; i &lt; scaled.length; i += 2) {&#xD;&#xA;&#x9;&#x9;&#x9;scaled[i] = (int) Math.floor(scaled[i] * xScale);&#xD;&#xA;&#x9;&#x9;&#x9;scaled[i + 1] = (int) Math.floor(scaled[i + 1] * yScale);&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return scaled;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getFigureSecondaryPackage_PackageLabel() {&#xD;&#xA;&#x9;&#x9;return fFigureSecondaryPackage_PackageLabel;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getFigureSecondaryPackage_NameLabel() {&#xD;&#xA;&#x9;&#x9;return fFigureSecondaryPackage_NameLabel;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getFigureSecondaryPackage_Imports() {&#xD;&#xA;&#x9;&#x9;return fFigureSecondaryPackage_Imports;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="100"
            height="60"/>
        <attributes
            xsi:type="uml2.gmfgenext:AuxSecondaryDiagramNodeAttribute"
            substituteWithCanvasElement="true"/>
        <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <behaviour
          xsi:type="gmfgen:CustomBehaviour"
          key="&quot;ConnectionHandlesPolicy&quot;"
          editPolicyQualifiedClassName="org.eclipse.uml2.diagram.common.editpolicies.DoNothingEditPolicy"/>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Component/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Component/packagedElement"/>
      </modelFacet>
      <labels
          visualID="5001"
          editPartClassName="PackageNameEditPart"
          itemSemanticEditPolicyClassName="PackageNameItemSemanticEditPolicy"
          notationViewFactoryClassName="PackageNameViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureSecondaryPackage_NameLabel"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2002"
        editPartClassName="ActorEditPart"
        itemSemanticEditPolicyClassName="ActorItemSemanticEditPolicy"
        notationViewFactoryClassName="ActorViewFactory"
        canonicalEditPolicyClassName="ActorCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ActorGraphicalNodeEditPolicy"
        createCommandClassName="ActorCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ActorEditHelper"/>
      <viewmap
          xsi:type="gmfgen:FigureViewmap"
          figureQualifiedClassName="org.eclipse.uml2.diagram.usecase.draw2d.StickMan">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="30"
            height="50"/>
        <attributes
            xsi:type="uml2.gmfgenext:SubstitutableByAttributes">
          <substitutableByIDs>2005</substitutableByIDs>
        </attributes>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Actor"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.0">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          xsi:type="gmfgen:GenExternalNodeLabel"
          visualID="5002"
          editPartClassName="ActorNameEditPart"
          itemSemanticEditPolicyClassName="ActorNameItemSemanticEditPolicy"
          notationViewFactoryClassName="ActorNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:FigureViewmap"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2005"
        editPartClassName="ActorAsRectangleEditPart"
        itemSemanticEditPolicyClassName="ActorAsRectangleItemSemanticEditPolicy"
        notationViewFactoryClassName="ActorAsRectangleViewFactory"
        canonicalEditPolicyClassName="ActorAsRectangleCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ActorAsRectangleGraphicalNodeEditPolicy"
        createCommandClassName="ActorAsRectangleCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@topLevelNodes.1/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="ActorAsRectangleFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class ActorAsRectangleFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fActorAsRectangleFigure_name; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public ActorAsRectangleFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutThis = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;layoutThis.setStretchMinorAxis(true);&#xD;&#xA;&#x9;layoutThis.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xD;&#xA;);&#xD;&#xA;&#xD;&#xA;&#x9;layoutThis.setSpacing(0);&#xD;&#xA;&#x9;layoutThis.setVertical(true);&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.Label actorAsRectangleFigure_fixed_actor0 = new org.eclipse.draw2d.Label();&#xD;&#xA;actorAsRectangleFigure_fixed_actor0.setText(&quot;\u00ABactor\u00BB&quot;);&#xD;&#xA;&#xD;&#xA;this.add(actorAsRectangleFigure_fixed_actor0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.RectangleFigure actorAsRectangleFigure_NameContainer0 = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;actorAsRectangleFigure_NameContainer0.setFill(false);&#xD;&#xA;actorAsRectangleFigure_NameContainer0.setOutline(false);&#xD;&#xA;&#xD;&#xA;this.add(actorAsRectangleFigure_NameContainer0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.CenterLayout layoutActorAsRectangleFigure_NameContainer0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;actorAsRectangleFigure_NameContainer0.setLayoutManager(layoutActorAsRectangleFigure_NameContainer0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fActorAsRectangleFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fActorAsRectangleFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;actorAsRectangleFigure_NameContainer0.add(fActorAsRectangleFigure_name);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getActorAsRectangleFigure_name() {&#xD;&#xA;&#x9;&#x9;return fActorAsRectangleFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="80"
            height="60"/>
        <attributes
            xsi:type="uml2.gmfgenext:SubstitutableByAttributes">
          <substitutableByIDs>2002</substitutableByIDs>
        </attributes>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Actor"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.1">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5005"
          editPartClassName="ActorName2EditPart"
          itemSemanticEditPolicyClassName="ActorName2ItemSemanticEditPolicy"
          notationViewFactoryClassName="ActorName2ViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getActorAsRectangleFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2003"
        editPartClassName="UseCaseEditPart"
        itemSemanticEditPolicyClassName="UseCaseItemSemanticEditPolicy"
        notationViewFactoryClassName="UseCaseViewFactory"
        canonicalEditPolicyClassName="UseCaseCanonicalEditPolicy"
        compartments="//@diagram/@compartments.1"
        graphicalNodeEditPolicyClassName="UseCaseGraphicalNodeEditPolicy"
        createCommandClassName="UseCaseCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="UseCaseEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="UseCaseFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCaseFigure extends org.eclipse.draw2d.Ellipse {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fUseCaseFigure_name; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fUseCaseFigure_contents; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCaseFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.SplitEllipseLayout layoutThis = new org.eclipse.uml2.diagram.common.draw2d.SplitEllipseLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fUseCaseFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseFigure_name, org.eclipse.draw2d.BorderLayout.TOP);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseFigure_contents = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;fUseCaseFigure_contents.setFill(false);&#xD;&#xA;fUseCaseFigure_contents.setOutline(false);&#xD;&#xA;fUseCaseFigure_contents.setBorder(createBorder0());&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseFigure_contents, org.eclipse.draw2d.BorderLayout.CENTER);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Border createBorder0() {&#xD;&#xA;&#x9;&#x9;org.eclipse.uml2.diagram.common.draw2d.OneLineDashedBorder result = new org.eclipse.uml2.diagram.common.draw2d.OneLineDashedBorder();&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return result;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getUseCaseFigure_name() {&#xD;&#xA;&#x9;&#x9;return fUseCaseFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getUseCaseFigure_contents() {&#xD;&#xA;&#x9;&#x9;return fUseCaseFigure_contents;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="140"
            height="60"/>
        <attributes
            xsi:type="uml2.gmfgenext:SubstitutableByAttributes">
          <substitutableByIDs>2004</substitutableByIDs>
        </attributes>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.2">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5003"
          editPartClassName="UseCaseNameEditPart"
          itemSemanticEditPolicyClassName="UseCaseNameItemSemanticEditPolicy"
          notationViewFactoryClassName="UseCaseNameViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getUseCaseFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2004"
        editPartClassName="UseCaseAsClassEditPart"
        itemSemanticEditPolicyClassName="UseCaseAsClassItemSemanticEditPolicy"
        notationViewFactoryClassName="UseCaseAsClassViewFactory"
        canonicalEditPolicyClassName="UseCaseAsClassCanonicalEditPolicy"
        compartments="//@diagram/@compartments.2"
        graphicalNodeEditPolicyClassName="UseCaseAsClassGraphicalNodeEditPolicy"
        createCommandClassName="UseCaseAsClassCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@topLevelNodes.3/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          layoutType="TOOLBAR_LAYOUT"
          className="UseCaseAsClassFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCaseAsClassFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fUseCaseAsClassFigure_stereo; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fUseCaseAsClassFigure_name; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fUseCaseAsClass_points; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCaseAsClassFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutThis = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;layoutThis.setStretchMinorAxis(true);&#xD;&#xA;&#x9;layoutThis.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xD;&#xA;);&#xD;&#xA;&#xD;&#xA;&#x9;layoutThis.setSpacing(0);&#xD;&#xA;&#x9;layoutThis.setVertical(true);&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.RectangleFigure useCaseAsClassFigure_Header0 = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;useCaseAsClassFigure_Header0.setBorder(new org.eclipse.draw2d.LineBorder(null, getMapMode().DPtoLP(1)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;this.add(useCaseAsClassFigure_Header0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutUseCaseAsClassFigure_Header0 = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;layoutUseCaseAsClassFigure_Header0.setStretchMinorAxis(true);&#xD;&#xA;&#x9;layoutUseCaseAsClassFigure_Header0.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_TOPLEFT&#xD;&#xA;);&#xD;&#xA;&#xD;&#xA;&#x9;layoutUseCaseAsClassFigure_Header0.setSpacing(0);&#xD;&#xA;&#x9;layoutUseCaseAsClassFigure_Header0.setVertical(true);&#xD;&#xA;&#xD;&#xA;&#x9;useCaseAsClassFigure_Header0.setLayoutManager(layoutUseCaseAsClassFigure_Header0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.RectangleFigure useCaseAsClassFigure_StereoContainer1 = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;useCaseAsClassFigure_StereoContainer1.setOutline(false);&#xD;&#xA;&#xD;&#xA;useCaseAsClassFigure_Header0.add(useCaseAsClassFigure_StereoContainer1);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.CenterLayout layoutUseCaseAsClassFigure_StereoContainer1 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;useCaseAsClassFigure_StereoContainer1.setLayoutManager(layoutUseCaseAsClassFigure_StereoContainer1);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseAsClassFigure_stereo = new org.eclipse.draw2d.Label();&#xD;&#xA;fUseCaseAsClassFigure_stereo.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;fUseCaseAsClassFigure_stereo.setFont(FUSECASEASCLASSFIGURE_STEREO_FONT);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseAsClassFigure_stereo.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;useCaseAsClassFigure_StereoContainer1.add(fUseCaseAsClassFigure_stereo);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.RectangleFigure useCaseAsClassFigure_NameContainer1 = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;useCaseAsClassFigure_NameContainer1.setOutline(false);&#xD;&#xA;&#xD;&#xA;useCaseAsClassFigure_Header0.add(useCaseAsClassFigure_NameContainer1);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.CenterLayout layoutUseCaseAsClassFigure_NameContainer1 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;useCaseAsClassFigure_NameContainer1.setLayoutManager(layoutUseCaseAsClassFigure_NameContainer1);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseAsClassFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fUseCaseAsClassFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;fUseCaseAsClassFigure_name.setFont(FUSECASEASCLASSFIGURE_NAME_FONT);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseAsClassFigure_name.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;useCaseAsClassFigure_NameContainer1.add(fUseCaseAsClassFigure_name);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseAsClass_points = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseAsClass_points);&#xD;&#xA;&#xD;&#xA;fUseCaseAsClass_points.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getUseCaseAsClassFigure_stereo() {&#xD;&#xA;&#x9;&#x9;return fUseCaseAsClassFigure_stereo;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getUseCaseAsClassFigure_name() {&#xD;&#xA;&#x9;&#x9;return fUseCaseAsClassFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getUseCaseAsClass_points() {&#xD;&#xA;&#x9;&#x9;return fUseCaseAsClass_points;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;static final org.eclipse.swt.graphics.Font FUSECASEASCLASSFIGURE_STEREO_FONT = new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getCurrent(), org.eclipse.swt.widgets.Display.getDefault().getSystemFont().getFontData()[0].getName(), 9, org.eclipse.swt.SWT.NORMAL);&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;static final org.eclipse.swt.graphics.Font FUSECASEASCLASSFIGURE_NAME_FONT = new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getCurrent(), org.eclipse.swt.widgets.Display.getDefault().getSystemFont().getFontData()[0].getName(), 9, org.eclipse.swt.SWT.NORMAL);&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="100"
            height="60"/>
        <attributes
            xsi:type="uml2.gmfgenext:SubstitutableByAttributes">
          <substitutableByIDs>2003</substitutableByIDs>
        </attributes>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.4">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5004"
          editPartClassName="UseCaseName2EditPart"
          itemSemanticEditPolicyClassName="UseCaseName2ItemSemanticEditPolicy"
          notationViewFactoryClassName="UseCaseName2ViewFactory"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getUseCaseAsClassFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <attributes
              xsi:type="gmfgen:StyleAttributes"
              fixedFont="true"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2006"
        editPartClassName="SubjectEditPart"
        itemSemanticEditPolicyClassName="SubjectItemSemanticEditPolicy"
        notationViewFactoryClassName="SubjectViewFactory"
        canonicalEditPolicyClassName="SubjectCanonicalEditPolicy"
        compartments="//@diagram/@compartments.3"
        graphicalNodeEditPolicyClassName="SubjectGraphicalNodeEditPolicy"
        createCommandClassName="SubjectCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ComponentEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="UseCaseSubjectFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCaseSubjectFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fUseCaseSubjectFigure_contents; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fUseCaseSubjectFigure_name; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCaseSubjectFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.PileLayout layoutThis = new org.eclipse.uml2.diagram.common.draw2d.PileLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;layoutThis.setStretchBottom(&#xD;&#xA;true);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;this.setBackgroundColor(org.eclipse.draw2d.ColorConstants.lightGray);&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.RectangleFigure useCaseSubjectFigure_header0 = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;&#xD;&#xA;this.add(useCaseSubjectFigure_header0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.uml2.diagram.common.draw2d.CenterLayout layoutUseCaseSubjectFigure_header0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;useCaseSubjectFigure_header0.setLayoutManager(layoutUseCaseSubjectFigure_header0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseSubjectFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fUseCaseSubjectFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;fUseCaseSubjectFigure_name.setFont(FUSECASESUBJECTFIGURE_NAME_FONT);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseSubjectFigure_name.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;useCaseSubjectFigure_header0.add(fUseCaseSubjectFigure_name);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fUseCaseSubjectFigure_contents = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;&#xD;&#xA;this.add(fUseCaseSubjectFigure_contents);&#xD;&#xA;&#xD;&#xA;fUseCaseSubjectFigure_contents.setLayoutManager(new org.eclipse.draw2d.StackLayout());&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getUseCaseSubjectFigure_contents() {&#xD;&#xA;&#x9;&#x9;return fUseCaseSubjectFigure_contents;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getUseCaseSubjectFigure_name() {&#xD;&#xA;&#x9;&#x9;return fUseCaseSubjectFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;static final org.eclipse.swt.graphics.Font FUSECASESUBJECTFIGURE_NAME_FONT = new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getCurrent(), org.eclipse.swt.widgets.Display.getDefault().getSystemFont().getFontData()[0].getName(), 9, org.eclipse.swt.SWT.NORMAL);&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedBackground="true"/>
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="200"
            height="400"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Component"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/ownedType"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.6">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5007"
          editPartClassName="SubjectNameEditPart"
          itemSemanticEditPolicyClassName="SubjectNameItemSemanticEditPolicy"
          notationViewFactoryClassName="SubjectNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getUseCaseSubjectFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label">
          <attributes
              xsi:type="gmfgen:StyleAttributes"
              fixedFont="true"/>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2007"
        editPartClassName="NestedPackageEditPart"
        itemSemanticEditPolicyClassName="NestedPackageItemSemanticEditPolicy"
        notationViewFactoryClassName="NestedPackageViewFactory"
        canonicalEditPolicyClassName="NestedPackageCanonicalEditPolicy"
        compartments="//@diagram/@compartments.5"
        graphicalNodeEditPolicyClassName="NestedPackageGraphicalNodeEditPolicy"
        createCommandClassName="NestedPackageCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"
          metamodelType="//@diagram/@elementType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="PackageAsFrameFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class PackageAsFrameFigure extends org.eclipse.draw2d.RectangleFigure {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fPackageAsFrameFigure_name; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fPackageAsFrameFigure_fixed_package; &#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RectangleFigure fPackageAsFrameFigure_contents; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public PackageAsFrameFigure() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.BorderLayout layoutThis = new org.eclipse.draw2d.BorderLayout();&#xD;&#xA;&#x9;this.setLayoutManager(layoutThis);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;this.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(1)&#xD;&#xA;, getMapMode().DPtoLP(1)&#xD;&#xA;, getMapMode().DPtoLP(1)&#xD;&#xA;, getMapMode().DPtoLP(1)&#xD;&#xA;));&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;org.eclipse.draw2d.RectangleFigure packageAsFrameFigure_TopRow0 = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;packageAsFrameFigure_TopRow0.setOutline(false);&#xD;&#xA;&#xD;&#xA;this.add(packageAsFrameFigure_TopRow0, org.eclipse.draw2d.BorderLayout.TOP);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutPackageAsFrameFigure_TopRow0 = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_TopRow0.setStretchMinorAxis(true);&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_TopRow0.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xD;&#xA;);&#xD;&#xA;&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_TopRow0.setSpacing(0);&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_TopRow0.setVertical(false);&#xD;&#xA;&#xD;&#xA;&#x9;packageAsFrameFigure_TopRow0.setLayoutManager(layoutPackageAsFrameFigure_TopRow0);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;class PackageAsFrameFigure_header1Class extends org.eclipse.draw2d.Shape {&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private final org.eclipse.draw2d.geometry.PointList myTemplate = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.geometry.Rectangle myTemplateBounds;&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public void addPoint(org.eclipse.draw2d.geometry.Point point){&#xD;&#xA;&#x9;&#x9;myTemplate.addPoint(point);&#xD;&#xA;&#x9;&#x9;myTemplateBounds = null;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void fillShape(org.eclipse.draw2d.Graphics graphics) {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle bounds = getBounds();&#xD;&#xA;&#x9;&#x9;graphics.pushState();&#xD;&#xA;&#x9;&#x9;graphics.translate(bounds.x, bounds.y);&#xD;&#xA;&#x9;&#x9;graphics.fillPolygon(scalePointList());&#xD;&#xA;&#x9;&#x9;graphics.popState();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void outlineShape(org.eclipse.draw2d.Graphics graphics) {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle bounds = getBounds();&#xD;&#xA;&#x9;&#x9;graphics.pushState();&#xD;&#xA;&#x9;&#x9;graphics.translate(bounds.x, bounds.y);&#xD;&#xA;&#x9;&#x9;graphics.drawPolygon(scalePointList());&#xD;&#xA;&#x9;&#x9;graphics.popState();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.geometry.Rectangle getTemplateBounds(){&#xD;&#xA;&#x9;&#x9;if (myTemplateBounds == null){&#xD;&#xA;&#x9;&#x9;&#x9;myTemplateBounds = myTemplate.getBounds().getCopy().union(0, 0);&#xD;&#xA;&#x9;&#x9;&#x9;//just safety -- we are going to use this as divider &#xD;&#xA;&#x9;&#x9;&#x9;if (myTemplateBounds.width &lt; 1){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;myTemplateBounds.width = 1;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;if (myTemplateBounds.height &lt; 1){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;myTemplateBounds.height = 1;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return myTemplateBounds;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private int[] scalePointList() {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle pointsBounds = getTemplateBounds();&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.geometry.Rectangle actualBounds = getBounds();&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;float xScale = ((float) actualBounds.width) / pointsBounds.width;&#xD;&#xA;&#x9;&#x9;float yScale = ((float) actualBounds.height) / pointsBounds.height;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;if (xScale == 1 &amp;&amp; yScale == 1) {&#xD;&#xA;&#x9;&#x9;&#x9;return myTemplate.toIntArray();&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;int[] scaled = (int[]) myTemplate.toIntArray().clone();&#xD;&#xA;&#x9;&#x9;for (int i = 0; i &lt; scaled.length; i += 2) {&#xD;&#xA;&#x9;&#x9;&#x9;scaled[i] = (int) Math.floor(scaled[i] * xScale);&#xD;&#xA;&#x9;&#x9;&#x9;scaled[i + 1] = (int) Math.floor(scaled[i + 1] * yScale);&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return scaled;&#xD;&#xA;&#x9;}&#xD;&#xA;};&#xD;&#xA;PackageAsFrameFigure_header1Class packageAsFrameFigure_header1 = new PackageAsFrameFigure_header1Class();&#xD;&#xA;&#xD;&#xA;packageAsFrameFigure_header1.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;));&#xD;&#xA;packageAsFrameFigure_header1.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(40)&#xD;&#xA;));&#xD;&#xA;packageAsFrameFigure_header1.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(35)&#xD;&#xA;, getMapMode().DPtoLP(40)&#xD;&#xA;));&#xD;&#xA;packageAsFrameFigure_header1.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(40)&#xD;&#xA;, getMapMode().DPtoLP(35)&#xD;&#xA;));&#xD;&#xA;packageAsFrameFigure_header1.addPoint(new org.eclipse.draw2d.geometry.Point(getMapMode().DPtoLP(40)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;packageAsFrameFigure_header1.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(10)&#xD;&#xA;, getMapMode().DPtoLP(10)&#xD;&#xA;, getMapMode().DPtoLP(13)&#xD;&#xA;, getMapMode().DPtoLP(13)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;packageAsFrameFigure_TopRow0.add(packageAsFrameFigure_header1);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;org.eclipse.draw2d.ToolbarLayout layoutPackageAsFrameFigure_header1 = new org.eclipse.draw2d.ToolbarLayout();&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_header1.setStretchMinorAxis(true);&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_header1.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER&#xD;&#xA;);&#xD;&#xA;&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_header1.setSpacing(10);&#xD;&#xA;&#x9;layoutPackageAsFrameFigure_header1.setVertical(false);&#xD;&#xA;&#xD;&#xA;&#x9;packageAsFrameFigure_header1.setLayoutManager(layoutPackageAsFrameFigure_header1);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fPackageAsFrameFigure_fixed_package = new org.eclipse.draw2d.Label();&#xD;&#xA;fPackageAsFrameFigure_fixed_package.setText(&quot;package&quot;);&#xD;&#xA;&#xD;&#xA;packageAsFrameFigure_header1.add(fPackageAsFrameFigure_fixed_package);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fPackageAsFrameFigure_name = new org.eclipse.draw2d.Label();&#xD;&#xA;fPackageAsFrameFigure_name.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;packageAsFrameFigure_header1.add(fPackageAsFrameFigure_name);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fPackageAsFrameFigure_contents = new org.eclipse.draw2d.RectangleFigure();&#xD;&#xA;fPackageAsFrameFigure_contents.setOutline(false);&#xD;&#xA;&#x9;fPackageAsFrameFigure_contents.setForegroundColor(org.eclipse.draw2d.ColorConstants.white);&#xD;&#xA;&#xD;&#xA;this.add(fPackageAsFrameFigure_contents, org.eclipse.draw2d.BorderLayout.CENTER);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getPackageAsFrameFigure_name() {&#xD;&#xA;&#x9;&#x9;return fPackageAsFrameFigure_name;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getPackageAsFrameFigure_fixed_package() {&#xD;&#xA;&#x9;&#x9;return fPackageAsFrameFigure_fixed_package;&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.RectangleFigure getPackageAsFrameFigure_contents() {&#xD;&#xA;&#x9;&#x9;return fPackageAsFrameFigure_contents;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:DefaultSizeAttributes"
            width="300"
            height="100"/>
        <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <behaviour
          xsi:type="gmfgen:OpenDiagramBehaviour"
          diagramKind="FIXME put GenEditorGenerator.modelID value here"
          editorID="FIXME put GenEditorView.id value here"/>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/nestedPackage"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenFeatureValueSpec"
              value="//@expressionProviders/@providers.0/@expressions.7">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5008"
          editPartClassName="NestedPackageNameEditPart"
          itemSemanticEditPolicyClassName="NestedPackageNameItemSemanticEditPolicy"
          notationViewFactoryClassName="NestedPackageNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getPackageAsFrameFigure_name"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <topLevelNodes
        visualID="2008"
        editPartClassName="ConstraintEditPart"
        itemSemanticEditPolicyClassName="ConstraintItemSemanticEditPolicy"
        notationViewFactoryClassName="ConstraintViewFactory"
        canonicalEditPolicyClassName="ConstraintCanonicalEditPolicy"
        graphicalNodeEditPolicyClassName="ConstraintGraphicalNodeEditPolicy"
        createCommandClassName="ConstraintCreateCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ConstraintEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="ConstraintFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class ConstraintFigure extends org.eclipse.uml2.diagram.common.draw2d.MultilineConstraintFigure {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.Label fFigureConstraintFigure_Value; &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public ConstraintFigure() {&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;createContents();&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private void createContents(){&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;fFigureConstraintFigure_Value = new org.eclipse.draw2d.Label();&#xD;&#xA;fFigureConstraintFigure_Value.setText(&quot;&quot;);&#xD;&#xA;&#xD;&#xA;fFigureConstraintFigure_Value.setBorder(new org.eclipse.draw2d.MarginBorder(getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;, getMapMode().DPtoLP(5)&#xD;&#xA;));&#xD;&#xA;&#xD;&#xA;this.add(fFigureConstraintFigure_Value);&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private boolean myUseLocalCoordinates = false;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected boolean useLocalCoordinates() {&#xD;&#xA;&#x9;&#x9;return myUseLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;protected void setUseLocalCoordinates(boolean useLocalCoordinates) {&#xD;&#xA;&#x9;&#x9;myUseLocalCoordinates = useLocalCoordinates;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public org.eclipse.draw2d.Label getFigureConstraintFigure_Value() {&#xD;&#xA;&#x9;&#x9;return fFigureConstraintFigure_Value;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet>
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Constraint"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <modelElementInitializer
            xsi:type="gmfgen:GenFeatureSeqInitializer">
          <initializers
              xsi:type="gmfgen:GenReferenceNewElementSpec">
            <feature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Constraint/specification"/>
            <newElementInitializers>
              <initializers
                  xsi:type="gmfgen:GenFeatureValueSpec"
                  value="//@expressionProviders/@providers.0/@expressions.8">
                <feature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/LiteralString/value"/>
              </initializers>
              <elementClass
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/LiteralString"/>
            </newElementInitializers>
          </initializers>
        </modelElementInitializer>
      </modelFacet>
      <labels
          visualID="5011"
          editPartClassName="ConstraintNameEditPart"
          itemSemanticEditPolicyClassName="ConstraintNameItemSemanticEditPolicy"
          notationViewFactoryClassName="ConstraintNameViewFactory">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:ParentAssignedViewmap"
            getterName="getFigureConstraintFigure_Value"
            figureQualifiedClassName="org.eclipse.draw2d.Label"/>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet"
            editPattern="">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
    </topLevelNodes>
    <links
        visualID="4001"
        editPartClassName="IncludeEditPart"
        itemSemanticEditPolicyClassName="IncludeItemSemanticEditPolicy"
        notationViewFactoryClassName="IncludeViewFactory"
        createCommandClassName="IncludeCreateCommand"
        reorientCommandClassName="IncludeReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="IncludeEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="UseCases_WithArrow_Polyline"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCases_WithArrow_Polyline extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCases_WithArrow_Polyline() {&#xD;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xD;&#xA;&#x9;this.setForegroundColor(org.eclipse.draw2d.ColorConstants.black);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xD;&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-1)&#xD;&#xA;, getMapMode().DPtoLP(1)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-1)&#xD;&#xA;, getMapMode().DPtoLP(-1)&#xD;&#xA;);&#xD;&#xA;df.setTemplate(pl);&#xD;&#xA;df.setScale(getMapMode().DPtoLP(7)&#xD;&#xA;, getMapMode().DPtoLP(3)&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Include"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/include"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/include"/>
        <sourceMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Include/includingCase"/>
        <targetMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Include/addition"/>
      </modelFacet>
      <labels
          visualID="6001"
          editPartClassName="IncludeLink_fixedEditPart"
          itemSemanticEditPolicyClassName="IncludeLink_fixedItemSemanticEditPolicy"
          notationViewFactoryClassName="IncludeLink_fixedViewFactory"
          readOnly="true"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:InnerClassViewmap"
            className="IncludeLink_fixed"
            classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class IncludeLink_fixed extends org.eclipse.draw2d.Label {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public IncludeLink_fixed() {&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;\u00ABinclude\u00BB&quot;);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="20"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
      </labels>
    </links>
    <links
        visualID="4002"
        editPartClassName="ExtendEditPart"
        itemSemanticEditPolicyClassName="ExtendItemSemanticEditPolicy"
        notationViewFactoryClassName="ExtendViewFactory"
        createCommandClassName="ExtendCreateCommand"
        reorientCommandClassName="ExtendReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="ExtendEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="UseCases_WithArrow_Polyline"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class UseCases_WithArrow_Polyline extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public UseCases_WithArrow_Polyline() {&#xD;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xD;&#xA;&#x9;this.setForegroundColor(org.eclipse.draw2d.ColorConstants.black);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xD;&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-1)&#xD;&#xA;, getMapMode().DPtoLP(1)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-1)&#xD;&#xA;, getMapMode().DPtoLP(-1)&#xD;&#xA;);&#xD;&#xA;df.setTemplate(pl);&#xD;&#xA;df.setScale(getMapMode().DPtoLP(7)&#xD;&#xA;, getMapMode().DPtoLP(3)&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Extend"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/extend"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/UseCase/extend"/>
        <sourceMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Extend/extension"/>
        <targetMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Extend/extendedCase"/>
      </modelFacet>
      <labels
          visualID="6002"
          editPartClassName="ExtendsLink_fixedEditPart"
          itemSemanticEditPolicyClassName="ExtendsLink_fixedItemSemanticEditPolicy"
          notationViewFactoryClassName="ExtendsLink_fixedViewFactory"
          readOnly="true"
          elementIcon="true">
        <diagramRunTimeClass
            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
        <viewmap
            xsi:type="gmfgen:InnerClassViewmap"
            className="ExtendsLink_fixed"
            classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class ExtendsLink_fixed extends org.eclipse.draw2d.Label {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public ExtendsLink_fixed() {&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;this.setText(&quot;\u00ABextend\u00BB&quot;);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="20"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
      </labels>
    </links>
    <links
        visualID="4003"
        editPartClassName="GeneralizationEditPart"
        itemSemanticEditPolicyClassName="GeneralizationItemSemanticEditPolicy"
        notationViewFactoryClassName="GeneralizationViewFactory"
        createCommandClassName="GeneralizationCreateCommand"
        reorientCommandClassName="GeneralizationReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="GeneralizationEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="SolidLineWDstClosedArrow"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class SolidLineWDstClosedArrow extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public SolidLineWDstClosedArrow() {&#xD;&#xA;&#x9;&#x9;&#xD;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.PolygonDecoration df = new org.eclipse.draw2d.PolygonDecoration();&#xD;&#xA;&#x9;df.setBackgroundColor(org.eclipse.draw2d.ColorConstants.white);&#xD;&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xD;&#xA;, getMapMode().DPtoLP(2)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-2)&#xD;&#xA;, getMapMode().DPtoLP(-2)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;);&#xD;&#xA;df.setTemplate(pl);&#xD;&#xA;df.setScale(getMapMode().DPtoLP(7)&#xD;&#xA;, getMapMode().DPtoLP(3)&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet">
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Generalization"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Classifier/generalization"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Classifier/generalization"/>
        <sourceMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Generalization/specific"/>
        <targetMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Generalization/general"/>
      </modelFacet>
      <creationConstraints
          sourceEnd="//@expressionProviders/@providers.0/@expressions.9"
          targetEnd="//@expressionProviders/@providers.0/@expressions.10"/>
    </links>
    <links
        visualID="4004"
        editPartClassName="AssociationEditPart"
        itemSemanticEditPolicyClassName="AssociationItemSemanticEditPolicy"
        notationViewFactoryClassName="AssociationViewFactory"
        createCommandClassName="AssociationCreateCommand"
        reorientCommandClassName="AssociationReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="AssociationEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="AssociationLinkFigure"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class AssociationLinkFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public AssociationLinkFigure() {&#xD;&#xA;&#x9;&#x9;&#x9;this.setForegroundColor(org.eclipse.draw2d.ColorConstants.blue);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setSourceDecoration(createSourceDecoration());&#xD;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createSourceDecoration() {&#xD;&#xA;&#x9;&#x9;org.eclipse.uml2.diagram.common.draw2d.decoration.AssociationDecoration df = new org.eclipse.uml2.diagram.common.draw2d.decoration.AssociationDecoration();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xD;&#xA;&#x9;&#x9;org.eclipse.uml2.diagram.common.draw2d.decoration.AssociationDecoration df = new org.eclipse.uml2.diagram.common.draw2d.decoration.AssociationDecoration();&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet"
          modelElementSelector="//@expressionProviders/@providers.0/@expressions.11">
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Association"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <sourceMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/TypedElement/type"/>
        <targetMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/TypedElement/type"/>
      </modelFacet>
      <labels
          visualID="6003"
          editPartClassName="AssociationTargetMultiplicityEditPart"
          itemSemanticEditPolicyClassName="AssociationTargetMultiplicityItemSemanticEditPolicy"
          notationViewFactoryClassName="AssociationTargetMultiplicityViewFactory"
          alignment="TARGET">
        <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="15"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
      <labels
          visualID="6004"
          editPartClassName="AssociationSourceMultiplicityEditPart"
          itemSemanticEditPolicyClassName="AssociationSourceMultiplicityItemSemanticEditPolicy"
          notationViewFactoryClassName="AssociationSourceMultiplicityViewFactory"
          alignment="SOURCE">
        <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="15"/>
          <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.uml2.diagram.common</requiredPluginIDs>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
      <creationConstraints
          sourceEnd="//@expressionProviders/@providers.0/@expressions.12"
          targetEnd="//@expressionProviders/@providers.0/@expressions.13"/>
    </links>
    <links
        visualID="4005"
        editPartClassName="ConstraintConstrainedElementEditPart"
        itemSemanticEditPolicyClassName="ConstraintConstrainedElementItemSemanticEditPolicy"
        notationViewFactoryClassName="ConstraintConstrainedElementViewFactory"
        createCommandClassName="ConstraintConstrainedElementCreateCommand"
        reorientCommandClassName="ConstraintConstrainedElementReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:SpecializationType"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="DashedLineConnection"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class DashedLineConnection extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public DashedLineConnection() {&#xD;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xD;&#xA;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <requiredPluginIDs>org.eclipse.draw2d</requiredPluginIDs>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:FeatureLinkModelFacet">
        <metaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Constraint/constrainedElement"/>
      </modelFacet>
    </links>
    <links
        visualID="4006"
        editPartClassName="DependencyEditPart"
        itemSemanticEditPolicyClassName="DependencyItemSemanticEditPolicy"
        notationViewFactoryClassName="DependencyViewFactory"
        createCommandClassName="DependencyCreateCommand"
        reorientCommandClassName="DependencyReorientCommand">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
      <elementType
          xsi:type="gmfgen:MetamodelType"
          editHelperClassName="DependencyEditHelper"/>
      <viewmap
          xsi:type="gmfgen:InnerClassViewmap"
          className="Dependency_WithArrow_Polyline"
          classBody="&#xD;&#xA;/**&#xD;&#xA; * @generated&#xD;&#xA; */&#xD;&#xA;public class Dependency_WithArrow_Polyline extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;public Dependency_WithArrow_Polyline() {&#xD;&#xA;&#x9;&#x9;this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH);&#xD;&#xA;&#x9;this.setForegroundColor(org.eclipse.draw2d.ColorConstants.lightGray);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;setTargetDecoration(createTargetDecoration());&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;/**&#xD;&#xA;&#x9; * @generated&#xD;&#xA;&#x9; */&#xD;&#xA;&#x9;private org.eclipse.draw2d.RotatableDecoration createTargetDecoration() {&#xD;&#xA;&#x9;&#x9;org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration();&#xD;&#xA;org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList();&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-1)&#xD;&#xA;, getMapMode().DPtoLP(1)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(0)&#xD;&#xA;, getMapMode().DPtoLP(0)&#xD;&#xA;);&#xD;&#xA;pl.addPoint(getMapMode().DPtoLP(-1)&#xD;&#xA;, getMapMode().DPtoLP(-1)&#xD;&#xA;);&#xD;&#xA;df.setTemplate(pl);&#xD;&#xA;df.setScale(getMapMode().DPtoLP(7)&#xD;&#xA;, getMapMode().DPtoLP(3)&#xD;&#xA;);&#xD;&#xA;&#x9;&#x9;return df;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
        <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
      </viewmap>
      <modelFacet
          xsi:type="gmfgen:TypeLinkModelFacet"
          modelElementSelector="//@expressionProviders/@providers.0/@expressions.14">
        <metaClass
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Dependency"/>
        <containmentMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <childMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Package/packagedElement"/>
        <sourceMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Dependency/client"/>
        <targetMetaFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/Dependency/supplier"/>
      </modelFacet>
      <labels
          visualID="6005"
          editPartClassName="DependencyNameEditPart"
          itemSemanticEditPolicyClassName="DependencyNameItemSemanticEditPolicy"
          notationViewFactoryClassName="DependencyNameViewFactory"
          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">
          <attributes
              xsi:type="gmfgen:LabelOffsetAttributes"
              y="40"/>
          <requiredPluginIDs>org.eclipse.gmf.runtime.draw2d.ui</requiredPluginIDs>
        </viewmap>
        <modelFacet
            xsi:type="gmfgen:FeatureLabelModelFacet">
          <metaFeatures
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement/name"/>
        </modelFacet>
      </labels>
      <creationConstraints
          targetEnd="//@expressionProviders/@providers.0/@expressions.15"/>
    </links>
    <compartments
        visualID="7001"
        editPartClassName="PackageImportsEditPart"
        itemSemanticEditPolicyClassName="PackageImportsItemSemanticEditPolicy"
        notationViewFactoryClassName="PackageImportsViewFactory"
        canonicalEditPolicyClassName="PackageImportsCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.0"
        title="imports"
        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="getFigureSecondaryPackage_Imports"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7002"
        editPartClassName="UseCaseExtensionPointsEditPart"
        itemSemanticEditPolicyClassName="UseCaseExtensionPointsItemSemanticEditPolicy"
        notationViewFactoryClassName="UseCaseExtensionPointsViewFactory"
        canonicalEditPolicyClassName="UseCaseExtensionPointsCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="points"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.3">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getUseCaseFigure_contents"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7003"
        editPartClassName="UseCaseAsClassExtensionPointsEditPart"
        itemSemanticEditPolicyClassName="UseCaseAsClassExtensionPointsItemSemanticEditPolicy"
        notationViewFactoryClassName="UseCaseAsClassExtensionPointsViewFactory"
        canonicalEditPolicyClassName="UseCaseAsClassExtensionPointsCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.2"
        title="extension points"
        node="//@diagram/@topLevelNodes.4">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getUseCaseAsClass_points"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7004"
        editPartClassName="SubjectUsecasesEditPart"
        itemSemanticEditPolicyClassName="SubjectUsecasesItemSemanticEditPolicy"
        notationViewFactoryClassName="SubjectUsecasesViewFactory"
        canonicalEditPolicyClassName="SubjectUsecasesCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.3"
        title="use cases"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.5"
        listLayout="false">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getUseCaseSubjectFigure_contents"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7005"
        editPartClassName="InnerUseCaseExtensionPointsEditPart"
        itemSemanticEditPolicyClassName="InnerUseCaseExtensionPointsItemSemanticEditPolicy"
        notationViewFactoryClassName="InnerUseCaseExtensionPointsViewFactory"
        canonicalEditPolicyClassName="InnerUseCaseExtensionPointsCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="points"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@childNodes.3">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getUseCaseFigure_contents"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <compartments
        visualID="7006"
        editPartClassName="PackageFramecontentsEditPart"
        itemSemanticEditPolicyClassName="PackageFramecontentsItemSemanticEditPolicy"
        notationViewFactoryClassName="PackageFramecontentsViewFactory"
        canonicalEditPolicyClassName="PackageFramecontentsCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.5"
        title="frame contents"
        needsTitle="false"
        node="//@diagram/@topLevelNodes.6"
        listLayout="false">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getPackageAsFrameFigure_contents"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure">
        <attributes
            xsi:type="gmfgen:StyleAttributes"
            fixedForeground="true"/>
      </viewmap>
    </compartments>
    <compartments
        visualID="7007"
        editPartClassName="UseCasePointsEditPart"
        itemSemanticEditPolicyClassName="UseCasePointsItemSemanticEditPolicy"
        notationViewFactoryClassName="UseCasePointsViewFactory"
        canonicalEditPolicyClassName="UseCasePointsCanonicalEditPolicy"
        childNodes="//@diagram/@childNodes.1"
        title="points"
        canCollapse="false"
        needsTitle="false"
        node="//@diagram/@childNodes.5">
      <diagramRunTimeClass
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
      <viewmap
          xsi:type="gmfgen:ParentAssignedViewmap"
          getterName="getUseCaseFigure_contents"
          figureQualifiedClassName="org.eclipse.draw2d.RectangleFigure"/>
    </compartments>
    <palette>
      <groups
          title="Nodes"
          description="Diagram Nodes">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Use Case"
            description="Create Use Case"
            genNodes="//@diagram/@topLevelNodes.3 //@diagram/@childNodes.3 //@diagram/@childNodes.5"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Actor"
            description="Create Actor"
            genNodes="//@diagram/@topLevelNodes.1 //@diagram/@childNodes.4"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Subject"
            description="Create Subject"
            genNodes="//@diagram/@topLevelNodes.5"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Package"
            description="Create Package"
            genNodes="//@diagram/@topLevelNodes.6"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Constraint"
            description="Create Constraint"
            genNodes="//@diagram/@topLevelNodes.7"/>
      </groups>
      <groups
          title="Children"
          description="Child Elements of the Diagram Nodes">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Extension Point"
            description="Create Extension Point"
            genNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Element Import"
            description="Create Element Import"
            genNodes="//@diagram/@childNodes.0"/>
      </groups>
      <groups
          title="Links"
          description="Diagram Links">
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Association"
            description="Create Association Link"
            genLinks="//@diagram/@links.3"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Extend"
            description="Create Extend"
            genLinks="//@diagram/@links.1"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Include"
            description="Create Include Link"
            genLinks="//@diagram/@links.0"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Generalization"
            description="Create Generalization Link"
            genLinks="//@diagram/@links.2"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Constrained Element"
            description="Create Constrained Element"
            genLinks="//@diagram/@links.4"/>
        <entries
            xsi:type="gmfgen:ToolEntry"
            title="Dependency"
            description="Create Dependency Link"
            genLinks="//@diagram/@links.5"/>
      </groups>
    </palette>
    <preferencePages
        xsi:type="gmfgen:GenStandardPreferencePage"
        iD="org.eclipse.uml2.uml.diagram.usecase.general"
        name="UML Diagram">
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.uml2.uml.diagram.usecase.appearance"
          name="Appearance"
          kind="Appearance"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.uml2.uml.diagram.usecase.connections"
          name="Connections"
          kind="Connections"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.uml2.uml.diagram.usecase.printing"
          name="Printing"
          kind="Printing"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.uml2.uml.diagram.usecase.rulersAndGrid"
          name="Rulers And Grid"
          kind="RulersAndGrid"/>
      <children
          xsi:type="gmfgen:GenStandardPreferencePage"
          iD="org.eclipse.uml2.uml.diagram.usecase.pathmaps"
          name="Pathmaps"
          kind="Pathmaps"/>
    </preferencePages>
  </diagram>
  <plugin
      iD="org.eclipse.uml2.diagram.usecase"
      name="Use Case Diagram Plugin (Incubation)"
      provider="Eclipse.org"
      version="0.8.0.qualifier"/>
  <editor/>
  <navigator>
    <childReferences
        child="//@diagram"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@childNodes.0"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.0"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.1"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.2"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.3"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@childNodes.2"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.4"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@childNodes.3"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.5"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.6"
        child="//@diagram/@childNodes.4"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        child="//@diagram/@childNodes.1"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.6"
        child="//@diagram/@childNodes.5"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.6"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@topLevelNodes.7"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.0"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@childNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@childNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        child="//@diagram/@links.0"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.0"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@topLevelNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.0"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@childNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.0"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.0"
        child="//@diagram/@childNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        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.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.1"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@topLevelNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.1"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@childNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.1"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@childNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        child="//@diagram/@links.1"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@topLevelNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.1"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@topLevelNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.1"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@childNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.1"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.1"
        child="//@diagram/@childNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        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.2"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@childNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@childNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.2"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@childNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        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/@links.2"
        child="//@diagram/@topLevelNodes.2"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@topLevelNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@childNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@childNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.2"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.2"
        child="//@diagram/@childNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        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.2"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@childNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@childNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.3"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@childNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        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/@links.3"
        child="//@diagram/@topLevelNodes.2"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@topLevelNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@childNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@childNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.3"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.3"
        child="//@diagram/@childNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        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.0"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.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.2"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.6"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.6"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.7"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.7"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@childNodes.0"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.0"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@childNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.1"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@childNodes.2"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.2"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@childNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@childNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@childNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        child="//@diagram/@links.4"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.4"
        child="//@diagram/@topLevelNodes.7"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.7"
        child="//@diagram/@links.4"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram"
        child="//@diagram/@links.5"
        groupName="links"
        groupIcon="icons/linksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.0"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.2"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.6"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.6"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.7"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.7"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.1"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.1"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.2"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.2"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.3"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.4"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.5"
        referenceType="out_target"
        groupName="target"
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        child="//@diagram/@links.5"
        referenceType="in_source"
        groupName="incoming links"
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.0"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.0"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.1"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.2"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.2"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.3"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.4"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.5"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.6"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.6"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@topLevelNodes.7"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@topLevelNodes.7"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.1"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.1"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.2"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.2"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.3"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.3"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.4"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.4"
        child="//@diagram/@links.5"
        referenceType="out_target"
        groupName="outgoing links"
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@links.5"
        child="//@diagram/@childNodes.5"
        referenceType="in_source"
        groupName="source"
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
    <childReferences
        parent="//@diagram/@childNodes.5"
        child="//@diagram/@links.5"
        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="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#/"/>
  <expressionProviders>
    <providers
        xsi:type="gmfgen:GenExpressionInterpreter">
      <expressions
          body="let base : String = 'Actor' in&#xD;&#xA;let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in &#xD;&#xA;let space : Namespace = self.namespace in&#xD;&#xA;let allMissed : Sequence(String) = suffixes->&#xD;&#xA;    select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s))&#xD;&#xA;    ) in&#xD;&#xA;let firstMissed : String = allMissed->first() in &#xD;&#xA;let noMisses : Boolean = firstMissed.oclIsUndefined() in&#xD;&#xA;let allNames : Set(String) = &#xD;&#xA;    if noMisses &#xD;&#xA;    then &#xD;&#xA;    space.member->collect(e : NamedElement | &#xD;&#xA;         if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base&#xD;&#xA;         then '' &#xD;&#xA;         else e.name &#xD;&#xA;         endif)->asSet()->excluding('') else Set{'not in use'} &#xD;&#xA;    endif in &#xD;&#xA;let longestName : String = &#xD;&#xA;    if noMisses&#xD;&#xA;    then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first() &#xD;&#xA;    else 'not in use' &#xD;&#xA;    endif in &#xD;&#xA;if noMisses then &#xD;&#xA;    if longestName.oclIsUndefined() &#xD;&#xA;    then base &#xD;&#xA;    else longestName.concat('1') &#xD;&#xA;    endif &#xD;&#xA;else &#xD;&#xA;    base.concat(firstMissed) &#xD;&#xA;endif "/>
      <expressions
          body="let base : String = 'Actor' in&#xD;&#xA;let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in &#xD;&#xA;let space : Namespace = self.namespace in&#xD;&#xA;let allMissed : Sequence(String) = suffixes->&#xD;&#xA;    select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s))&#xD;&#xA;    ) in&#xD;&#xA;let firstMissed : String = allMissed->first() in &#xD;&#xA;let noMisses : Boolean = firstMissed.oclIsUndefined() in&#xD;&#xA;let allNames : Set(String) = &#xD;&#xA;    if noMisses &#xD;&#xA;    then &#xD;&#xA;    space.member->collect(e : NamedElement | &#xD;&#xA;         if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base&#xD;&#xA;         then '' &#xD;&#xA;         else e.name &#xD;&#xA;         endif)->asSet()->excluding('') else Set{'not in use'} &#xD;&#xA;    endif in &#xD;&#xA;let longestName : String = &#xD;&#xA;    if noMisses&#xD;&#xA;    then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first() &#xD;&#xA;    else 'not in use' &#xD;&#xA;    endif in &#xD;&#xA;if noMisses then &#xD;&#xA;    if longestName.oclIsUndefined() &#xD;&#xA;    then base &#xD;&#xA;    else longestName.concat('1') &#xD;&#xA;    endif &#xD;&#xA;else &#xD;&#xA;    base.concat(firstMissed) &#xD;&#xA;endif "/>
      <expressions
          body=" let base : String = 'UseCase' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
      <expressions
          body=" let base : String = 'point' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
      <expressions
          body=" let base : String = 'UseCase' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
      <expressions
          body=" let base : String = 'point' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
      <expressions
          body="let base : String = 'Subsystem' in&#xD;&#xA;let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in &#xD;&#xA;let space : Namespace = self.namespace in&#xD;&#xA;let allMissed : Sequence(String) = suffixes->&#xD;&#xA;    select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s))&#xD;&#xA;    ) in&#xD;&#xA;let firstMissed : String = allMissed->first() in &#xD;&#xA;let noMisses : Boolean = firstMissed.oclIsUndefined() in&#xD;&#xA;let allNames : Set(String) = &#xD;&#xA;    if noMisses &#xD;&#xA;    then &#xD;&#xA;    space.member->collect(e : NamedElement | &#xD;&#xA;         if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base&#xD;&#xA;         then '' &#xD;&#xA;         else e.name &#xD;&#xA;         endif)->asSet()->excluding('') else Set{'not in use'} &#xD;&#xA;    endif in &#xD;&#xA;let longestName : String = &#xD;&#xA;    if noMisses&#xD;&#xA;    then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first() &#xD;&#xA;    else 'not in use' &#xD;&#xA;    endif in &#xD;&#xA;if noMisses then &#xD;&#xA;    if longestName.oclIsUndefined() &#xD;&#xA;    then base &#xD;&#xA;    else longestName.concat('1') &#xD;&#xA;    endif &#xD;&#xA;else &#xD;&#xA;    base.concat(firstMissed) &#xD;&#xA;endif "/>
      <expressions
          body=" let base : String = 'package' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
      <expressions
          body="'ValueSpecification'"/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) "/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) "/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="not self.oclIsTypeOf(uml::AssociationClass)"/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) "/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) "/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="(self.oclIsTypeOf(uml::Dependency) or self.oclIsTypeOf(uml::Abstraction) or self.oclIsTypeOf(uml::Substitution) or self.oclIsTypeOf(uml::Usage)) and self.supplier->size() = 1 and self.client->size() = 1 and self.supplier->forAll(e|not e.oclIsKindOf(uml::Interface))"/>
      <expressions
          xsi:type="gmfgen:GenConstraint"
          body="not self.oclIsKindOf(uml::Interface)&#xD;&#xA;"/>
    </providers>
  </expressionProviders>
</gmfgen:GenEditorGenerator>
