﻿<?xml version="1.0" encoding="utf-8"?>
<modelStoreModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" xmlns:dm1="http://schemas.microsoft.com/dsltools/Kernel" xmlns:dm2="http://schemas.microsoft.com/dsltools/Component" xmlns:dm3="http://schemas.microsoft.com/dsltools/UseCase" xmlns:dm4="http://schemas.microsoft.com/dsltools/Activity" xmlns:dm5="http://schemas.microsoft.com/dsltools/Interaction" xmlns:dm6="http://schemas.microsoft.com/dsltools/UmlModelLibrary" xmlns:dm7="http://schemas.microsoft.com/dsltools/UmlDiagrams" xmlns:dm8="http://schemas.microsoft.com/dsltools/LogicalClassDesigner"
  dslVersion="1.0.0.0"
  Id="c6e0487e-98d0-4904-b090-ba82f19c814a"
  name="ModelingProject" xmlns="http://schemas.microsoft.com/dsltools/ModelStore">
  <ownedCommentsInternal>
    <comment
      Id="57f3e758-a82a-4c05-a349-885f8f537e07">
      <body>Abstract类</body>
      <annotatedElements>
        <classMoniker
          Id="f61638d4-811c-4cf4-84bb-d5e8a4005faa"
          LastKnownName="Weapon2"
          LastKnownLocation="ModelingProject.uml" />
      </annotatedElements>
    </comment>
    <comment
      Id="7bae7d56-9f9d-4071-9228-090100299950">
      <body>客户端通过武器工厂创建对应类型的武器</body>
    </comment>
    <comment
      Id="4d7f3c1e-96d5-4e35-bf66-4cbe47fb2bb6">
      <body>克隆接口</body>
    </comment>
    <comment
      Id="1dbccd03-a662-4e7e-a661-c76c3e3b4b9c">
      <body>原型类，实现一个克隆自己的操作</body>
    </comment>
    <comment
      Id="c8d84a72-1b99-4df8-8f18-95edbb30d2ad">
      <body>Subject接口定义了RealSubject和Proxy的公用接口，这样在任何需要访问RealSubject的地方都可以使用Proxy</body>
    </comment>
    <comment
      Id="8f84f319-50f1-461e-b52b-d7cfb875241b">
      <body>Proxy类，保存一个应用使得代理可以访问实体</body>
    </comment>
    <comment
      Id="e575cd57-5587-4fc5-b29f-3d0b430bb9dc">
      <body>Subject的真实实体</body>
    </comment>
  </ownedCommentsInternal>
  <profileInstances>
    <packageHasProfileInstances
      Id="0caec977-1f8c-4ba3-a7db-8cc9ad9cc73b">
      <profileInstance
        Id="e34d544e-0fea-4ed6-ac5e-1b74119ac791"
        name="StandardProfileL2" />
    </packageHasProfileInstances>
    <packageHasProfileInstances
      Id="29349502-908c-4fda-9054-c48619c59ed0">
      <profileInstance
        Id="532ea607-fb19-44b8-8502-3351b05452be"
        name="StandardProfileL3" />
    </packageHasProfileInstances>
  </profileInstances>
  <packagedElements>
    <packageHasNamedElement>
      <class
        Id="e5ad9ed2-7012-4125-9eec-4ad8e850cb81"
        name="WeaponFactoryBase"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="48f96d5b-33a5-449b-8e2a-e6ca72942782"
            name="CreateWeapon"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="3734fd8a-e928-4106-8afe-6c90ee5871da"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="05fa7f88-c244-4b8d-a106-94074b558a77"
                      LastKnownName="Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="bec8702c-c2c0-429e-9a8c-d7dfb91a7b17"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="05fa7f88-c244-4b8d-a106-94074b558a77"
        name="Weapon" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="30b27b8e-4743-44aa-942b-0e3458a9f32a"
        name="RifleFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="2a1dbb3f-d8a5-4627-8ade-bb15ddbf07a9">
            <classMoniker
              Id="55f5f34c-79e8-4130-bde1-08f454ae1299"
              LastKnownName="Rifle"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <generalsInternal>
          <generalization
            Id="72acdd81-9188-4af5-95ff-0e5a6beb2f8a"
            isSubstitutable="false">
            <classMoniker
              Id="e5ad9ed2-7012-4125-9eec-4ad8e850cb81"
              LastKnownName="WeaponFactoryBase"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="341315d2-5e13-4683-a483-dfa836595684"
            name="CreateWeapon"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="bc7fd91e-1d9b-42e1-9e59-297e9ff4cd0d"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="05fa7f88-c244-4b8d-a106-94074b558a77"
                      LastKnownName="Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="25ded833-8ede-4e5b-bd15-4ea2d04a16fd"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="2474ba09-e55a-4506-8e6c-5289db577856"
        name="PistolFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="d034e263-6fa8-40e8-a08e-65dcff8e9376">
            <classMoniker
              Id="12e148ed-b411-470f-b7ab-e4ddf8c7304c"
              LastKnownName="Pistol"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <generalsInternal>
          <generalization
            Id="80480cea-e531-488b-81cf-870ac3d4977a"
            isSubstitutable="false">
            <classMoniker
              Id="e5ad9ed2-7012-4125-9eec-4ad8e850cb81"
              LastKnownName="WeaponFactoryBase"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="84db2e3e-5ebd-41ed-83be-27f15a5d199c"
            name="CreateWeapon"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="1486a236-36c4-4f80-82e9-44fd9cd94272"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="a75f37f2-be54-4450-a2fa-4255e35a2235"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="05fa7f88-c244-4b8d-a106-94074b558a77"
                      LastKnownName="Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="93f63aee-d4af-4168-97ec-cd0722503a31"
        name="string" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <packageMoniker
        Id="a2f9bfbf-056c-4ec3-a0b3-7d67ec44d49a"
        LastKnownName="Program"
        LastKnownLocation="Package_1138.uml" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="17a80029-cf5d-430b-8cd8-7e148ef37161"
        name="Weapon"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedAttributesInternal>
          <property
            Id="18358f20-7990-42f0-a038-d36225e64b0f"
            name="Name"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                LastKnownName="string"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="55f5f34c-79e8-4130-bde1-08f454ae1299"
        name="Rifle"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="7585d63b-afdf-425d-81fc-6e966f4278ea"
            isSubstitutable="false">
            <classMoniker
              Id="17a80029-cf5d-430b-8cd8-7e148ef37161"
              LastKnownName="Weapon"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="c4286c4f-0358-4c87-96f7-2ec88fa5cf2f"
            name="Rifle"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="b500e456-f271-4d5d-9ea7-9729d0fc1c2a"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="12e148ed-b411-470f-b7ab-e4ddf8c7304c"
        name="Pistol"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="c9aae102-b27a-4fb7-867f-a36c4433bca8"
            isSubstitutable="false">
            <classMoniker
              Id="17a80029-cf5d-430b-8cd8-7e148ef37161"
              LastKnownName="Weapon"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="d4f77286-d8f6-45d8-82ec-bf9887bca6e5"
            name="Pistol"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="17b32ae0-2b56-4370-83a8-b32b420584ba"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="c7221527-79a1-469b-9de2-045bbc3a5bb2"
        name="WeaponFactoryBase1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="a17cf388-ec20-49c6-b24e-624257528f4b"
            name="CreateWeapon"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="3ec7fbda-25a8-4a8a-887d-d716a5d699ee"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="05fa7f88-c244-4b8d-a106-94074b558a77"
                      LastKnownName="Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="08adec90-df99-4328-8655-1a13e5a0bd6a"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="e46b555d-2386-482e-b90c-7e41852aea31"
        name="RifleFactory1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="807d8cc5-ee62-48d7-9ad7-1b0413636c2e">
            <classMoniker
              Id="a52f3a31-8d35-49b9-95c2-5a2cc9e7c066"
              LastKnownName="Rifle1"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <generalsInternal>
          <generalization
            Id="66d6573d-4f0c-4ac0-b30d-d0588c544a23"
            isSubstitutable="false">
            <classMoniker
              Id="c7221527-79a1-469b-9de2-045bbc3a5bb2"
              LastKnownName="WeaponFactoryBase1"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="1e674afc-7ae0-453a-ac72-3069b1535a1e"
            name="CreateWeapon"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="b778a097-2378-40de-a161-41c3025a8ec5"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="05fa7f88-c244-4b8d-a106-94074b558a77"
                      LastKnownName="Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="3be0f164-eea4-4856-aa60-841cf3211ea8"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="e0e75411-133b-432f-b2ba-ad6cc9e0c2a9"
        name="PistolFactory1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="0fa737c0-0d21-4183-ad99-9527a1f2e00a">
            <classMoniker
              Id="2957c818-a2be-48c4-bd2b-0c9564a9f2ae"
              LastKnownName="Pistol1"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <generalsInternal>
          <generalization
            Id="8d0b2bb9-018b-4b09-a979-0434d6ebea44"
            isSubstitutable="false">
            <classMoniker
              Id="c7221527-79a1-469b-9de2-045bbc3a5bb2"
              LastKnownName="WeaponFactoryBase1"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="dacca616-c06f-444f-a22b-e562a1b0a7bd"
            name="CreateWeapon"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="26b8fff6-05ae-474f-ba40-0f06d4dced2a"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="889ba89d-b9e2-4c5f-be12-c399a48b98a0"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="05fa7f88-c244-4b8d-a106-94074b558a77"
                      LastKnownName="Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="dbc6fcbd-675a-4a82-899b-5363b405173a"
        name="Weapon1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedAttributesInternal>
          <property
            Id="b949e554-4457-4738-b899-1a934fcafba3"
            name="Name"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                LastKnownName="string"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="a52f3a31-8d35-49b9-95c2-5a2cc9e7c066"
        name="Rifle1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="fd4afa3e-c819-4e87-9fb8-08c60eaa1ff7"
            isSubstitutable="false">
            <classMoniker
              Id="dbc6fcbd-675a-4a82-899b-5363b405173a"
              LastKnownName="Weapon1"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="e751f904-29c9-4727-9c6d-fa10c2b28fd8"
            name="Rifle"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="59a584f7-1373-4bd2-96cb-f486625b8929"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="2957c818-a2be-48c4-bd2b-0c9564a9f2ae"
        name="Pistol1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="7fafb375-29a5-4356-8623-6fda1511b5db"
            isSubstitutable="false">
            <classMoniker
              Id="dbc6fcbd-675a-4a82-899b-5363b405173a"
              LastKnownName="Weapon1"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="f25acc39-02d2-4552-8d26-b82f545037f4"
            name="Pistol"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="2b53f1c4-11d9-40d8-a66b-ac88daabb471"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <packageMoniker
        Id="edf8f1bc-d91e-4003-aa8c-1c0b104bef0b"
        LastKnownName="Program1"
        LastKnownLocation="Package_1155.uml" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="74b11bc9-834e-4d07-9444-7b5c6d5fb9c0"
        name="CountryWeaponFactoryBase"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="0f027c81-827a-4349-80b6-3c41d2586e56">
            <classMoniker
              Id="c7221527-79a1-469b-9de2-045bbc3a5bb2"
              LastKnownName="WeaponFactoryBase1"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <ownedAttributesInternal>
          <property
            Id="e09eda34-a7c9-4ac5-95b5-3a58e58c747d"
            name="name"
            visibility="Private"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                LastKnownName="string"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="f7df0b29-7de8-44a1-9c97-03c4a38d28c8"
            name="RifleFactory"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <classMoniker
                Id="e5ad9ed2-7012-4125-9eec-4ad8e850cb81"
                LastKnownName="WeaponFactoryBase"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="248e5ba1-36cd-4062-9ded-6aee1a43d33a"
            name="PistolFactory"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <classMoniker
                Id="e5ad9ed2-7012-4125-9eec-4ad8e850cb81"
                LastKnownName="WeaponFactoryBase"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
        <ownedOperationsInternal>
          <operation
            Id="f453f16d-af0e-4afe-b174-dece2e37a9d8"
            name="InitFactory"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="6f98ce87-c95a-4135-98f3-4ddc3fb77d69"
                  name="factoryName"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="61f97e01-7423-477e-b175-1dbcae9e5f77"
            name="CreateRifle"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="b82860a4-3171-4f40-9795-ad4cb7d82abb"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="acaad0d7-d54c-4754-8582-71b33682bd17"
            name="CreatePistol"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="290d8b39-1d8c-41dd-b933-545d5833a141"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="bc2731e6-b35c-43f5-b811-b63086d81440"
        name="ChineseWeaponFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="48c5f3e1-5bea-441f-a068-5bdb7428720d"
            isSubstitutable="false">
            <classMoniker
              Id="74b11bc9-834e-4d07-9444-7b5c6d5fb9c0"
              LastKnownName="CountryWeaponFactoryBase"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="073b22e0-d020-4c8d-b64f-9c1a7c7d543b"
            name="InitFactory"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="8c3ce8a7-1c6e-48ff-b564-90a7f37cb342"
                  name="factoryName"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="73e3b05f-a759-4c66-9d25-97a2c46008e4"
            name="CreatePistol"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="882cb418-51a2-4c79-826f-625bf29d2456"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="f505c6fb-4e7c-446f-8b34-f29188d000a2"
            name="CreateRifle"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="39b27d93-26f5-4a13-b6ff-f10adc421f45"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="0f46b5ec-04ed-4bb7-b25c-52ba6fe7328f"
        name="AmericanWeaponFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="00478fc7-5ad9-4f9c-9182-6b449339ac8a"
        name="AmericanWeaponFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="771f840a-d8dc-494d-9c55-113703ca6504"
            isSubstitutable="false">
            <classMoniker
              Id="74b11bc9-834e-4d07-9444-7b5c6d5fb9c0"
              LastKnownName="CountryWeaponFactoryBase"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="b8061dd9-c166-44d9-8fa4-d3b36a744f89"
            name="InitFactory"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="d7305f54-008c-42cb-916f-418d0d646033"
                  name="factoryName"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="62575e49-d7af-4430-9bab-288f9c1d94eb"
            name="CreatePistol"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="e91309f9-c9c2-4f38-a50b-6dff81d4b026"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="d979a15e-a842-4741-8e43-303a3e3c8c69"
            name="CreateRifle"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="9775d988-3047-4ab4-8950-a53956f99949"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="25544320-b059-4a0c-9972-9ef8ccae8188"
        name="WeaponType" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="c73d8470-1d81-4fec-bb56-98ffd54b833d"
        name="ModelingProject1::Weapon" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="f61638d4-811c-4cf4-84bb-d5e8a4005faa"
        name="Weapon2"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedAttributesInternal>
          <property
            Id="4c8a978f-69f2-40c0-901a-73544c6d7bd1"
            name="Name"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                LastKnownName="string"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="be77c9a8-88ab-4147-86cd-c227862d6e89"
        name="Pistol2"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="9a84256d-2d06-4996-a36f-f59be3118545"
            isSubstitutable="false">
            <classMoniker
              Id="f61638d4-811c-4cf4-84bb-d5e8a4005faa"
              LastKnownName="Weapon2"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="03bfe875-7a09-443e-9825-4a1350bd85e4"
            name="Piistol"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="bc35ec02-1c7f-4f09-94ab-0ba1255f189e"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="339ac4e9-0f13-4e35-aee1-7788d762ee11"
        name="Rifle2"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="f4f5efc8-4d74-4891-b62d-9a4d6c936723"
            isSubstitutable="false">
            <classMoniker
              Id="f61638d4-811c-4cf4-84bb-d5e8a4005faa"
              LastKnownName="Weapon2"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="1accce5e-d8c1-4a9a-a047-8c2cb9415be6"
            name="Rifle"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="4f7e84c9-dd68-43f7-a2b1-8fb975ff0b5e"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="9ea4dad7-a15b-482d-8526-af82441b2872"
        name="WeaponFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="05ffb317-cb52-4319-aae5-b5d7f3380802">
            <classMoniker
              Id="f61638d4-811c-4cf4-84bb-d5e8a4005faa"
              LastKnownName="Weapon2"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
          <dependency
            Id="06b83e84-c976-4d85-8db8-ce87c228d8c7">
            <enumerationMoniker
              Id="d212ee5a-f0e3-43a3-88aa-290681f648c8"
              LastKnownName="WeaponType"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <ownedOperationsInternal>
          <operation
            Id="873203ae-5483-482c-8d7a-09a618e48728"
            name="Create"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="e484b1c5-be23-4e42-8ee4-212ebb6c0bbe"
                  name="type"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="25544320-b059-4a0c-9972-9ef8ccae8188"
                      LastKnownName="WeaponType"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="3eef9891-e7ea-403d-a74c-88f16b1290c4"
                  name="name"
                  direction="In"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="5fd42965-97c2-41c1-ab6b-f5f485b5c0b7"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="c73d8470-1d81-4fec-bb56-98ffd54b833d"
                      LastKnownName="ModelingProject1::Weapon"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <enumeration
        Id="d212ee5a-f0e3-43a3-88aa-290681f648c8"
        name="WeaponType"
        isAbstract="false"
        isLeaf="false">
        <ownedLiterals>
          <enumerationLiteral
            Id="9aeb06cd-6c8b-4767-ac1f-c970a703831a"
            name="EPistol" />
          <enumerationLiteral
            Id="2b330380-cf2b-4630-b3c0-951b9cc2b837"
            name="ERifle" />
        </ownedLiterals>
      </enumeration>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <packageMoniker
        Id="e2a7a1cd-5bd2-4df5-9d14-b028af7e429e"
        LastKnownName="Program2"
        LastKnownLocation="Package_2136.uml" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="7a34787a-c6e4-4837-ba38-1fec8f42c15f"
        name="Job"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedAttributesInternal>
          <property
            Id="8d6a6ae4-cdea-4e02-8bed-90d8662fdd59"
            name="Id"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="4f893f7f-17da-4206-8a30-6f2a94b0d2bc"
                LastKnownName="int"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="bc39578b-be33-4e7b-b44c-435949191e47"
            name="JobName"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                LastKnownName="string"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
        <ownedOperationsInternal>
          <operation
            Id="8befe0f3-c5ac-4b8b-b923-a751506329d3"
            name="ToString"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="dead4e38-5e44-42c7-954e-c027e89b56c4"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                      LastKnownName="string"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="4f893f7f-17da-4206-8a30-6f2a94b0d2bc"
        name="int" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="7c323ef2-750d-4ac0-a916-1b55032a5ced"
        name="Person"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <interfaceRealization
            Id="cd58856d-f995-4236-ada0-f1e401d626c0">
            <interfaceMoniker
              Id="8528868c-74a9-47f1-a35d-e3b9818ddfe8"
              LastKnownName="ICloneable"
              LastKnownLocation="ModelingProject.uml" />
          </interfaceRealization>
          <dependency
            Id="e115cc0a-9b8c-4a9e-953a-98dcf9244384">
            <classMoniker
              Id="7a34787a-c6e4-4837-ba38-1fec8f42c15f"
              LastKnownName="Job"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <ownedAttributesInternal>
          <property
            Id="9b14c01f-d675-4c11-b039-6cb28193ba1f"
            name="Age"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="4f893f7f-17da-4206-8a30-6f2a94b0d2bc"
                LastKnownName="int"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="936fb642-7604-4c37-83ea-78411079dbe2"
            name="Name"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="93f63aee-d4af-4168-97ec-cd0722503a31"
                LastKnownName="string"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="d5282e1c-10ee-4ba6-b3df-bcf9ed5eadfe"
            name="Job"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <classMoniker
                Id="7a34787a-c6e4-4837-ba38-1fec8f42c15f"
                LastKnownName="Job"
                LastKnownLocation="ModelingProject.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
        <ownedOperationsInternal>
          <operation
            Id="4e5dae2b-3c82-4775-9cc5-68de7c14ce0c"
            name="DeepClone"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="bd655ddd-bf0d-4a30-97ce-9279410e4ae9"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <classMoniker
                      Id="7c323ef2-750d-4ac0-a916-1b55032a5ced"
                      LastKnownName="Person"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="87d6d104-80be-43ca-8420-31f5cb4663d7"
            name="ShallowClone"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="c8d80497-3dee-4f38-8ede-861e139ea307"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <classMoniker
                      Id="7c323ef2-750d-4ac0-a916-1b55032a5ced"
                      LastKnownName="Person"
                      LastKnownLocation="ModelingProject.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="e0409674-cc33-4277-817c-067bd66748e6"
            name="Clone"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <Interface
        Id="8528868c-74a9-47f1-a35d-e3b9818ddfe8"
        name="ICloneable"
        isAbstract="false"
        isLeaf="false">
        <ownedOperations>
          <operation
            Id="89bc0c80-ffba-4362-8457-0eff98888470"
            name="Clone"
            isLeaf="false"
            isStatic="false"
            isAbstract="true"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperations>
      </Interface>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="cffe790e-180e-4ea5-a9a2-76e16e0b5b03"
        name="Program"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <packageMoniker
        Id="48017905-98f8-40b0-beda-24c9abc6cfa2"
        LastKnownName="Client"
        LastKnownLocation="Package_2004.uml" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="f0fde971-b102-4b38-a077-21d1f185923c"
        name="Director"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <targetEnds>
          <association
            Id="ad3241bf-a0f7-4191-9fdd-c516595506a6"
            isDerived="false"
            sourceEndRoleName="Director"
            targetEndRoleName="Builder"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="5a147ee1-6a35-4d0c-abbd-f2e12f871113"
              LastKnownName="Builder"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="33392ad0-d436-43c4-9505-08ae27898ffb"
                  name="Director"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="a7f7e1d0-13ca-47e3-978b-bbf229d709ea"
                  name="Builder"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="5a147ee1-6a35-4d0c-abbd-f2e12f871113"
        name="Builder"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="41820557-ba70-4b11-89b8-d0cba7076d12"
            name="BuildPartA"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="4b1a5a64-d530-47fa-8cca-dc7bfc4e5b0b"
            name="BuildPartB"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="114b7c4c-aee3-4098-8734-62746de928e7"
            name="BuildPartC"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="87b8f792-b2cb-45ad-946f-01a09dca979f"
            name="GetProduct"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="bf0be90e-7f51-4d24-9c9e-507c56490498"
        name="ConcreteBuilder"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="84f2d23f-601c-4abb-b560-60b75df69044"
            isSubstitutable="false">
            <classMoniker
              Id="5a147ee1-6a35-4d0c-abbd-f2e12f871113"
              LastKnownName="Builder"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="e2d49a57-87a1-40b7-ba4e-d31bdc3107b6"
            name="BuildPartA"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="ce2d4513-2b41-48e3-962f-4da6e46d185f"
            name="BuildPartB"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="79ce1b03-6f40-4406-95d3-aa65d2029ffe"
            name="BuildPartC"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="2df3aec2-7a58-406c-8895-f74d6689e994"
            name="GetProduct"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="7c2f996d-6408-4efc-8231-0959a7f661b5"
        name="Product"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <targetEnds>
          <association
            Id="59ab6e57-18c5-4484-88a6-2869662d9dd4"
            isDerived="false"
            sourceEndRoleName="Product"
            targetEndRoleName="Builder"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="5a147ee1-6a35-4d0c-abbd-f2e12f871113"
              LastKnownName="Builder"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="9d354e22-c2a7-49e1-aeec-5a6c61346b52"
                  name="Product"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="531905b8-9f1f-453e-9e8b-59b15b9c17e6"
                  name="Builder"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="d5091c42-466f-4e06-88ff-d716a21342c7"
        name="Client"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="d7c16cf6-e801-4f4a-bd97-4eb3c6a7b5d3">
            <interfaceMoniker
              Id="ef39d4c5-658d-4462-b969-b68b569deb5d"
              LastKnownName="Subject"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="eadbb2c8-cce7-4eaa-a4d8-e0aec50a8540"
        name="Proxy"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <interfaceRealization
            Id="c15bdb80-ff5b-43e4-810b-bc5131032123">
            <interfaceMoniker
              Id="ef39d4c5-658d-4462-b969-b68b569deb5d"
              LastKnownName="Subject"
              LastKnownLocation="ModelingProject.uml" />
          </interfaceRealization>
          <dependency
            Id="77f46af2-3265-4d9b-b723-08fa901e8275">
            <classMoniker
              Id="cec6adab-710e-4d16-82d0-591db6866a19"
              LastKnownName="RealSubject"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
        <ownedOperationsInternal>
          <operation
            Id="e2fa1fc4-0195-4d35-9ce9-7fb74124bf37"
            name="Request"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="cec6adab-710e-4d16-82d0-591db6866a19"
        name="RealSubject"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <interfaceRealization
            Id="0d3d3404-8d75-4877-b335-3a736165c1ee">
            <interfaceMoniker
              Id="ef39d4c5-658d-4462-b969-b68b569deb5d"
              LastKnownName="Subject"
              LastKnownLocation="ModelingProject.uml" />
          </interfaceRealization>
        </suppliersInternal>
        <ownedOperationsInternal>
          <operation
            Id="756f6a2d-6c44-4ca5-9d15-8451cacdbc52"
            name="Request"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <Interface
        Id="ef39d4c5-658d-4462-b969-b68b569deb5d"
        name="Subject"
        isAbstract="false"
        isLeaf="false">
        <ownedOperations>
          <operation
            Id="18e1017e-1727-4456-a5f5-947b744a1aca"
            name="Request"
            isLeaf="false"
            isStatic="false"
            isAbstract="true"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperations>
      </Interface>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="04c4bb8f-a13d-4629-9217-83d71bcedbd5"
        name="Client"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="5b8bbe95-26d1-4df0-88d3-b49b63dc0bfd">
            <classMoniker
              Id="248daf7b-c2fb-462b-b6c2-a0b8e37c27dc"
              LastKnownName="Abstraction"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="248daf7b-c2fb-462b-b6c2-a0b8e37c27dc"
        name="Abstraction"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <targetEnds>
          <association
            Id="df49bb55-d357-4c0f-a16c-4a4f03362aed"
            isDerived="false"
            sourceEndRoleName="Abstraction"
            targetEndRoleName="Implementor"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="4bc38277-70ce-48b2-9dba-fe89338f2009"
              LastKnownName="Implementor"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="a2c2befb-4c8f-4653-b9a5-d441aa3baea3"
                  name="Abstraction"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="d9289774-ae24-44ad-9046-f2eb21dd4fd3"
                  name="Implementor"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
        <ownedOperationsInternal>
          <operation
            Id="7ab06cd4-0762-48b5-bcd2-e63f8f503c06"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="a4570c0b-b2cd-421b-8ec9-2722d461bea7"
        name="RefinedAbstraction"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="f6811784-93f8-47ed-9f64-fcf4dc5decaa"
            isSubstitutable="false">
            <classMoniker
              Id="248daf7b-c2fb-462b-b6c2-a0b8e37c27dc"
              LastKnownName="Abstraction"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="f52aee5e-de2a-4696-b906-2b128dfd9439"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="4bc38277-70ce-48b2-9dba-fe89338f2009"
        name="Implementor"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="d7633319-924d-40ad-841c-5850a75ec5eb"
            name="OperationImpl"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="e5091f92-0921-4385-900c-eb751f62e63a"
        name="ConcreteImplementorA"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="ad013e68-8e14-4c0b-9b55-1bd241d554bc"
            isSubstitutable="false">
            <classMoniker
              Id="4bc38277-70ce-48b2-9dba-fe89338f2009"
              LastKnownName="Implementor"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="eee33f32-07d8-4a78-96ca-1571bbed3622"
            name="OperationImpl"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="3eae8b21-7c50-44ee-8cd5-0cdc08920f80"
        name="ConcreteImplementorB"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="4dd2e197-685d-4ec3-9464-bfb09d0e7d56"
            isSubstitutable="false">
            <classMoniker
              Id="4bc38277-70ce-48b2-9dba-fe89338f2009"
              LastKnownName="Implementor"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="a30b9cc1-24e8-4a75-8722-ee339c288178"
            name="OperationImpl"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="dc1fe116-ccc8-4150-94f9-d52fe58d6af0"
        name="Client"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="754d3193-c69a-417e-b893-860568541917">
            <classMoniker
              Id="ada05443-f3e9-4ca3-a5e2-55ed003b8f89"
              LastKnownName="Facade"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="ada05443-f3e9-4ca3-a5e2-55ed003b8f89"
        name="Facade"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <targetEnds>
          <association
            Id="ee5fd215-b8bc-45cb-9250-fd7ba34a32f8"
            isDerived="false"
            sourceEndRoleName="Facade"
            targetEndRoleName="子模块1"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="b86bb3e5-9c11-4533-8a1e-8591f5726118"
              LastKnownName="子模块1"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="1b038880-adb4-4d70-942a-af10467de718"
                  name="Facade"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="039ba599-dc78-4d19-81c5-bc438f622215"
                  name="子模块1"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
          <association
            Id="9e5d98bc-1272-46fe-b49f-53d9241cc418"
            isDerived="false"
            sourceEndRoleName="Facade"
            targetEndRoleName="子模块2"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="ed418f44-9da1-4f8c-9693-9589add91929"
              LastKnownName="子模块2"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="32369d7b-c4cf-4914-9bca-a1c1354e09f0"
                  name="Facade"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="11cc4e47-b84f-44d9-a5b2-e717208dfe93"
                  name="子模块2"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
          <association
            Id="d418c0bf-2804-44af-9ff5-dd91d027eed4"
            isDerived="false"
            sourceEndRoleName="Facade"
            targetEndRoleName="子模块3"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="d55a3efe-33b7-46fb-8aec-e83a51cc6dac"
              LastKnownName="子模块3"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="d3da698e-6791-4b4d-ac4d-dc5a62f2ce2d"
                  name="Facade"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="9a21d69c-61e2-48e2-a68d-14fe6bd888dc"
                  name="子模块3"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="b86bb3e5-9c11-4533-8a1e-8591f5726118"
        name="子模块1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="ed418f44-9da1-4f8c-9693-9589add91929"
        name="子模块2"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="d55a3efe-33b7-46fb-8aec-e83a51cc6dac"
        name="子模块3"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="6ec83f28-fe3f-48a8-af88-462718eb2344"
        name="Client"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="ea1460f1-fb58-4a7d-bf8a-e9835d0ea10f">
            <classMoniker
              Id="ff03b99b-36d5-4c91-8082-116b6a474152"
              LastKnownName="Component"
              LastKnownLocation="ModelingProject.uml" />
          </dependency>
        </suppliersInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="ff03b99b-36d5-4c91-8082-116b6a474152"
        name="Component"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="67777b66-84cd-4dee-97d2-b9873c54b49c"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="b253a295-0084-4b07-99f7-7e8644efb97a"
            name="Add"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="8335f7f9-58d9-4784-8991-265a9cbfbee8"
                  name="int component"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="b58797ca-3761-41cc-97b3-d5482ec00495"
            name="Remove"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="51ef50aa-d7a9-4964-b5be-9a5fbe0c09f4"
                  name="int component"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="39188f4d-afd6-4909-b9f3-7c7d682797f3"
            name="GetChild"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="b7993c62-c62b-46bf-950e-ac8dd5fa74e2"
                  name="int index"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="e05c9060-1533-4d04-8114-6fb9ba48da57"
        name="Leaf"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="77df9f3a-18c3-433a-9070-921b501f3af8"
            isSubstitutable="false">
            <classMoniker
              Id="ff03b99b-36d5-4c91-8082-116b6a474152"
              LastKnownName="Component"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="8326ed39-0bc7-4aa6-8746-f49a6529723b"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="2edf6d7a-58a3-4ffc-836b-af140e3c7d7a"
        name="Composite"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="ceb02f70-5e52-4749-94e7-a984b7356ff4"
            isSubstitutable="false">
            <classMoniker
              Id="ff03b99b-36d5-4c91-8082-116b6a474152"
              LastKnownName="Component"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <targetEnds>
          <association
            Id="cc1e12d9-d421-45ab-bd33-6d9489bf46f2"
            isDerived="false"
            sourceEndRoleName="Composite"
            targetEndRoleName="Component"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="ff03b99b-36d5-4c91-8082-116b6a474152"
              LastKnownName="Component"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="a7685319-5a7e-47df-9be5-69faf2b6afc6"
                  name="Composite"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="fcd9bf30-d62d-4ebe-ab4a-f7fbb2f1a529"
                  name="Component"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
        <ownedOperationsInternal>
          <operation
            Id="f4e9d8fa-6690-4c36-9e45-7f408badb29d"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
          <operation
            Id="7659cafc-cacb-47ac-8661-a6795adbe938"
            name="GetChild"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="a859af16-b18b-4449-89ed-2261cb28bfea"
                  name="int index"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="f75335f5-af01-48d9-8dd5-ecea3d3bb689"
            name="Add"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="4fab44a8-7d81-412c-9de3-e2f99a9710fb"
                  name="int component"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="878835e1-af5a-498f-a4b9-499ccc11f697"
            name="Remove"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="15677cb0-300c-4bbc-a0d2-723d79c8f5b3"
                  name="int component"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="f62a4e96-548e-4523-a3d5-ccec83ad2e65"
        name="FlyweightFactory"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <targetEnds>
          <association
            Id="c0eba311-44c8-41e0-86d2-e20edc1d13b9"
            isDerived="false"
            sourceEndRoleName="FlyweightFactory"
            targetEndRoleName="Flyweight"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="11128b98-7dfe-40b0-a96b-77c18c2abcef"
              LastKnownName="Flyweight"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="ca9cef51-dfe8-4730-ab09-f297268bf23d"
                  name="FlyweightFactory"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="a9ea0e57-de2f-449f-96f0-45361d3a84ae"
                  name="Flyweight"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="709f92e2-4417-4320-a99b-44a7aca3a3da"
        name="Client"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <targetEnds>
          <association
            Id="2479c3ae-01de-4aa5-8659-7cf0168738f1"
            isDerived="false"
            sourceEndRoleName="Client"
            targetEndRoleName="FlyweightFactory"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="f62a4e96-548e-4523-a3d5-ccec83ad2e65"
              LastKnownName="FlyweightFactory"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="8f6d31d9-63fd-42e4-9f2c-76a9bb22b052"
                  name="Client"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="fd9f4fc1-d7ca-4f56-8b6d-4ee6812314fa"
                  name="FlyweightFactory"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
          <association
            Id="7a3d5cdc-4518-4eb6-aa83-94131fda5a67"
            isDerived="false"
            sourceEndRoleName="Client"
            targetEndRoleName="UnsharedConcreteFlyweight"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="813cd955-45de-4322-b313-a836c1ec8476"
              LastKnownName="UnsharedConcreteFlyweight"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="24f97f79-e13e-4918-ab68-5ef87e34f93c"
                  name="Client"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="262c92fc-dd24-4c5d-982c-d2815bed24ec"
                  name="UnsharedConcreteFlyweight"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
          <association
            Id="ece4a978-2859-43a6-8bd7-a5a40e1bfd8d"
            isDerived="false"
            sourceEndRoleName="Client"
            targetEndRoleName="ConcreteFlyweight"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="7e906e08-3228-4011-a297-d00bedac4dc5"
              LastKnownName="ConcreteFlyweight"
              LastKnownLocation="ModelingProject.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="f58d57f4-bd5c-4e7c-98fb-a9784003a609"
                  name="Client"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="c7885e45-644a-4334-b290-709b3eacb40c"
                  name="ConcreteFlyweight"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="11128b98-7dfe-40b0-a96b-77c18c2abcef"
        name="Flyweight"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="2c8f8029-f858-4a67-8625-72d329b8f2e2"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="7e906e08-3228-4011-a297-d00bedac4dc5"
        name="ConcreteFlyweight"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="e714fabd-9718-43cd-b4a3-58d8222fca88"
            isSubstitutable="false">
            <classMoniker
              Id="11128b98-7dfe-40b0-a96b-77c18c2abcef"
              LastKnownName="Flyweight"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
        <ownedOperationsInternal>
          <operation
            Id="3406d175-291f-4335-ac4a-5843924e6142"
            name="Operation"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false" />
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="813cd955-45de-4322-b313-a836c1ec8476"
        name="UnsharedConcreteFlyweight"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <generalsInternal>
          <generalization
            Id="4d54794b-c3f6-4d9b-b6e8-8fa92e82d9f6"
            isSubstitutable="false">
            <classMoniker
              Id="11128b98-7dfe-40b0-a96b-77c18c2abcef"
              LastKnownName="Flyweight"
              LastKnownLocation="ModelingProject.uml" />
          </generalization>
        </generalsInternal>
      </class>
    </packageHasNamedElement>
  </packagedElements>
  <primitiveType
    Id="220a3521-e091-4221-bae9-3ef9018e845c"
    name="Integer"
    isAbstract="false"
    isLeaf="false" />
  <primitiveType
    Id="8943dc84-709e-4f62-b15a-a3273aa6f165"
    name="Boolean"
    isAbstract="false"
    isLeaf="false" />
  <primitiveType
    Id="59259974-6d55-42c6-b7bd-763d77ac8ef9"
    name="String"
    isAbstract="false"
    isLeaf="false" />
  <primitiveType
    Id="3ab42e7d-4969-445a-b209-471f5cb8209c"
    name="UnlimitedNatural"
    isAbstract="false"
    isLeaf="false" />
</modelStoreModel>