<?xml version="1.0" encoding="UTF-8"?>
<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_FKzmwM9GEe6Zc_le1peNgQ" name="KerML" URI="https://www.omg.org/spec/KerML/20240201">
  <packagedElement xmi:type="uml:Package" xmi:id="d88c098b-e2c0-4287-8797-203ff1229107" name="Root" visibility="public" URI="">
    <ownedComment xmi:id="3bb1f127-0eb9-41b7-91f9-4478a092010a" annotatedElement="d88c098b-e2c0-4287-8797-203ff1229107">
      <body>The Root layer provides the syntactic foundation for KerML.
</body>
    </ownedComment>
    <packagedElement xmi:type="uml:Package" xmi:id="656c7b3c-56db-4c46-933c-63a5d10e5370" name="Annotations" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="7597d3ab-ba4e-4ad5-8a12-2a8347efbb04" name="Comment" visibility="public">
        <ownedComment xmi:id="eab9b434-25e5-498e-ac6c-3db323e57c75" annotatedElement="7597d3ab-ba4e-4ad5-8a12-2a8347efbb04">
          <body>&lt;p>A &lt;code>Comment&lt;/code> is an &lt;code>AnnotatingElement&lt;/code> whose &lt;code>body&lt;/code> in some way describes its &lt;code>annotatedElements&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="56c061a0-5350-4b28-82c1-c2adc1914b67" general="3bade169-f558-4d7e-aea3-b195c0224e20"/>
        <ownedAttribute xmi:id="796211dd-710e-48a5-b124-ed2ec1dee136" name="locale" visibility="public">
          <ownedComment xmi:id="45032065-fd97-462e-8c00-83836081b94d" annotatedElement="796211dd-710e-48a5-b124-ed2ec1dee136">
            <body>&lt;p>Identification of the language of the &lt;code>body&lt;/code> text and, optionally, the region and/or encoding. The format shall be a POSIX locale conformant to ISO/IEC 15897, with the format &lt;code>[language[_territory][.codeset][@modifier]]&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e5e20d69-f34b-4235-bc46-87fc94beeac8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d942736c-2f4f-4458-8b88-ce7a2768c79c" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="8f8b0fa4-5d0c-4c35-9223-c61e5b3c117b" name="body" visibility="public">
          <ownedComment xmi:id="bd487914-2c5c-4688-9d3c-a82841fcb789" annotatedElement="8f8b0fa4-5d0c-4c35-9223-c61e5b3c117b">
            <body>&lt;p>The annotation text for the &lt;code>Comment&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="72a52acf-9f41-489b-9652-c81e815fa2fb" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="09022a21-2a15-4495-8b18-8118bc68781f" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="eb2bcc09-d82c-4252-9ad4-5959443e0aee" name="Annotation" visibility="public">
        <ownedComment xmi:id="88981e1d-ed89-4aaa-9673-0d6b9438c4f2" annotatedElement="eb2bcc09-d82c-4252-9ad4-5959443e0aee">
          <body>&lt;p>An &lt;code>Annotation&lt;/code> is a Relationship between an &lt;code>AnnotatingElement&lt;/code> and the &lt;code>Element&lt;/code> that is annotated by that &lt;code>AnnotatingElement&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="6171a063-9fac-464a-8d0a-59ad4e558ca3" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="05712626-eade-4016-9f1e-feec1c645bf8" name="annotatingElement" visibility="public" type="3bade169-f558-4d7e-aea3-b195c0224e20" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" association="7ab8902e-7e06-4107-96bf-4ff9fa6e7589">
          <ownedComment xmi:id="a66432d7-7c98-4973-ba97-634123547577" annotatedElement="05712626-eade-4016-9f1e-feec1c645bf8">
            <body>&lt;p>The &lt;code>AnnotatingElement&lt;/code> that annotates the &lt;code>annotatedElement&lt;/code> of this &lt;code>Annotation&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="7d762517-f084-437d-a219-c5070e0e4162" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="62998bc7-0b47-4dc0-aad8-8a2ccfcf648b" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="82d77c42-a20c-41ea-bb08-85e55ac59a26" name="annotatedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="f5b69829-0887-4878-b0a0-c79582f780c8">
          <ownedComment xmi:id="411aaf13-08cd-4dc7-b900-a1198b231612" annotatedElement="82d77c42-a20c-41ea-bb08-85e55ac59a26">
            <body>&lt;p>The &lt;code>Element&lt;/code> that is annotated by the &lt;code>annotatingElement&lt;/code> of this Annotation.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d9f075cb-8d77-405b-bc45-aa596d04a7ef" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8bf70142-d181-4e15-93aa-b34ad002b421" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="3289771d-4de4-4921-b95b-d7d8aacf20f2" name="owningAnnotatedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isDerived="true" subsettedProperty="82d77c42-a20c-41ea-bb08-85e55ac59a26 c81d146c-d738-40a0-ab80-8526beac3673" association="186c0ea9-87c3-458b-bb07-73633b8ab2fc">
          <ownedComment xmi:id="be3e892d-6d9a-49bd-98ba-a4db4ef6a037" annotatedElement="3289771d-4de4-4921-b95b-d7d8aacf20f2">
            <body>&lt;p>The &lt;code>annotatedElement&lt;/code> of this &lt;code>Annotation&lt;/code>, when it is also its &lt;code>owningRelatedElement&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9e519620-99cb-432f-9355-c1e9af2717f1" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="15830a50-af08-4aa9-9dba-3167c2490395" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="dacbaa16-7f5e-49ff-8aec-43761baec776" name="owningAnnotatingElement" visibility="public" type="3bade169-f558-4d7e-aea3-b195c0224e20" isDerived="true" subsettedProperty="05712626-eade-4016-9f1e-feec1c645bf8 c81d146c-d738-40a0-ab80-8526beac3673" association="e3e6fd59-8ad6-43ed-9d4c-cc2870e269bc">
          <ownedComment xmi:id="30ac6bae-4065-4109-bc63-d4580367ed03" annotatedElement="dacbaa16-7f5e-49ff-8aec-43761baec776">
            <body>&lt;p>The &lt;code>annotatingElement&lt;/code> of this &lt;code>Annotation&lt;/code>, when it is also its &lt;code>owningRelatedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5cb49a35-a716-4ae4-9fbb-69f163f83fc4" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ec73ff14-5604-48f7-8e9a-4a920bedaac2" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="7ab8902e-7e06-4107-96bf-4ff9fa6e7589" name="A_annotation_annotatingElement" visibility="public" memberEnd="34fba3f5-26ca-48b3-9d7a-047fb78011b4 05712626-eade-4016-9f1e-feec1c645bf8"/>
      <packagedElement xmi:type="uml:Association" xmi:id="f5b69829-0887-4878-b0a0-c79582f780c8" name="A_annotatedElement_annotation" visibility="public" memberEnd="82d77c42-a20c-41ea-bb08-85e55ac59a26 4ad2615b-7b77-4084-bd3e-bd0f31cc54e1">
        <ownedEnd xmi:id="4ad2615b-7b77-4084-bd3e-bd0f31cc54e1" name="annotation" visibility="public" type="eb2bcc09-d82c-4252-9ad4-5959443e0aee" isOrdered="true" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="f5b69829-0887-4878-b0a0-c79582f780c8">
          <ownedComment xmi:id="76f97b68-9835-4587-af84-1c67bf03dc66" annotatedElement="4ad2615b-7b77-4084-bd3e-bd0f31cc54e1">
            <body>&lt;p>The Annotations associated with a certain &lt;code>annotatedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="db51bb37-f02d-42b4-9387-4a7dd3f4e500" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b6401106-d613-4d4d-8910-933555696c73" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="3bade169-f558-4d7e-aea3-b195c0224e20" name="AnnotatingElement" visibility="public">
        <ownedComment xmi:id="57c562e5-da3b-4ca0-a716-fe29c9e2ec5d" annotatedElement="3bade169-f558-4d7e-aea3-b195c0224e20">
          <body>&lt;p>An &lt;code>AnnotatingElement&lt;/code> is an &lt;code>Element&lt;/code> that provides additional description of or metadata on some other &lt;code>Element&lt;/code>. An &lt;code>AnnotatingElement&lt;/code> is either attached to its &lt;code>annotatedElements&lt;/code> by &lt;code>Annotation&lt;/code> &lt;code>Relationships&lt;/code>, or it implicitly annotates its &lt;code>owningNamespace&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="2afc8e37-c89b-4033-ab40-11609f514355" name="deriveAnnotatingElementAnnotatedElement" visibility="public" constrainedElement="3bade169-f558-4d7e-aea3-b195c0224e20">
          <ownedComment xmi:id="ca80e583-1944-4f35-be05-bff4f4d3e7fc" annotatedElement="2afc8e37-c89b-4033-ab40-11609f514355">
            <body>&lt;p>If an &lt;code>AnnotatingElement&lt;/code> has &lt;code>annotations&lt;/code>, then its &lt;code>annotatedElements&lt;/code> are the &lt;code>annotatedElements&lt;/code> of all its &lt;code>annotations&lt;/code>. Otherwise, it's single &lt;code>annotatedElement&lt;/code> is its &lt;code>owningNamespace&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="66ff3051-e5f5-40c4-80d6-6b92a8693f1f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>annotatedElement = 
 if annotation->notEmpty() then annotation.annotatedElement
 else Sequence{owningNamespace} endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="c2c181f4-cef5-4f67-a9ac-d3b7474420e7" name="deriveAnnotatingElementOwnedAnnotatingRelationship" visibility="public" constrainedElement="3bade169-f558-4d7e-aea3-b195c0224e20">
          <ownedComment xmi:id="758cfd74-d400-4d14-9aa6-af1356a4c21b" annotatedElement="c2c181f4-cef5-4f67-a9ac-d3b7474420e7">
            <body>&lt;p>The &lt;code>ownedAnnotatingRelationships&lt;/code> of an &lt;code>AnnotatingElement&lt;/code> are its &lt;code>ownedRelationships&lt;/code> that are &lt;code>Annotations&lt;/code>, for which the &lt;code>AnnotatingElement&lt;/code> is the &lt;code>annotatingElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b29c67b0-7f7e-4983-b85a-110b1c3a7969" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedAnnotatingRelationship = ownedRelationship->
    selectByKind(Annotation)->
    select(a | a.annotatingElement = self)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="d0635133-5ee9-4307-848f-9dbddb334eab" general="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
        <ownedAttribute xmi:id="d0221b66-75b1-4727-90da-636288f9d289" name="annotatedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isDerived="true" association="ff8d3fd8-1df3-4f9f-9eb6-abbac267d6fb">
          <ownedComment xmi:id="42f536d7-9966-4240-a0cf-f19500a83000" annotatedElement="d0221b66-75b1-4727-90da-636288f9d289">
            <body>&lt;p>The &lt;code>Elements&lt;/code> that are annotated by this &lt;code>AnnotatingElement&lt;/code>. If &lt;code>annotation&lt;/code> is not empty, these are the &lt;code>annotatedElements&lt;/code> of the &lt;code>annotations&lt;/code>. If &lt;code>annotation&lt;/code> is empty, then it is the &lt;code>owningNamespace&lt;/code> of the &lt;code>AnnotatingElement&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="bf1bc7c7-e7fc-4e46-88e0-282e92ca0eec" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="24f27cd4-cd9c-445e-874a-905284a9feb1" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e126bf1c-1878-4e87-ab9e-f056abda2405" name="ownedAnnotatingRelationship" visibility="public" type="eb2bcc09-d82c-4252-9ad4-5959443e0aee" aggregation="composite" isDerived="true" subsettedProperty="34fba3f5-26ca-48b3-9d7a-047fb78011b4 9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" association="e3e6fd59-8ad6-43ed-9d4c-cc2870e269bc">
          <ownedComment xmi:id="ff4078b4-af3c-448f-a6c4-32e592359f03" annotatedElement="e126bf1c-1878-4e87-ab9e-f056abda2405">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>AnnotatingElement&lt;/code> that are &lt;code>Annotations&lt;/code>, for which this &lt;code>AnnotatingElement&lt;/code> is the &lt;code>annotatingElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b09227a2-b0e7-43e5-9c56-4a5c74e13492" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ee23c7ec-da95-416c-bc22-f9fe57e04345" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="34fba3f5-26ca-48b3-9d7a-047fb78011b4" name="annotation" visibility="public" type="eb2bcc09-d82c-4252-9ad4-5959443e0aee" isOrdered="true" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874" association="7ab8902e-7e06-4107-96bf-4ff9fa6e7589">
          <ownedComment xmi:id="a734fdb9-37f4-492d-93f2-85e5f215cfbb" annotatedElement="34fba3f5-26ca-48b3-9d7a-047fb78011b4">
            <body>&lt;p>The &lt;code>Annotations&lt;/code> that relate this &lt;code>AnnotatingElement&lt;/code> to its &lt;code>annotatedElements&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4ac5912a-c2c0-4b09-90d3-6deabdbe4b0c" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="48890adf-4b06-45f8-beac-92c6e080aec7" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="ff8d3fd8-1df3-4f9f-9eb6-abbac267d6fb" name="A_annotatedElement_annotatingElement" visibility="public" memberEnd="d0221b66-75b1-4727-90da-636288f9d289 79363c3a-95cb-4931-b243-549e858d6d77">
        <ownedEnd xmi:id="79363c3a-95cb-4931-b243-549e858d6d77" name="annotatingElement" visibility="public" type="3bade169-f558-4d7e-aea3-b195c0224e20" isOrdered="true" isDerived="true" association="ff8d3fd8-1df3-4f9f-9eb6-abbac267d6fb">
          <ownedComment xmi:id="84477bfa-1e68-4fff-8a3a-5dae67ddbb42" annotatedElement="79363c3a-95cb-4931-b243-549e858d6d77">
            <body>&lt;p>The AnnotatingElements that have a certain Element as their &lt;code>annotatedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="247a9d28-4b58-4e4d-b166-54125993ec78" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="060a318f-3ac6-4784-a6d9-40242cc01ee8" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="c10e5da4-a3e6-425d-b09b-2c5b1deebf36" name="TextualRepresentation" visibility="public">
        <ownedComment xmi:id="6216c69a-fcd9-4b1e-b978-5132dc20c007" annotatedElement="c10e5da4-a3e6-425d-b09b-2c5b1deebf36">
          <body>&lt;p>A &lt;code>TextualRepresentation&lt;/code> is an &lt;code>AnnotatingElement&lt;/code> whose &lt;code>body&lt;/code> represents the &lt;code>representedElement&lt;/code> in a given &lt;code>language&lt;/code>. The &lt;code>representedElement&lt;/code> must be the &lt;code>owner&lt;/code> of the &lt;code>TextualRepresentation&lt;/code>. The named &lt;code>language&lt;/code> can be a natural language, in which case the &lt;code>body&lt;/code> is an informal representation, or an artificial language, in which case the &lt;code>body&lt;/code> is expected to be a formal, machine-parsable representation.&lt;/p>

&lt;p>If the named &lt;code>language&lt;/code> of a &lt;code>TextualRepresentation&lt;/code> is machine-parsable, then the &lt;code>body&lt;/code> text should be legal input text as defined for that &lt;code>language&lt;/code>. The interpretation of the named language string shall be case insensitive. The following &lt;code>language&lt;/code> names are defined to correspond to the given standard languages:&lt;/p>

&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; width=&quot;498&quot;>
	&lt;thead>
	&lt;/thead>
	&lt;tbody>
		&lt;tr>
			&lt;td style=&quot;text-align: center; width: 154px;&quot;>&lt;code>kerml&lt;/code>&lt;/td>
			&lt;td style=&quot;width: 332px;&quot;>Kernel Modeling Language&lt;/td>
		&lt;/tr>
		&lt;tr>
			&lt;td style=&quot;text-align: center; width: 154px;&quot;>&lt;code>ocl&lt;/code>&lt;/td>
			&lt;td style=&quot;width: 332px;&quot;>Object Constraint Language&lt;/td>
		&lt;/tr>
		&lt;tr>
			&lt;td style=&quot;text-align: center; width: 154px;&quot;>&lt;code>alf&lt;/code>&lt;/td>
			&lt;td style=&quot;width: 332px;&quot;>Action Language for fUML&lt;/td>
		&lt;/tr>
	&lt;/tbody>
&lt;/table>

&lt;p>Other specifications may define specific &lt;code>language&lt;/code> strings, other than those shown above, to be used to indicate the use of languages from those specifications in KerML &lt;code>TextualRepresentation&lt;/code>.&lt;/p>

&lt;p>If the &lt;code>language&lt;/code> of a &lt;code>TextualRepresentation&lt;/code> is &amp;quot;&lt;code>kerml&lt;/code>&amp;quot;, then the &lt;code>body&lt;/code> text shall be a legal representation of the &lt;code>representedElement&lt;/code> in the KerML textual concrete syntax. A conforming tool can use such a &lt;code>TextualRepresentation&lt;/code> &lt;code>Annotation&lt;/code> to record the original KerML concrete syntax text from which an &lt;code>Element&lt;/code> was parsed. In this case, it is a tool responsibility to ensure that the &lt;code>body&lt;/code> of the &lt;code>TextualRepresentation&lt;/code> remains correct (or the Annotation is removed) if the annotated &lt;code>Element&lt;/code> changes other than by re-parsing the &lt;code>body&lt;/code> text.&lt;/p>

&lt;p>An &lt;code>Element&lt;/code> with a &lt;code>TextualRepresentation&lt;/code> in a language other than KerML is essentially a semantically &amp;quot;opaque&amp;quot; &lt;code>Element&lt;/code> specified in the other language. However, a conforming KerML tool may interpret such an element consistently with the specification of the named language.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="b6a812ef-8544-42d2-853c-13023d217770" general="3bade169-f558-4d7e-aea3-b195c0224e20"/>
        <ownedAttribute xmi:id="bc93f8c6-215d-4e59-811a-4c28c5c5cb21" name="language" visibility="public">
          <ownedComment xmi:id="22a6e5df-15c8-4e3a-a648-e261fae2a48e" annotatedElement="bc93f8c6-215d-4e59-811a-4c28c5c5cb21">
            <body>&lt;p>The natural or artifical language in which the &lt;code>body&lt;/code> text is written.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a7410e47-28b5-47f6-96b7-b70382dc5b4a" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9a406512-be09-4750-b484-699f448bfb79" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="94b41a6b-aa1f-4950-9fb3-34a3a8c7ce79" name="representedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isDerived="true" redefinedProperty="d0221b66-75b1-4727-90da-636288f9d289" subsettedProperty="62034bc0-cc6e-41a0-b2b7-09f6bb604c5e" association="bf14fcaa-2d00-4f90-b666-1c0ed4ff4c8c">
          <ownedComment xmi:id="b7b9395d-ae1c-4b02-bb82-e69c302d26a0" annotatedElement="94b41a6b-aa1f-4950-9fb3-34a3a8c7ce79">
            <body>&lt;p>The &lt;code>Element&lt;/code> that is represented by this &lt;code>TextualRepresentation&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8347f365-01c6-4b18-9394-933b1669587e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="01aef6ad-1caa-4e01-aa6b-391896201ed3" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="a58b6080-248a-433e-9178-f0b58d7179d1" name="body" visibility="public">
          <ownedComment xmi:id="7fddc711-2bee-4f72-a253-2955f8181af7" annotatedElement="a58b6080-248a-433e-9178-f0b58d7179d1">
            <body>&lt;p>The textual representation of the &lt;code>representedElement&lt;/code> in the given &lt;code>language&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="54a5e01f-bf37-43de-9932-b2f17599cd8e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d0a6e7ed-0b47-4b1a-b0c3-78a7403d681e" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="711f09e2-6f0c-4691-9ca4-da1dc268cc8f" name="Documentation" visibility="public">
        <ownedComment xmi:id="bdf9ec88-bfd6-43ff-bdaf-7618b423e57e" annotatedElement="711f09e2-6f0c-4691-9ca4-da1dc268cc8f">
          <body>&lt;p>&lt;code>Documentation&lt;/code> is a &lt;code>Comment&lt;/code> that specifically documents a &lt;code>documentedElement&lt;/code>, which must be its &lt;code>owner&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="8543067b-4c02-4cd8-b706-e13be0469369" general="7597d3ab-ba4e-4ad5-8a12-2a8347efbb04"/>
        <ownedAttribute xmi:id="583a6860-b6e7-432d-bfcd-eabf9dc3e675" name="documentedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isDerived="true" redefinedProperty="d0221b66-75b1-4727-90da-636288f9d289" subsettedProperty="62034bc0-cc6e-41a0-b2b7-09f6bb604c5e" association="72ce8ab7-ea8f-45ce-8699-c4f7381cb07b">
          <ownedComment xmi:id="9bcb9ea1-e315-4b35-98d1-39f48adf332a" annotatedElement="583a6860-b6e7-432d-bfcd-eabf9dc3e675">
            <body>&lt;p>The &lt;code>Element&lt;/code> that is documented by this &lt;code>Documentation&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="55e3baa2-d1c7-4565-86f7-e8376ae3a301" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="aa757ccf-fc66-4482-ba6b-e7c5fe3bb27d" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="e3e6fd59-8ad6-43ed-9d4c-cc2870e269bc" name="A_ownedAnnotatingRelationship_owningAnnotatingElement" visibility="public" memberEnd="e126bf1c-1878-4e87-ab9e-f056abda2405 dacbaa16-7f5e-49ff-8aec-43761baec776"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="3654fd16-4fd3-4b99-ab46-498c257a0cc3" name="Namespaces" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="8f66fb8b-4fcf-4857-aa40-e913ab2adeb4" name="Import" visibility="public" isAbstract="true">
        <ownedComment xmi:id="2c0e6dfa-3dc5-492a-b0b0-9811e9c56ee3" annotatedElement="8f66fb8b-4fcf-4857-aa40-e913ab2adeb4">
          <body>&lt;p>An &lt;code>Import&lt;/code> is an &lt;code>Relationship&lt;/code> between its &lt;code>importOwningNamespace&lt;/code> and either a &lt;code>Membership&lt;/code> (for a &lt;code>MembershipImport&lt;/code>) or another &lt;code>Namespace&lt;/code> (for a &lt;code>NamespaceImport&lt;/code>), which determines a set of &lt;code>Memberships&lt;/code> that become &lt;code>importedMemberships&lt;/code> of the &lt;code>importOwningNamespace&lt;/code>. If &lt;code>isImportAll = false&lt;/code> (the default), then only public &lt;code>Memberships&lt;/code> are considered &amp;quot;visible&amp;quot;. If &lt;code>isImportAll = true&lt;/code>, then all &lt;code>Memberships&lt;/code> are considered &amp;quot;visible&amp;quot;, regardless of their declared &lt;code>visibility&lt;/code>. If &lt;code>isRecursive = true&lt;/code>, then visible &lt;code>Memberships&lt;/code> are also recursively imported from owned sub-&lt;code>Namespaces&lt;/code>.&lt;/p>

</body>
        </ownedComment>
        <generalization xmi:id="8d0708a4-02c8-4a8e-a18d-2cbc90e76c54" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="271bd60d-3a80-49f3-9104-4657faeea3ff" name="importOwningNamespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="c81d146c-d738-40a0-ab80-8526beac3673" association="9bdb34ac-945c-484c-b330-bee272368c07">
          <ownedComment xmi:id="896a93b3-e89f-4045-b3bf-f73758c6367f" annotatedElement="271bd60d-3a80-49f3-9104-4657faeea3ff">
            <body>&lt;p>The Namespace into which Memberships are imported by this Import, which must be the &lt;code>owningRelatedElement&lt;/code> of the Import.&lt;/p> 
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="622b0ca0-f9e5-493a-b156-f79c34214810" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="fdd1a53e-879f-479c-bce1-8c3b157d26e9" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="58d5073c-91b9-4051-ba14-ea60c17342a8" name="visibility" visibility="public" type="3c554f4a-cb09-42ff-b720-3e892c9873b7">
          <ownedComment xmi:id="4a1dae4c-12f7-4204-baea-89122dbe22c5" annotatedElement="58d5073c-91b9-4051-ba14-ea60c17342a8">
            <body>&lt;p>The visibility level of the imported &lt;code>members&lt;/code> from this Import relative to the &lt;code>importOwningNamespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <defaultValue xmi:type="uml:InstanceValue" xmi:id="418de693-2f79-40fd-aa71-7c5c14b46001" name="" visibility="public" instance="15acad90-9421-4bb7-a51e-2e37eeb9e8cc"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="f3532740-fb74-407d-92e3-037e7bb482a1" name="isRecursive" visibility="public">
          <ownedComment xmi:id="535934b5-8d57-4c38-8c2c-844ef6993f1d" annotatedElement="f3532740-fb74-407d-92e3-037e7bb482a1">
            <body>&lt;p>Whether to recursively import Memberships from visible, owned sub-Namespaces.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="8bb983a8-fe66-46b0-a8bc-b3053cec7554" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="6f60838b-0e5b-44f0-af95-718a85fb22eb" name="isImportAll" visibility="public">
          <ownedComment xmi:id="c9172155-35fc-4dd1-bb75-9c9c7e29e90e" annotatedElement="6f60838b-0e5b-44f0-af95-718a85fb22eb">
            <body>&lt;p>Whether to import memberships without regard to declared visibility.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="584500a6-e1b5-471c-8c4b-5c90535f7817" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fc380ea3-2822-4ee3-84e8-c8bd84e1b793" name="importedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isDerived="true" association="f7669291-3f58-4f63-b203-96d18c694943">
          <ownedComment xmi:id="f207d281-f41f-47c7-a440-0d923d58620f" annotatedElement="fc380ea3-2822-4ee3-84e8-c8bd84e1b793">
            <body>&lt;p>The effectively imported &lt;code>Element&lt;/code> for this &lt;/code>Import&lt;/code>. For a &lt;code>MembershipImport&lt;/code>, this is the &lt;code>memberElement&lt;/code> of the &lt;code>importedMembership&lt;/code>. For a &lt;code>NamespaceImport&lt;/code>, it is the &lt;code>importedNamespace&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="295073dd-a5d2-4076-b1e2-22d75345d73d" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="797bc41d-4566-4bd6-baf4-6d6c788042b9" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="8a714679-a2aa-4996-b71e-ed6669a82ceb" name="importedMemberships" visibility="public" isAbstract="true">
          <ownedComment xmi:id="c475a12a-b718-4ce8-a1de-bf62ea0b9aba" annotatedElement="8a714679-a2aa-4996-b71e-ed6669a82ceb">
            <body>&lt;p>Returns Memberships that are to become &lt;code>importedMemberships&lt;/code> of the &lt;code>importOwningNamespace&lt;/code>. (The &lt;code>excluded&lt;/code> parameter is used to handle the possibility of circular Import Relationships.)&lt;/p>
</body>
          </ownedComment>
          <ownedParameter xmi:id="af646b9b-2e84-449a-8c0c-5d41804a01cd" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="048cfc1b-af3f-4728-8770-718e9bd03570" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d3800a7c-fb42-4b36-a690-a33b60279e92" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="bb77687a-85a3-4345-8b4b-f042b5f3d5fe" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9f86c781-b2bc-4fe6-8fcc-6233fd2bf037" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="57739ebe-d01d-40e2-98a2-ce55dc70cecd" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="5e101cc3-84d0-488e-acb5-4fd6ee32b13f" name="A_membership_membershipNamespace" visibility="public" memberEnd="596739a5-b42a-40d6-af0c-89cddf2d7768 84afb4bc-eed8-491b-bcf4-169870b700a8">
        <ownedEnd xmi:id="84afb4bc-eed8-491b-bcf4-169870b700a8" name="membershipNamespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" isDerived="true" isDerivedUnion="true" association="5e101cc3-84d0-488e-acb5-4fd6ee32b13f">
          <ownedComment xmi:id="3ace1bc9-ea48-4a89-9e6c-17e06d6011c3" annotatedElement="84afb4bc-eed8-491b-bcf4-169870b700a8">
            <body>&lt;p>The Namespace that has a certain &lt;code>membership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6a0783d8-ec2d-4f66-9000-7edc7bd4efdd" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="36d3ac80-736a-4265-9ceb-d54b3300ce2c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="fb27be29-57e6-4078-9c43-1884c674f4fa" name="A_ownedMembership_membershipOwningNamespace" visibility="public" memberEnd="fad0c25d-2a44-4e7a-9b06-bae16320cb4e 67aded9a-ae8a-4191-8053-2df04cce9c8c"/>
      <packagedElement xmi:type="uml:Enumeration" xmi:id="3c554f4a-cb09-42ff-b720-3e892c9873b7" name="VisibilityKind" visibility="public">
        <ownedComment xmi:id="657d2ea8-3c4a-4661-bf87-95c9b2db0891" annotatedElement="3c554f4a-cb09-42ff-b720-3e892c9873b7">
          <body>&lt;p>&lt;code>VisibilityKind&lt;/code> is an enumeration whose literals specify the visibility of a &lt;code>Membership&lt;/code> of an &lt;code>Element&lt;/code> in a &lt;code>Namespace&lt;/code> outside of that &lt;code>Namespace&lt;/code>. Note that &amp;quot;visibility&amp;quot; specifically restricts whether an &lt;code>Element&lt;/code> in a &lt;code>Namespace&lt;/code> may be referenced by name from outside the &lt;code>Namespace&lt;/code> and only otherwise restricts access to an &lt;code>Element&lt;/code> as provided by specific constraints in the abstract syntax (e.g., preventing the import or inheritance of private &lt;code>Elements&lt;/code>).&lt;/p>
</body>
        </ownedComment>
        <ownedLiteral xmi:id="fd3b9d9e-6332-443c-90ac-5248f74087e8" name="private" visibility="public">
          <ownedComment xmi:id="7d534a0a-2514-44c2-9023-2a3032327c3e" annotatedElement="fd3b9d9e-6332-443c-90ac-5248f74087e8">
            <body>&lt;p>Indicates a &lt;code>Membership&lt;/code> is not visible outside its owning &lt;code>Namespace&lt;/code>.&lt;/p></body>
          </ownedComment>
        </ownedLiteral>
        <ownedLiteral xmi:id="90b22fa2-ae47-4ec4-a0ec-0bb7724fae4c" name="protected" visibility="public">
          <ownedComment xmi:id="37ffd852-2806-4af9-89c3-e359c29b39da" annotatedElement="90b22fa2-ae47-4ec4-a0ec-0bb7724fae4c">
            <body>&lt;p>An intermediate level of visibility between &lt;code>public&lt;/code> and &lt;code>private&lt;/code>. By default, it is equivalent to &lt;code>private&lt;/code> for the purposes of normal access to and import of &lt;code>Elements&lt;/code> from a &lt;code>Namespace&lt;/code>. However, other &lt;code>Relationships&lt;/code> may be specified to include &lt;code>Memberships&lt;/code> with &lt;code>protected&lt;/code> visibility in the list of &lt;code>memberships&lt;/code> for a &lt;code>Namespace&lt;/code> (e.g., &lt;code>Specialization&lt;/code>).&lt;/p>
</body>
          </ownedComment>
        </ownedLiteral>
        <ownedLiteral xmi:id="15acad90-9421-4bb7-a51e-2e37eeb9e8cc" name="public" visibility="public">
          <ownedComment xmi:id="52a7142e-694f-479f-82d1-26e1be47a0eb" annotatedElement="15acad90-9421-4bb7-a51e-2e37eeb9e8cc">
            <body>&lt;p>Indicates that a &lt;code>Membership&lt;/code> is publicly visible outside its owning &lt;code>Namespace&lt;/code>.&lt;/p></body>
          </ownedComment>
        </ownedLiteral>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="60438f9a-8635-4e76-8b72-35fa805bcaa3" name="A_ownedMemberElement_owningMembership" visibility="public" memberEnd="c23da327-2bed-4f05-9fa2-9749097c6eca 8763ebb8-6a3d-45b3-b628-966dc39fbb40"/>
      <packagedElement xmi:type="uml:Association" xmi:id="28339edc-cbbe-4fe4-b447-f1c9cca819dc" name="A_member_namespace" visibility="public" memberEnd="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb 1e7fdba0-a195-4da8-a935-bd8e7b72a7d2">
        <ownedEnd xmi:id="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2" name="namespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" isDerived="true" association="28339edc-cbbe-4fe4-b447-f1c9cca819dc">
          <ownedComment xmi:id="efe1799d-5365-4a93-ab95-b6935d7bc612" annotatedElement="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2">
            <body>&lt;p>The Namespace the has a certain Element as a &lt;code>member&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="faf9d113-a6d0-4c85-852a-7f0d32fc61e8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="68e14e77-bc8f-401b-8195-60acee7b3317" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="16a893ca-c85b-4a48-989a-fc24520fc6d6" name="Namespace" visibility="public">
        <ownedComment xmi:id="f2f02d0e-d8db-449d-b0ea-43e734ef12a1" annotatedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <body>&lt;p>A &lt;code>Namespace&lt;/code> is an &lt;code>Element&lt;/code> that contains other &lt;code>Elements&lt;/code>, known as its &lt;code>members&lt;/code>, via &lt;code>Membership&lt;/code> &lt;code>Relationships&lt;/code> with those &lt;code>Elements&lt;/code>. The &lt;code>members&lt;/code> of a &lt;code>Namespace&lt;/code> may be owned by the &lt;code>Namespace&lt;/code>, aliased in the &lt;code>Namespace&lt;/code>, or imported into the &lt;code>Namespace&lt;/code> via &lt;code>Import&lt;/code> &lt;code>Relationships&lt;/code>.&lt;/p>

&lt;p>A &lt;code>Namespace&lt;/code> can provide names for its &lt;code>members&lt;/code> via the &lt;code>memberNames&lt;/code> and &lt;code>memberShortNames&lt;/code> specified by the &lt;code>Memberships&lt;/code> in the &lt;code>Namespace&lt;/code>. If a &lt;code>Membership&lt;/code> specifies a &lt;code>memberName&lt;/code> and/or &lt;code>memberShortName&lt;/code>, then those are names of the corresponding &lt;code>memberElement&lt;/code> relative to the &lt;code>Namespace&lt;/code>. For an &lt;code>OwningMembership&lt;/code>, the &lt;code>owningMemberName&lt;/code> and &lt;code>owningMemberShortName&lt;/code> are given by the &lt;code>Element&lt;/code> &lt;code>name&lt;/code> and &lt;code>shortName&lt;/code>. Note that the same &lt;code>Element&lt;/code> may be the &lt;code>memberElement&lt;/code> of multiple &lt;code>Memberships&lt;/code> in a &lt;code>Namespace&lt;/code> (though it may be owned at most once), each of which may define a separate alias for the &lt;code>Element&lt;/code> relative to the &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="25cff97b-4187-46ce-9082-861982bc2fae" name="validateNamespaceDistinguishibility" visibility="public" constrainedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <ownedComment xmi:id="5153326e-5447-4382-abaa-59f9c1028517" annotatedElement="25cff97b-4187-46ce-9082-861982bc2fae">
            <body>&lt;p>All &lt;code>memberships&lt;/code> of a Namespace must be distinguishable from each other.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f496d13c-cb65-4e19-a984-878a6fbf3c2d" name="" visibility="public">
            <language>OCL2.0</language>
            <body>membership->forAll(m1 | 
    membership->forAll(m2 | 
        m1 &lt;> m2 implies m1.isDistinguishableFrom(m2)))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="43aa5f83-966a-4e05-8545-5b0eacd4bb85" name="deriveNamespaceMembers" visibility="public" constrainedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <ownedComment xmi:id="78f07541-711e-42e4-ad80-dbb58a80dd98" annotatedElement="43aa5f83-966a-4e05-8545-5b0eacd4bb85">
            <body>&lt;p>The &lt;code>members&lt;/code> of a Namespace are the &lt;code>memberElements&lt;/code> of all its &lt;code>memberships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="243f0f45-7904-42ea-afcc-3e23f9b1202f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>member = membership.memberElement</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="f10a5faa-1151-4c9c-aeee-b0b520fc0789" name="deriveNamespaceOwnedMember" visibility="public" constrainedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <ownedComment xmi:id="0f18bc50-ac73-453b-9f7a-26cd50809797" annotatedElement="f10a5faa-1151-4c9c-aeee-b0b520fc0789">
            <body>&lt;p>The &lt;code>ownedMembers&lt;/code> of a Namespace are the &lt;code>ownedMemberElements&lt;/code> of all its &lt;code>ownedMemberships&lt;/code> that are OwningMemberships.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1ca742a9-029f-4f36-ae8b-52bda860cadc" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="f906b3d2-94dc-42c4-9d0a-b447b47cddef" name="deriveNamespaceImportedMembership" visibility="public" constrainedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <ownedComment xmi:id="950456a1-c66b-4006-9997-c5b9a5179c7d" annotatedElement="f906b3d2-94dc-42c4-9d0a-b447b47cddef">
            <body>&lt;p>The &lt;code>importedMemberships&lt;/code> of a Namespace are derived using the &lt;code>importedMemberships()&lt;/code> operation,with no initially &lt;code>excluded&lt;/code> Namespaces.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9d280915-15b5-4ee9-ba0d-94407ea1b5cd" name="" visibility="public">
            <language>OCL2.0</language>
            <body>importedMembership = importedMemberships(Set{})</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="b71efdb5-2147-464d-bf27-dc7876ec58d0" name="deriveNamespaceOwnedImport" visibility="public" constrainedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <ownedComment xmi:id="e4c37e45-f401-4390-b88c-344b01de8ff9" annotatedElement="b71efdb5-2147-464d-bf27-dc7876ec58d0">
            <body>&lt;p>The &lt;code>ownedImports&lt;/code> of a Namespace are all its &lt;code>ownedRelationships&lt;/code> that are Imports.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cbac75aa-b451-4fd0-a1d9-d5dbe1675435" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedImport = ownedRelationship->selectByKind(Import)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="63407066-b975-4718-a1c2-ef22221a0290" name="deriveNamespaceOwnedMembership" visibility="public" constrainedElement="16a893ca-c85b-4a48-989a-fc24520fc6d6">
          <ownedComment xmi:id="f3c5143c-2bff-43e2-b289-48a98f83db40" annotatedElement="63407066-b975-4718-a1c2-ef22221a0290">
            <body>&lt;p>The &lt;code>ownedMemberships&lt;/code> of a Namespace are all its &lt;code>ownedRelationships&lt;/code> that are Memberships.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="96b5208f-6e1f-42fb-abe6-c0149ebbeef8" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMembership = ownedRelationship->selectByKind(Membership)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="7cf9a317-e4d2-487f-9d3b-5902e8a6d7f8" general="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
        <ownedAttribute xmi:id="596739a5-b42a-40d6-af0c-89cddf2d7768" name="membership" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" isDerived="true" isDerivedUnion="true" association="5e101cc3-84d0-488e-acb5-4fd6ee32b13f">
          <ownedComment xmi:id="95b11c7d-3aa4-44b3-8288-74b97cba278e" annotatedElement="596739a5-b42a-40d6-af0c-89cddf2d7768">
            <body>&lt;p>All &lt;code>Memberships&lt;/code> in this &lt;code>Namespace&lt;/code>, including (at least) the union of &lt;code>ownedMemberships&lt;/code> and &lt;code>importedMemberships&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d488482d-ef4b-4546-98d3-d8adf8a53b69" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b943317b-536d-40d0-8434-d1401f941f88" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d382696c-18ad-4754-8872-cf777875c8c6" name="ownedImport" visibility="public" type="8f66fb8b-4fcf-4857-aa40-e913ab2adeb4" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874 9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" association="9bdb34ac-945c-484c-b330-bee272368c07">
          <ownedComment xmi:id="3d159236-a178-40a3-a8f6-0dfdc86b2b94" annotatedElement="d382696c-18ad-4754-8872-cf777875c8c6">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Namespace&lt;/code> that are &lt;code>Imports&lt;/code>, for which the &lt;code>Namespace&lt;/code> is the &lt;code>importOwningNamespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="58df0ebe-8ba7-49e6-ac98-1a5bdc2fd762" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b784d550-c7d2-476b-9947-cba4a2cfa797" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb" name="member" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isDerived="true" association="28339edc-cbbe-4fe4-b447-f1c9cca819dc">
          <ownedComment xmi:id="5ccbbff6-ca16-479d-8854-37202ab76c73" annotatedElement="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb">
            <body>&lt;p>The set of all member &lt;code>Elements&lt;/code> of this &lt;code>Namespace&lt;/code>, which are the &lt;code>memberElements&lt;/code> of all &lt;code>memberships&lt;/code> of the &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f911b330-c172-4c05-ac1d-32ff08379e8e" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2ab45f03-d96b-4b80-beae-abb5482591a1" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e77d17fa-39f5-4493-b101-5630bea6df70" name="ownedMember" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isDerived="true" subsettedProperty="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb" association="aabecc48-e2a8-4563-b984-37f093695d4c">
          <ownedComment xmi:id="b08b63d7-36a4-469a-80c1-0ae71f546f6b" annotatedElement="e77d17fa-39f5-4493-b101-5630bea6df70">
            <body>&lt;p>The owned &lt;code>members&lt;/code> of this &lt;code>Namespace&lt;/code>, which are the &lt;cpde>&lt;code>ownedMemberElements&lt;/code> of the &lt;code>ownedMemberships&lt;/code> of the .&lt;/cpde>&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="337144d9-d9e7-4319-97df-6ef281c2f304" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="903eafa3-6709-4d12-8ede-aa39ba856ee5" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fad0c25d-2a44-4e7a-9b06-bae16320cb4e" name="ownedMembership" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="596739a5-b42a-40d6-af0c-89cddf2d7768 fd194ed0-9544-4215-b3df-64c5423ec874 9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" association="fb27be29-57e6-4078-9c43-1884c674f4fa">
          <ownedComment xmi:id="3c35c9e8-1617-4b1f-92f8-5fd4878020a6" annotatedElement="fad0c25d-2a44-4e7a-9b06-bae16320cb4e">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Namespace&lt;/code> that are &lt;code>Memberships&lt;/code>, for which the &lt;code>Namespace&lt;/code> is the &lt;code>membershipOwningNamespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="fed4d7ff-d833-432b-b9c3-cb500b988d5c" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0b9e0a86-b755-489f-b984-15df9be42e73" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="88e42ee1-8909-4ebd-b5df-cca0a4c44be4" name="importedMembership" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" isDerived="true" subsettedProperty="596739a5-b42a-40d6-af0c-89cddf2d7768" association="d8475f22-7a4e-4b48-9d92-c9e5005db5bd">
          <ownedComment xmi:id="fb8d0dc8-df2a-4101-b4a5-1b1bf2efca48" annotatedElement="88e42ee1-8909-4ebd-b5df-cca0a4c44be4">
            <body>&lt;p>The &lt;code>Memberships&lt;/code> in this &lt;code>Namespace&lt;/code> that result from the &lt;code>ownedImports&lt;/code> of this &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c7a20447-62df-46c7-a32e-acf7c402c46a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ddc788e6-1a2e-41d7-b87a-df2d6072b2ef" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedOperation xmi:id="cc52b343-984f-44ba-a61c-7eef1d0f25c9" name="namesOf" visibility="public" bodyCondition="0c2fbb5e-dc27-467c-8ec3-feec6a70f641">
          <ownedComment xmi:id="3665befc-da9a-42ad-8d35-32819ebe568b" annotatedElement="cc52b343-984f-44ba-a61c-7eef1d0f25c9">
            <body>&lt;p>Return the names of the given &lt;code>element&lt;/code> as it is known in this &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="0c2fbb5e-dc27-467c-8ec3-feec6a70f641" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="5827e1fd-94be-4bc9-a9d7-91cb7e6d4c8b" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let elementMemberships : Sequence(Membership) = 
    memberships->select(memberElement = element) in
memberships.memberShortName->
    union(memberships.memberName)->
    asSet()</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="8a711874-7ee4-4d57-a66a-87db1f92432f" name="element" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="63098be5-3fe4-46d0-b9ef-6130e2ebd0dc" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="71754506-c03d-4de0-baa2-ba7e14c29bf9" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5387a1a3-93e4-4289-979c-9ba0ece522ec" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="0e5cb310-79c0-4140-8eee-1e6303ba9f35" name="visibilityOf" visibility="public" bodyCondition="3f697fcb-64d9-43ff-991e-968d599263b0">
          <ownedComment xmi:id="d7c68339-9109-450e-9db7-f18beac4d1bf" annotatedElement="0e5cb310-79c0-4140-8eee-1e6303ba9f35">
            <body>&lt;p>Returns this visibility of &lt;code>mem&lt;/code> relative to this &lt;code>Namespace&lt;/code>. If &lt;code>mem&lt;/code> is an &lt;code>importedMembership&lt;/code>, this is the &lt;code>visibility&lt;/code> of its Import. Otherwise it is the &lt;code>visibility&lt;/code> of the &lt;code>Membership&lt;/code> itself.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="3f697fcb-64d9-43ff-991e-968d599263b0" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="2c5ed904-f3dc-4c89-a19e-6cc79315abbc" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if importedMembership->includes(mem) then
    ownedImport->
        select(importedMemberships(Set{})->includes(mem)).
        first().visibility
else if memberships->includes(mem) then
    mem.visibility
else
    VisibilityKind::private
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="7ada6d62-0a49-4329-a608-fe49b1f0a29c" name="mem" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c"/>
          <ownedParameter xmi:id="256fd9d5-6ff4-4cb7-a713-766869942dca" name="" visibility="public" type="3c554f4a-cb09-42ff-b720-3e892c9873b7" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="00b0ab66-7abb-4d9c-aa6b-deedefd969d1" name="visibleMemberships" visibility="public" bodyCondition="b7de6264-0617-401e-b5c9-b2d9b444f641">
          <ownedComment xmi:id="d7f37b00-4adc-4af3-bf3f-7a8c49e0dd38" annotatedElement="00b0ab66-7abb-4d9c-aa6b-deedefd969d1">
            <body>&lt;p>If &lt;code>includeAll = true&lt;/code>, then return all the &lt;code>Memberships&lt;/code> of this &lt;code>Namespace&lt;/code>. Otherwise, return only the publicly visible &lt;code>Memberships&lt;/code> of this &lt;code>Namespace&lt;/code> (which includes those &lt;code>ownedMemberships&lt;/code> that have a &lt;code>visibility&lt;/code> of &lt;code>public&lt;/code> and those &lt;code>importedMemberships&lt;/code> imported with a &lt;code>visibility&lt;/code> of &lt;code>public&lt;/code>). If &lt;code>isRecursive = true&lt;/code>, also recursively include all visible &lt;code>Memberships&lt;/code> of any visible owned &lt;code>Namespaces&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="b7de6264-0617-401e-b5c9-b2d9b444f641" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="eb4ed6ab-f8cc-4dd1-ae8a-55d1ede94cbe" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let visibleMemberships : Sequence(Membership) =
    if includeAll then memberships
    else ownedMembership->
        select(visibility = VisibilityKind::public)->
        union(ownedImport->
            select(visibility = VisibilityKind::public).
            importedMemberships(excluded->including(self)))
    endif in
if not isRecursive then visibleMemberships
else visibleMemberships->union(visibleMemberships->
        selectAsKind(Namespace).
        visibleMemberships(excluded->including(self), true, includeAll))
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="4ca6bae6-a45b-4f6e-9cc4-0fe9b5cb029b" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="951f5b83-3805-444b-b178-6845b637a63d" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="924ae7d9-e81b-4711-8532-67f27489d99d" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="226ea837-426f-4e34-b732-1d568bdcf1a9" name="isRecursive" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="9a2be4f8-6200-4861-8a69-78b354258339" name="includeAll" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="6dcccd07-d4c0-4561-ae26-647e99c6851a" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e45e5e0e-7cbf-4d64-8294-899bd38a97e4" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="fd9dcb3b-26e4-4e9e-bb9e-80acc71d322d" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="0d6961a1-98da-4c05-8d2b-0b4ae18e87ca" name="importedMemberships" visibility="public" bodyCondition="ee1029de-690c-4701-ad20-dbe4e4eb8439">
          <ownedComment xmi:id="326eeaab-7e13-4c31-b398-b7e10b362fe7" annotatedElement="0d6961a1-98da-4c05-8d2b-0b4ae18e87ca">
            <body>&lt;p>Derive the imported &lt;code>Memberships&lt;/code> of this &lt;code>Namespace&lt;/code> as the &lt;code>importedMembership&lt;/code> of all &lt;code>ownedImports&lt;/code>, excluding those Imports whose &lt;code>importOwningNamespace&lt;/code> is in the &lt;code>excluded&lt;/code> set, and excluding &lt;code>Memberships&lt;/code> that have distinguisibility collisions with each other or with any &lt;code>ownedMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="ee1029de-690c-4701-ad20-dbe4e4eb8439" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="a846cd8c-7057-4d65-ba3c-106fd7e5b309" name="" visibility="public">
              <language>OCL2.0</language>
              <body>ownedImport.importedMemberships(excluded->including(self))</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="3c603c65-1af7-488e-b0b1-588dbaf2078d" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="114d4141-2cc0-47bf-aed0-70ab2d28b86e" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1d157179-1e0a-44ef-bcda-a7cb00b192e0" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="6c85e5b6-8887-4bef-a241-616014aa0156" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="fc353578-b131-4ce0-9d64-5a61a7834816" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7c9d0da7-3218-4e1f-98ee-55b3d5526076" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="b1df7a5a-b98b-4c79-a882-4853c4bdceee" name="resolve" visibility="public" bodyCondition="f1ff25fa-504b-4a78-9528-34e16204d18c">
          <ownedComment xmi:id="d29a895d-f522-426b-8d9d-6936cc9e46e5" annotatedElement="b1df7a5a-b98b-4c79-a882-4853c4bdceee">
            <body>&lt;p>Resolve the given qualified name to the named &lt;code>Membership&lt;/code> (if any), starting with this &lt;code>Namespace&lt;/code> as the local scope. The qualified name string must conform to the concrete syntax of the KerML textual notation. According to the KerML name resolution rules every qualified name will resolve to either a single &lt;code>Membership&lt;/code>, or to none.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="f1ff25fa-504b-4a78-9528-34e16204d18c" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="b78a0983-9322-47e7-a8e1-822253928f56" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let qualification : String = qualificationOf(qualifiedName) in
let name : String = unqualifiedNameOf(qualifiedName) in
if qualification = null then resolveLocal(name)
else 
    let namespaceMembership : Membership = resolve(qualification) in
    if namespaceMembership = null or 
       not namespaceMembership.memberElement.oclIsKindOf(Namespace) 
    then null
    else 
        namespaceMembership.memberElement.oclAsType(Namespace).
        resolveVisible(name) 
    endif
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="a8aa61f2-9f3a-46fb-91ae-af1fd94c047c" name="qualifiedName" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="c3678b0d-e804-4f76-a0e4-8bae17d076b0" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3c6bc4da-1ddd-4df4-9f68-cb72285ba1ad" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="71425c93-097a-4806-82c0-4738a3fd361b" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="f29ec11d-98c5-4a9d-9444-a5f51e4c9f1e" name="resolveGlobal" visibility="public" bodyCondition="d4e3a6d3-d060-44e2-8d40-9718c3c36d4e">
          <ownedComment xmi:id="fc93019c-0e33-4fcb-8632-770b39864a27" annotatedElement="f29ec11d-98c5-4a9d-9444-a5f51e4c9f1e">
            <body>&lt;p>Resolve the given qualified name to the named &lt;code>Membership&lt;/code> (if any) in the effective global &lt;code>Namespace&lt;/code> that is the outermost naming scope. The qualified name string must conform to the concrete syntax of the KerML textual notation.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="d4e3a6d3-d060-44e2-8d40-9718c3c36d4e" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="406f9e97-7a6d-444d-b9c0-c4cfa754f773" name="" visibility="public">
              <language>English</language>
              <body>No OCL</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="f1a539e4-46d6-47d2-8db0-6c412f520d43" name="qualifiedName" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="75d89d09-9c97-4e46-a1f7-0f0a8125e5a7" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b22f203e-b8de-4b25-b459-8f1b596f2709" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1040cb4b-7799-4171-ba87-030110fbdc9c" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="9991f411-0c66-4825-b091-1ed933d70e66" name="resolveLocal" visibility="public" bodyCondition="6455caff-866a-4dd5-8177-898b357307f9">
          <ownedComment xmi:id="8d6c8fff-b4d1-4e12-99b0-298484e5b955" annotatedElement="9991f411-0c66-4825-b091-1ed933d70e66">
            <body>&lt;p>Resolve a simple &lt;code>name&lt;/code> starting with this &lt;code>Namespace&lt;/code> as the local scope, and continuing with containing outer scopes as necessary. However, if this &lt;code>Namespace&lt;/code> is a root &lt;code>Namespace&lt;/code>, then the resolution is done directly in global scope.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="6455caff-866a-4dd5-8177-898b357307f9" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="4edbf9b1-2975-411c-8295-a8c4a781ef92" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if owningNamespace = null then resolveGlobal(name)
else
    let memberships : Membership = membership->
        select(memberShortName = name or memberName = name) in
    if memberships->notEmpty() then memberships->first()
    else owningNamspace.resolveLocal(name)
    endif
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="73e574eb-8c31-4a96-a72d-fd6328865181" name="name" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="295d81f7-6a16-4e6e-a24f-a51602decc56" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b76750f2-8337-49b1-a88f-b8ceaf555ed5" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c3e3ad3e-ce77-44f6-9c08-89cfac5d29cc" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="48f997b2-d65f-41cc-8bfe-cad2008c4d43" name="resolveVisible" visibility="public" bodyCondition="c8169077-4fb9-41d9-9367-46fcf3f7828a">
          <ownedComment xmi:id="483cea6f-3dbc-400c-bd9d-cb8dde6bb886" annotatedElement="48f997b2-d65f-41cc-8bfe-cad2008c4d43">
            <body>&lt;p>Resolve a simple name from the visible &lt;code>Memberships&lt;/code> of this &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="c8169077-4fb9-41d9-9367-46fcf3f7828a" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="bb403b0f-a0fa-4ddc-b5d6-21aa07681e0d" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let memberships : Sequence(Membership) =
    visibleMemberships(Set{}, false, false)->
    select(memberShortName = name or memberName = name) in
if memberships->isEmpty() then null
else memberships->first()
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="d7213596-5762-4240-b66d-54412e0772dc" name="name" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="b0841732-7171-4f26-badc-87ce0da1c7e0" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="da791807-0c17-4f04-8c84-3e2c59a9edb7" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="6119400a-30a9-4af4-ad87-05705254549a" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="d3d23125-225f-42f6-aeac-ed88b2245570" name="qualificationOf" visibility="public" bodyCondition="f834827c-0761-4b36-96d8-db2db65bd64e">
          <ownedComment xmi:id="01924437-f07b-4eac-bd2b-25ddc84195c3" annotatedElement="d3d23125-225f-42f6-aeac-ed88b2245570">
            <body>&lt;p>Return a string with valid KerML syntax representing the qualification part of a given &lt;code>qualifiedName&lt;/code>, that is, a qualified name with all the segment names of the given name except the last. If the given &lt;code>qualifiedName&lt;/code> has only one segment, then return null.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="f834827c-0761-4b36-96d8-db2db65bd64e" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="24799e25-6102-42ef-9dfc-d401355bca9a" name="" visibility="public">
              <language>English</language>
              <body>No OCL</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="36ba9b61-dc4a-4c53-8985-e7e33d41f133" name="qualifiedName" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="09a63020-16ba-4a18-8d6d-b6019561c10a" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="22fece40-2994-40a0-b2ff-6ceddc0748bd" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a1108601-4506-4746-91c5-3400a1cde7ea" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="8a16647f-bb34-4829-9431-eebcd67e2eda" name="unqualifiedNameOf" visibility="public" bodyCondition="4c88e0d2-eeab-48a1-be0f-15eee45fd84d">
          <ownedComment xmi:id="edad1cb5-568c-41f4-a1a5-93d575c14a9e" annotatedElement="8a16647f-bb34-4829-9431-eebcd67e2eda">
            <body>&lt;p>Return the simple name that is the last segment name of the given &lt;code>qualifiedName&lt;/code>. If this segment name has the form of a KerML unrestricted name, then &quot;unescape&quot; it by removing the surrounding single quotes and replacing all escape sequences with the specified character.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="4c88e0d2-eeab-48a1-be0f-15eee45fd84d" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="65d577d0-e09f-4428-a4e6-03744edcbbeb" name="" visibility="public">
              <language>English</language>
              <body>No OCL</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="c79aba60-98cb-4938-8bed-f34dd0d0f1cd" name="qualifiedName" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="9e493a78-4661-4376-b34f-356d0922a932" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="aac28989-9501-4cdb-a0de-5be645062d3c" name="Membership" visibility="public">
        <ownedComment xmi:id="a71d51f9-fb26-4091-ac66-aee9766fc0ff" annotatedElement="aac28989-9501-4cdb-a0de-5be645062d3c">
          <body>&lt;p>A &lt;code>Membership&lt;/code> is a &lt;code>Relationship&lt;/code> between a &lt;code>Namespace&lt;/code> and an &lt;code>Element&lt;/code> that indicates the &lt;code>Element&lt;/code> is a &lt;code>member&lt;/code> of (i.e., is contained in) the Namespace. Any &lt;code>memberNames&lt;/code> specify how the &lt;code>memberElement&lt;/code> is identified in the &lt;code>Namespace&lt;/code> and the &lt;code>visibility&lt;/code> specifies whether or not the &lt;code>memberElement&lt;/code> is publicly visible from outside the &lt;code>Namespace&lt;/code>.&lt;/p>

&lt;p>If a &lt;code>Membership&lt;/code> is an &lt;code>OwningMembership&lt;/code>, then it owns its &lt;code>memberElement&lt;/code>, which becomes an &lt;code>ownedMember&lt;/code> of the &lt;code>membershipOwningNamespace&lt;/code>. Otherwise, the &lt;code>memberNames&lt;/code> of a &lt;code>Membership&lt;/code> are effectively aliases within the &lt;code>membershipOwningNamespace&lt;/code> for an &lt;code>Element&lt;/code> with a separate &lt;code>OwningMembership&lt;/code> in the same or a different &lt;code>Namespace&lt;/code>.&lt;/p>

&lt;p>&amp;nbsp;&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="3faf25a9-3234-40ac-b000-15a41afbe906" name="deriveMembershipMemberElementId" visibility="public" constrainedElement="aac28989-9501-4cdb-a0de-5be645062d3c">
          <ownedComment xmi:id="c03bc249-ace5-4ecf-b5fe-3070d08dad02" annotatedElement="3faf25a9-3234-40ac-b000-15a41afbe906">
            <body>&lt;p>The &lt;code>memberElementId&lt;/code> of a &lt;code>Membership&lt;/code> is the &lt;code>elementId&lt;/code> of its &lt;code>memberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="e98d1d57-3932-48cd-ba7f-69ebfe76cb5a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>memberElementId = memberElement.elementId</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="42858694-09f9-4b98-b3ca-2b27902a8f54" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="867c63ec-3922-4eaa-8c78-47ca3f9d04b8" name="memberElementId" visibility="public" isDerived="true">
          <ownedComment xmi:id="2becd2d8-709b-4f3d-9d7e-8decdd0fbbfe" annotatedElement="867c63ec-3922-4eaa-8c78-47ca3f9d04b8">
            <body>&lt;p>The &lt;code>elementId&lt;/code> of the &lt;code>memberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="67aded9a-ae8a-4191-8053-2df04cce9c8c" name="membershipOwningNamespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="84afb4bc-eed8-491b-bcf4-169870b700a8 c81d146c-d738-40a0-ab80-8526beac3673" association="fb27be29-57e6-4078-9c43-1884c674f4fa">
          <ownedComment xmi:id="bdec8d18-5450-45b8-8520-a0811efd18b3" annotatedElement="67aded9a-ae8a-4191-8053-2df04cce9c8c">
            <body>&lt;p>The &lt;code>Namespace&lt;/code> of which the &lt;code>memberElement&lt;/code> becomes a &lt;cpde>member due to this &lt;code>Membership&lt;/code>.&lt;/cpde>&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f9c461ad-ef10-44b9-a694-c1a79d0c2610" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3ff6808b-4c38-4046-a1b7-b307b3f71497" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d9a35a1e-b312-4566-a773-c1a0897341c8" name="memberShortName" visibility="public">
          <ownedComment xmi:id="9cfda454-6c6f-4793-96bf-2818c54fc43b" annotatedElement="d9a35a1e-b312-4566-a773-c1a0897341c8">
            <body>&lt;p>The short name of the &lt;code>memberElement&lt;/code> relative to the &lt;code>membershipOwningNamespace&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="39753b8f-8eb9-4dea-bf44-789c208f3f36" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f5aecd97-323c-49de-81e8-17a6c9b9df55" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ea691af8-fe94-4d70-8a6f-7433b40c3398" name="memberElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="472262e5-dd86-4068-b70f-575d1f532b47">
          <ownedComment xmi:id="657c4083-cda4-42c6-a083-e028caa6ffcc" annotatedElement="ea691af8-fe94-4d70-8a6f-7433b40c3398">
            <body>&lt;p>The &lt;code>Element&lt;/code> that becomes a &lt;code>member&lt;/code> of the &lt;code>membershipOwningNamespace&lt;/code> due to this &lt;code>Membership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ee06bc95-59ed-41d8-be26-620de7a4ab9b" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2aec6ea2-c863-4a5e-8aca-cd996b75b305" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="edd22f54-2750-4e4f-bdf3-96edc70b3ca1" name="memberName" visibility="public">
          <ownedComment xmi:id="82073ed4-a905-4216-98ee-c6f12cbb55da" annotatedElement="edd22f54-2750-4e4f-bdf3-96edc70b3ca1">
            <body>&lt;p>The name of the &lt;code>memberElement&lt;/code> relative to the &lt;code>membershipOwningNamespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="7773bb88-cc60-4219-b4a4-5b25d90de535" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a9fe8b88-b6a4-45ab-98d7-1bdda33f6e3b" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5901151e-f794-4fe3-bda3-fda18dd23c41" name="visibility" visibility="public" type="3c554f4a-cb09-42ff-b720-3e892c9873b7">
          <ownedComment xmi:id="d1b7fb55-f54f-4741-9723-b550a1539feb" annotatedElement="5901151e-f794-4fe3-bda3-fda18dd23c41">
            <body>&lt;p>Whether or not the &lt;code>Membership&lt;/code> of the &lt;code>memberElement&lt;/code> in the &lt;code>membershipOwningNamespace&lt;/code> is publicly visible outside that &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <defaultValue xmi:type="uml:InstanceValue" xmi:id="dbadddca-47c6-40e1-ad50-f055f8455302" name="" visibility="public" instance="15acad90-9421-4bb7-a51e-2e37eeb9e8cc"/>
        </ownedAttribute>
        <ownedOperation xmi:id="77bdab39-4953-418a-a213-e0baf5ecdcaa" name="isDistinguishableFrom" visibility="public" bodyCondition="235456a3-8ffa-4cad-baff-045b0b39933b">
          <ownedComment xmi:id="7afd293b-2c48-47f7-9b10-9ecf5e908467" annotatedElement="77bdab39-4953-418a-a213-e0baf5ecdcaa">
            <body>&lt;p>Whether this &lt;code>Membership&lt;/code> is distinguishable from a given &lt;code>other&lt;/code> &lt;code>Membership&lt;/code>. By default, this is true if this &lt;code>Membership&lt;/code> has no &lt;code>memberShortName&lt;/code> or &lt;code>memberName&lt;/code>; or each of the &lt;code>memberShortName&lt;/code> and &lt;code>memberName&lt;/code> are different than both of those of the &lt;code>other&lt;/code> &lt;code>Membership&lt;/code>; or neither of the metaclasses of the &lt;code>memberElement&lt;/code> of this &lt;code>Membership&lt;/code> and the &lt;code>memberElement&lt;/code> of the &lt;code>other&lt;/code> &lt;code>Membership&lt;/code> conform to the other. But this may be overridden in specializations of &lt;code>Membership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="235456a3-8ffa-4cad-baff-045b0b39933b" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="3f7670db-10fb-4839-aa03-c245dec28cd8" name="" visibility="public">
              <language>OCL2.0</language>
              <body>not (memberElement.oclKindOf(other.memberElement.oclType()) or
     other.memberElement.oclKindOf(memberElement.oclType())) or
(shortMemberName = null or
    (shortMemberName &lt;> other.shortMemberName and
     shortMemberName &lt;> other.memberName)) and
(memberName = null or
    (memberName &lt;> other.shortMemberName and
     memberName &lt;> other.memberName)))
</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="6fcc1fb1-0c5e-4215-8509-6c4b842f5d57" name="other" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c"/>
          <ownedParameter xmi:id="a39f2712-fb80-4daa-8854-931915ae048d" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="9bdb34ac-945c-484c-b330-bee272368c07" name="A_ownedImport_importOwningNamespace" visibility="public" memberEnd="d382696c-18ad-4754-8872-cf777875c8c6 271bd60d-3a80-49f3-9104-4657faeea3ff"/>
      <packagedElement xmi:type="uml:Association" xmi:id="d8475f22-7a4e-4b48-9d92-c9e5005db5bd" name="A_importedMembership_importingNamespace" visibility="public" memberEnd="88e42ee1-8909-4ebd-b5df-cca0a4c44be4 6cc7de57-e8d6-4d88-b511-6bd6b549bd08">
        <ownedEnd xmi:id="6cc7de57-e8d6-4d88-b511-6bd6b549bd08" name="importingNamespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" isDerived="true" subsettedProperty="84afb4bc-eed8-491b-bcf4-169870b700a8" association="d8475f22-7a4e-4b48-9d92-c9e5005db5bd">
          <ownedComment xmi:id="a6baa436-dc30-41d8-bf37-122f5dd0c7c7" annotatedElement="6cc7de57-e8d6-4d88-b511-6bd6b549bd08">
            <body>&lt;p>The Namespace with a certain &lt;code>importedMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f4aeaba9-c37f-4917-a7bf-f3885d5ef97f" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="97da1e84-10f4-42ee-9401-56f8dd8df23e" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="aabecc48-e2a8-4563-b984-37f093695d4c" name="A_ownedMember_owningNamespace" visibility="public" memberEnd="e77d17fa-39f5-4493-b101-5630bea6df70 934985ee-d247-42fc-8106-101a5b3ebacb"/>
      <packagedElement xmi:type="uml:Association" xmi:id="472262e5-dd86-4068-b70f-575d1f532b47" name="A_memberElement_membership" visibility="public" memberEnd="ea691af8-fe94-4d70-8a6f-7433b40c3398 02e7bbf3-5c7d-4606-909b-42e10233ebca">
        <ownedEnd xmi:id="02e7bbf3-5c7d-4606-909b-42e10233ebca" name="membership" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="472262e5-dd86-4068-b70f-575d1f532b47">
          <ownedComment xmi:id="51185687-6911-40cb-9fef-f0cba5622f41" annotatedElement="02e7bbf3-5c7d-4606-909b-42e10233ebca">
            <body>&lt;p>The Membership with a certain Element as its &lt;code>memberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d7c13881-3a8c-4d1f-8a91-47bae60733c5" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7078951b-bf46-4328-9c9d-85d6db9cb996" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="a8082576-4e9a-4b26-93e2-ba498f9afb6e" name="A_importedNamespace_import" visibility="public" memberEnd="de500f4c-b51b-4aa3-96a9-5e3343d35538 c854ee83-3661-45df-abd4-c08d7101c69a">
        <ownedEnd xmi:id="c854ee83-3661-45df-abd4-c08d7101c69a" name="import" visibility="public" type="cce76866-5d17-474a-ac1e-33c73408fb74" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="a8082576-4e9a-4b26-93e2-ba498f9afb6e">
          <ownedComment xmi:id="505885a3-f9b7-4d95-84bb-559d817dabb4" annotatedElement="c854ee83-3661-45df-abd4-c08d7101c69a">
            <body>&lt;p>A NamespaceImport that has a certain &lt;code>importedNamespace&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="06915bee-a4fe-443d-a86f-282e5c9f8260" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8633ee77-4249-4795-91d7-32a5cba89634" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="0ac69c8b-1bab-45e9-82df-d840307444f7" name="OwningMembership" visibility="public">
        <ownedComment xmi:id="a11815de-1634-446d-9135-bf3e4a6b5299" annotatedElement="0ac69c8b-1bab-45e9-82df-d840307444f7">
          <body>&lt;p>An &lt;code>OwningMembership&lt;/code> is a &lt;code>Membership&lt;/code> that owns its &lt;code>memberElement&lt;/code> as a &lt;code>ownedRelatedElement&lt;/code>. The &lt;code>ownedMemberElement&lt;/code> becomes an &lt;code>ownedMember&lt;/code> of the &lt;code>membershipOwningNamespace&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="937c5c6e-2b78-4d55-8d0f-0d3ff3345981" name="deriveOwningMembershipOwnedMemberName" visibility="public" constrainedElement="0ac69c8b-1bab-45e9-82df-d840307444f7">
          <ownedComment xmi:id="b5762de1-c09d-44cc-8c20-2691ec4a9ac2" annotatedElement="937c5c6e-2b78-4d55-8d0f-0d3ff3345981">
            <body>&lt;p>The &lt;code>ownedMemberName&lt;/code> of an OwningMembership is the &lt;code>name&lt;/code> of its &lt;code>ownedMemberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="067884d0-9717-428b-8622-875be509b8de" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMemberName = ownedMemberElement.name</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="44996431-6dd2-4b67-9f85-e54881d64f31" name="deriveOwningMembershipOwnedMemberShortName" visibility="public" constrainedElement="0ac69c8b-1bab-45e9-82df-d840307444f7">
          <ownedComment xmi:id="8b63969a-2ece-491d-8831-d77231b6c5d6" annotatedElement="44996431-6dd2-4b67-9f85-e54881d64f31">
            <body>&lt;p>The &lt;code>ownedMemberShortName&lt;/code> of an OwningMembership is the &lt;code>shortName&lt;/code> of its &lt;code>ownedMemberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="515796cd-91fc-4485-9cf9-c615c30d2780" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMemberShortName = ownedMemberElement.shortName</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="72a30fad-62a4-424f-ad8f-17ab3ea5575c" general="aac28989-9501-4cdb-a0de-5be645062d3c"/>
        <ownedAttribute xmi:id="c23da327-2bed-4f05-9fa2-9749097c6eca" name="ownedMemberElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" aggregation="composite" isDerived="true" redefinedProperty="ea691af8-fe94-4d70-8a6f-7433b40c3398" subsettedProperty="27fc72b3-57ec-4aa5-a656-1e902c5d768a" association="60438f9a-8635-4e76-8b72-35fa805bcaa3">
          <ownedComment xmi:id="cacb7061-4bdb-4e13-9767-d18fced8ef4e" annotatedElement="c23da327-2bed-4f05-9fa2-9749097c6eca">
            <body>&lt;p>The &lt;code>Element&lt;/code> that becomes an &lt;code>ownedMember&lt;/code> of the &lt;code>membershipOwningNamespace&lt;/code> due to this &lt;code>OwningMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ca6985e8-2392-4e5a-994a-7975673a8375" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ef8fed60-63bb-422e-8b07-525924f2667b" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="46b967c5-57c8-42bd-a2bb-ff9293739afc" name="ownedMemberElementId" visibility="public" isDerived="true" redefinedProperty="867c63ec-3922-4eaa-8c78-47ca3f9d04b8">
          <ownedComment xmi:id="76aafcb2-d46b-45b8-9611-301bc8adab88" annotatedElement="46b967c5-57c8-42bd-a2bb-ff9293739afc">
            <body>&lt;p>The &lt;code>elementId&lt;/code> of the &lt;code>ownedMemberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="cf030abd-08d4-4739-9891-42b0a540203a" name="ownedMemberShortName" visibility="public" isDerived="true" redefinedProperty="d9a35a1e-b312-4566-a773-c1a0897341c8">
          <ownedComment xmi:id="59618dc5-1743-4308-8967-959f4dd81370" annotatedElement="cf030abd-08d4-4739-9891-42b0a540203a">
            <body>&lt;p>The &lt;code>shortName&lt;/code> of the &lt;code>ownedMemberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2553dd08-e728-472e-aff5-a42c5ce689b0" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="52d87dac-dbbb-481d-9504-349e032538a0" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ad6df655-1655-4769-ae6d-ddc1ad53a4bd" name="ownedMemberName" visibility="public" isDerived="true" redefinedProperty="edd22f54-2750-4e4f-bdf3-96edc70b3ca1">
          <ownedComment xmi:id="9d1644f0-b915-4886-8481-eaa794de8e01" annotatedElement="ad6df655-1655-4769-ae6d-ddc1ad53a4bd">
            <body>&lt;p>The &lt;code>name&lt;/code> of the &lt;code>ownedMemberElement&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a1e19cd7-c659-49b7-b4bf-19fa002130f9" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0755438d-d325-4557-84ae-03fe3be6e911" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="f7669291-3f58-4f63-b203-96d18c694943" name="A_importedElement_membershipImport" visibility="public" memberEnd="fc380ea3-2822-4ee3-84e8-c8bd84e1b793 88e5f464-6540-4069-8792-26085bf82083">
        <ownedEnd xmi:id="88e5f464-6540-4069-8792-26085bf82083" name="membershipImport" visibility="public" type="8f66fb8b-4fcf-4857-aa40-e913ab2adeb4" isDerived="true" association="f7669291-3f58-4f63-b203-96d18c694943">
          <ownedComment xmi:id="759022c4-dff0-492d-938f-25cfc1f5fa3b" annotatedElement="88e5f464-6540-4069-8792-26085bf82083">
            <body>&lt;p>An Import with a certain &lt;code>importedElement&lt;/code>.&lt;/p> </body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ca098a45-efd7-4d41-8711-06b02067ff51" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d679a7e0-749a-4990-913c-8e1773e18665" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cce76866-5d17-474a-ac1e-33c73408fb74" name="NamespaceImport" visibility="public">
        <ownedComment xmi:id="11d17b6c-c842-4e9f-ac26-59e0b930ac28" annotatedElement="cce76866-5d17-474a-ac1e-33c73408fb74">
          <body>&lt;p>A &lt;code>NamespaceImport&lt;/code> is an Import that imports &lt;code>Memberships&lt;/code> from its &lt;code>importedNamespace&lt;/code> into the &lt;code>importOwningNamespace&lt;/code>. If &lt;code> isRecursive = false&lt;/code>, then only the visible &lt;code>Memberships&lt;/code> of the &lt;code>importedNamespace&lt;/code> are imported. If &lt;code> isRecursive = true&lt;/code>, then, in addition, &lt;code>Memberships&lt;/code> are recursively imported from any &lt;code>ownedMembers&lt;/code> of the &lt;code>importedNamespace&lt;/code> that are &lt;code>Namespaces&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="4f77764b-a0d4-4131-ae94-f4a33348e1ff" name="deriveNamespaceImportImportedElement" visibility="public" constrainedElement="cce76866-5d17-474a-ac1e-33c73408fb74">
          <ownedComment xmi:id="d1989ff6-bcf0-463e-a536-8327ac284650" annotatedElement="4f77764b-a0d4-4131-ae94-f4a33348e1ff">
            <body>&lt;p>The &lt;code>importedElement&lt;/code> of a &lt;code>NamespaceImport&lt;/code> is its &lt;code>importedNamespace&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="7a78c3af-404f-4a15-a4e7-9eca85039f79" name="" visibility="public">
            <language>OCL2.0</language>
            <body>importedElement = importedNamespace</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="3f4dc8b3-f9af-49f3-8d2a-082f898bac00" general="8f66fb8b-4fcf-4857-aa40-e913ab2adeb4"/>
        <ownedAttribute xmi:id="de500f4c-b51b-4aa3-96a9-5e3343d35538" name="importedNamespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="a8082576-4e9a-4b26-93e2-ba498f9afb6e">
          <ownedComment xmi:id="b8fd6526-e987-4c02-b723-bb66dcd944f1" annotatedElement="de500f4c-b51b-4aa3-96a9-5e3343d35538">
            <body>&lt;p>The &lt;code>Namespace&lt;/code> whose visible &lt;code>Memberships&lt;/code> are imported by this &lt;code>NamespaceImport&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4c81bbbe-570d-4d6e-9f8b-82e56badcde4" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="723134e3-5974-477b-a2a7-d3b594a32ff8" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="a4b3bcf6-4d24-481f-ab52-5e9eb72be0f2" name="importedMemberships" visibility="public" bodyCondition="d00c8312-c2f3-4af3-ad56-dfadc7aa843e" redefinedOperation="8a714679-a2aa-4996-b71e-ed6669a82ceb">
          <ownedComment xmi:id="4375aee1-e00c-424d-ba2d-2036fc331276" annotatedElement="a4b3bcf6-4d24-481f-ab52-5e9eb72be0f2">
            <body>&lt;p>Returns at least the visible &lt;code>Memberships&lt;/code> of the &lt;code>importedNamespace&lt;/code>. If &lt;code>isRecursive = true&lt;/code>, then &lt;code>Memberships&lt;/code> are also recursively imported from any &lt;code>ownedMembers&lt;/code> of the &lt;code>importedNamespace&lt;/code> that are themselves &lt;code>Namespaces&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="d00c8312-c2f3-4af3-ad56-dfadc7aa843e" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="67e59d87-f448-40db-9fac-6dbcb369862f" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if excluded->includes(importedNamespace) then Sequence{}
else importedNamespace.visibleMemberships(excluded, isRecursive, isImportAll)</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="54818989-a082-4cb1-a26a-7436da1393a8" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0008d881-f732-404b-93e4-42d13603c5af" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="009b2d61-099e-4d3e-8ca9-4738bb39c058" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="d82ec75d-0a56-4f63-a57a-ec4da04d0ec8" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="44a78d60-a812-46b7-8434-c7e782c48e69" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3c77125d-7f63-41fc-8584-54a4e877e270" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="baba7968-f24c-4efa-b281-ef09e7042099" name="MembershipImport" visibility="public">
        <ownedComment xmi:id="f70c5c24-8292-445a-acdf-423e0ac974e3" annotatedElement="baba7968-f24c-4efa-b281-ef09e7042099">
          <body>&lt;p>A &lt;code>MembershipImport&lt;/code> is an &lt;code>Import&lt;/code> that imports its &lt;code>importedMembership&lt;/code> into the &lt;code>importOwningNamespace&lt;/code>. If &lt;code>isRecursive = true&lt;/code> and the &lt;code>memberElement&lt;/code> of the &lt;code>importedMembership&lt;/code> is a &lt;code>Namespace&lt;/code>, then the equivalent of a recursive &lt;code>NamespaceImport&lt;/code> is also performed on that &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="686f3157-cb68-4da9-81f5-33e4cc792b85" name="deriveMembershipImportImportedElement" visibility="public" constrainedElement="baba7968-f24c-4efa-b281-ef09e7042099">
          <ownedComment xmi:id="2dafcc31-5a12-47cd-829d-2048e72cdd16" annotatedElement="686f3157-cb68-4da9-81f5-33e4cc792b85">
            <body>&lt;p>The &lt;code>importedElement&lt;/code> of a &lt;code>MembershipImport&lt;/code> is the &lt;code>memberElement&lt;/code> of its &lt;code>importedMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f8c2d593-ba8c-4bc8-8f3c-0c71eaf69a64" name="" visibility="public">
            <language>OCL2.0</language>
            <body>importedElement = importedMembership.memberElement</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="dea024a5-2cc4-402b-ba3c-2c1babceee4e" general="8f66fb8b-4fcf-4857-aa40-e913ab2adeb4"/>
        <ownedAttribute xmi:id="4b923077-4540-4ee8-ac64-9ddba9786c70" name="importedMembership" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="f9509f3b-0c5b-438b-9e2d-37c9c1a35636">
          <ownedComment xmi:id="12b5e951-d447-491f-9b7c-a0bd5ed0d508" annotatedElement="4b923077-4540-4ee8-ac64-9ddba9786c70">
            <body>&lt;p>The &lt;code>Membership&lt;/code> to be imported.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8c28f5e1-b481-4b08-85b8-729c7a430c44" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="96e3226c-f47c-4441-a668-d1d1be94bb4b" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="0ae8c3dd-5c1d-40d7-b362-da6d607639f1" name="importedMemberships" visibility="public" bodyCondition="ba23eea6-4083-42a8-b6c1-c247b258ee0c" redefinedOperation="8a714679-a2aa-4996-b71e-ed6669a82ceb">
          <ownedComment xmi:id="e3dce1b7-f711-442c-aa0c-0e3296f8719c" annotatedElement="0ae8c3dd-5c1d-40d7-b362-da6d607639f1">
            <body>&lt;p>Returns at least the &lt;code>importedMembership&lt;/code>. If &lt;code>isRecursive = true&lt;/code> and the &lt;code>memberElement&lt;/code> of the &lt;code>importedMembership&lt;/code> is a &lt;code>Namespace&lt;/code>, then &lt;code>Memberships&lt;/code> are also recursively imported from that &lt;code>Namespace&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="ba23eea6-4083-42a8-b6c1-c247b258ee0c" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="938047e0-9f2d-493d-ad73-e705ae17c72e" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if not isRecursive or 
   not importedElement.oclIsKindOf(Namespace) or
   excluded->includes(importedElement)
then Sequence{importedMembership}
else importedElement.oclAsType(Namespace).
        visibleMemberships(excluded, true, importAll)->
        prepend(importedMembership)
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="d02481a1-ae53-4ae1-b3a4-176b00018a3a" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b786322e-a0ed-4fd5-bb0c-89b64ae2cdf1" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="965e22ac-2a3d-4adb-808f-0c28c18160ad" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="ebc1a8bf-65c8-4795-898b-22c33ed0018c" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a8cfb330-714b-4925-9bba-09ec7dc9328e" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="05701551-67d3-4519-8d86-88b1c24f3111" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="f9509f3b-0c5b-438b-9e2d-37c9c1a35636" name="A_importedMembership_import" visibility="public" memberEnd="4b923077-4540-4ee8-ac64-9ddba9786c70 09fc10ce-a2a8-4e43-9900-e60019f79fca">
        <ownedEnd xmi:id="09fc10ce-a2a8-4e43-9900-e60019f79fca" name="import" visibility="public" type="baba7968-f24c-4efa-b281-ef09e7042099" redefinedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="f9509f3b-0c5b-438b-9e2d-37c9c1a35636">
          <ownedComment xmi:id="e75f4e25-4747-45c8-b27a-abbae4703e00" annotatedElement="09fc10ce-a2a8-4e43-9900-e60019f79fca">
            <body>&lt;p>A MembershipImport that has a certain &lt;code>importedMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="717aec40-369b-412c-971e-fc9ae58c08c1" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1c313e98-1d75-479e-851b-f5799c8959db" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="179e0853-30f1-4d95-a068-356fc4d4d268" name="Elements" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="4b78ff27-ee29-4275-961c-00731b7ed9bb" name="Element" visibility="public" isAbstract="true">
        <ownedComment xmi:id="36ced79b-6da1-410d-95d8-957ecf014acf" annotatedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <body>&lt;p>An &lt;code>Element&lt;/code> is a constituent of a model that is uniquely identified relative to all other &lt;code>Elements&lt;/code>. It can have &lt;code>Relationships&lt;/code> with other &lt;code>Elements&lt;/code>. Some of these &lt;code>Relationships&lt;/code> might imply ownership of other &lt;code>Elements&lt;/code>, which means that if an &lt;code>Element&lt;/code> is deleted from a model, then so are all the &lt;code>Elements&lt;/code> that it owns.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="a31fb9c0-dbb5-4218-b983-8d289510d704" name="deriveElementOwnedElement" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="cb5ec744-4880-4a68-abf9-ec25a52f4295" annotatedElement="a31fb9c0-dbb5-4218-b983-8d289510d704">
            <body>&lt;p>The &lt;code>ownedElements&lt;/code> of an &lt;code>Element&lt;/code> are the &lt;code>ownedRelatedElements&lt;/code> of its &lt;code>ownedRelationships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8f986686-6308-4ab4-9e2d-74b1210c0e92" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedElement = ownedRelationship.ownedRelatedElement</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="7548f08b-0355-477e-8a3b-04bc942f7a8b" name="deriveElementOwner" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="c1ea4a43-66b2-41a6-8526-6614a2d0135b" annotatedElement="7548f08b-0355-477e-8a3b-04bc942f7a8b">
            <body>&lt;p>The &lt;code>owner&lt;/code> of an &lt;code>Element&lt;/code> is the &lt;code>owningRelatedElement&lt;/code> of its &lt;code>owningRelationship&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="4d451f2d-afb3-4303-902e-39228717f5bd" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owner = owningRelationship.owningRelatedElement</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="685d38cc-5246-4b33-9e5d-3c0419c5a785" name="deriveElementQualifiedName" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="87bf5964-f91d-4de8-b63a-790c9ffe8e51" annotatedElement="685d38cc-5246-4b33-9e5d-3c0419c5a785">
            <body>&lt;p>If this &lt;code>Element&lt;/code> does not have an &lt;code>owningNamespace&lt;/code>, then its &lt;code>qualifiedName&lt;/code> is null. If the &lt;code>owningNamespace&lt;/code> of this Element is a root &lt;code>Namespace&lt;/code>, then the &lt;code>qualifiedName&lt;/code> of the &lt;code>Element&lt;/code> is the escaped name of the &lt;code>Element&lt;/code> (if any). If the &lt;code>owningNamespace&lt;/code> is non-null but not a root &lt;code>Namespace&lt;/code>, then the &lt;code>qualifiedName&lt;/code> of this &lt;code>Element&lt;/code> is constructed from the &lt;code>qualifiedName&lt;/code> of the &lt;code>owningNamespace&lt;/code> and the escaped name of the &lt;code>Element&lt;/code>, unless the &lt;code>qualifiedName&lt;/code> of the &lt;code>owningNamespace&lt;/code> is null or the escaped name is null, in which case the &lt;code>qualifiedName&lt;/code> of this &lt;code>Element&lt;/code> is also null.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="c376eef3-dbe6-4380-8a42-330ae76bc882" name="" visibility="public">
            <language>OCL2.0</language>
            <body>qualifiedName =
    if owningNamespace = null then null
    else if owningNamespace.owner = null then escapedName()
    else if owningNamespace.qualifiedName = null or 
            escapedName() = null then null
    else owningNamespace.qualifiedName + '::' + escapedName()
    endif endif endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="26c99020-b943-4cbe-bf9f-fcf4e2903861" name="deriveElementDocumentation" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="7d8996b6-9d41-4728-8675-2e8cc3eb0b2d" annotatedElement="26c99020-b943-4cbe-bf9f-fcf4e2903861">
            <body>&lt;p>The &lt;code>documentation&lt;/code> of an &lt;code>Element&lt;/code> is its &lt;code>ownedElements&lt;/code> that are &lt;code>Documentation&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ef8682b7-a722-4a24-a036-7c871965b682" name="" visibility="public">
            <language>OCL2.0</language>
            <body>documentation = ownedElement->selectByKind(Documentation)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="7cdf768c-c2ef-4998-94ad-65d6c7e856ab" name="deriveElementOwnedAnnotation" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="d9daff51-da08-443a-832a-91c260b9847d" annotatedElement="7cdf768c-c2ef-4998-94ad-65d6c7e856ab">
            <body>&lt;p>The &lt;code>ownedAnnotations&lt;/code> of an &lt;code>Element&lt;/code> are its &lt;code>ownedRelationships&lt;/code> that are &lt;code>Annotations&lt;/code>, for which the &lt;code>Element&lt;/code> is the &lt;code>annotatedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9d57ddfa-b8ca-4ecf-8ca0-c138dfdda45f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedAnnotation = ownedRelationship->
    selectByKind(Annotation)->
    select(a | a.annotatedElement = self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="570e4bf8-c9ea-498b-b822-4b63ea3ef504" name="deriveElementName" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="109913d7-1006-4f7f-9dc1-8e8496dec85f" annotatedElement="570e4bf8-c9ea-498b-b822-4b63ea3ef504">
            <body>&lt;p>The &lt;code>name&lt;/code> of an &lt;code>Element&lt;/code> is given by the result of the &lt;code>effectiveName()&lt;/code> operation.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="c0204b55-f184-4016-a68b-4019c147e435" name="" visibility="public">
            <language>OCL2.0</language>
            <body>name = effectiveName()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="de3c9c6a-821b-4059-9ae1-70f1e18fdf49" name="validateElementIsImpliedIncluded" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="8b8340dd-bb5f-48cb-a3ca-d8b6fbb1e185" annotatedElement="de3c9c6a-821b-4059-9ae1-70f1e18fdf49">
            <body>&lt;p>If an &lt;code>Element&lt;/code> has any &lt;code>ownedRelationships&lt;/code> for which &lt;code>isImplied = true&lt;/code>, then the &lt;code>Element&lt;/code> must also have &lt;code>isImpliedIncluded = true&lt;/code>. (Note that an &lt;code>Element&lt;/code> &lt;em>can&lt;/em> have &lt;code>isImplied = true&lt;/code> even if no &lt;code>ownedRelationships&lt;/code> have &lt;code>isImplied = true&lt;/code>, indicating the &lt;code>Element&lt;/code> simply has no implied &lt;code>Relationships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="01f19168-67f0-43e6-a672-00db555f4899" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedRelationship->exists(isImplied) implies isImpliedIncluded</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d0629f6e-09f9-4144-91f7-4dc1f6795afc" name="deriveElementIsLibraryElement" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="00a354b9-f345-41bc-9ec6-8c1cc32b0638" annotatedElement="d0629f6e-09f9-4144-91f7-4dc1f6795afc">
            <body>&lt;p>An &lt;code>Element&lt;/code> &lt;code>isLibraryElement&lt;/code> if &lt;code>libraryNamespace()&lt;/code> is not null.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ac85d884-b274-47f4-89cd-2901e74f2d3a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isLibraryElement = libraryNamespace() &lt;> null
</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="1f4674e0-8b49-4f52-9b0d-55b00f49e05f" name="deriveElementShortName" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="49063f69-f3d8-49cf-ac9e-07938a93dbdf" annotatedElement="1f4674e0-8b49-4f52-9b0d-55b00f49e05f">
            <body>&lt;p>The &lt;code>shortName&lt;/code> of an &lt;code>Element&lt;/code> is given by the result of the &lt;code>effectiveShortName()&lt;/code> operation.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="0c14bc55-e3b3-4ceb-a499-775ace4ed69b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>shortName = effectiveShortName()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="9c37b059-a979-4e5b-af46-523faa927465" name="deriveOwningNamespace" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="b129b7aa-b2ef-4453-abdd-e43c52dfa43b" annotatedElement="9c37b059-a979-4e5b-af46-523faa927465">
            <body>&lt;p>The &lt;code>owningNamespace&lt;/code> of an &lt;code>Element&lt;/code> is the &lt;code>membershipOwningNamspace&lt;/code> of its &lt;code>owningMembership&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6b869060-aca8-4aa3-91c3-43075593a813" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningNamespace =
    if owningMembership = null then null
    else owningMembership.membershipOwningNamespace
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="b8c99a41-2719-4bb4-9367-87966efd9d35" name="deriveElementTextualRepresentation" visibility="public" constrainedElement="4b78ff27-ee29-4275-961c-00731b7ed9bb">
          <ownedComment xmi:id="2153273a-f650-4421-9c3f-092aeee04ff0" annotatedElement="b8c99a41-2719-4bb4-9367-87966efd9d35">
            <body>&lt;p>The &lt;code>textualRepresentations&lt;/code> of an &lt;code>Element&lt;/code> are its &lt;code>ownedElements&lt;/code> that are &lt;code>TextualRepresentations&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d1305c9f-a09f-4286-bcb7-b3b90c656d7c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>textualRepresentation = ownedElement->selectByKind(TextualRepresentation)</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:id="8763ebb8-6a3d-45b3-b628-966dc39fbb40" name="owningMembership" visibility="public" type="0ac69c8b-1bab-45e9-82df-d840307444f7" isDerived="true" subsettedProperty="0c64cbc0-cb58-4982-b1ac-d09f6ac8d497 02e7bbf3-5c7d-4606-909b-42e10233ebca" association="60438f9a-8635-4e76-8b72-35fa805bcaa3">
          <ownedComment xmi:id="9c8a087d-ff4d-4731-8a8d-c1e0ae632c05" annotatedElement="8763ebb8-6a3d-45b3-b628-966dc39fbb40">
            <body>&lt;p>The &lt;code>owningRelationship&lt;/code> of this &lt;code>Element&lt;/code>, if that &lt;code>Relationship&lt;/code> is a &lt;code>Membership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c003b0f0-7081-4b9f-aac6-0812af5af266" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b496f0d5-d88b-469f-9df2-97f2065eec43" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="0c64cbc0-cb58-4982-b1ac-d09f6ac8d497" name="owningRelationship" visibility="public" type="f797201d-5a0b-4acf-a63d-c4cf276073d6" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="c356916b-ef49-4f18-b2b4-282f2097699d">
          <ownedComment xmi:id="bc8a14bc-c01e-48a6-8f44-0e947e05830e" annotatedElement="0c64cbc0-cb58-4982-b1ac-d09f6ac8d497">
            <body>&lt;p>The Relationship for which this Element is an &lt;tt>ownedRelatedElement&lt;/tt>, if any.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e1825669-b342-4244-ab71-314fbf57f4f5" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1a3cbf6d-331f-4075-a36c-1eeb57a5d2e3" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="934985ee-d247-42fc-8106-101a5b3ebacb" name="owningNamespace" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" isDerived="true" subsettedProperty="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2" association="aabecc48-e2a8-4563-b984-37f093695d4c">
          <ownedComment xmi:id="e1f40ba3-cf89-4cb1-8a9b-98091d587886" annotatedElement="934985ee-d247-42fc-8106-101a5b3ebacb">
            <body>&lt;p>The &lt;code>Namespace&lt;/code> that owns this &lt;code>Element&lt;/code>, which is the &lt;code>membershipOwningNamespace&lt;/code> of the &lt;code>owningMembership&lt;/code> of this &lt;code>Element&lt;/code>, if any.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="130a690b-4a06-4280-8c69-c45d89bc52a3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d8932497-c4a7-4fa0-aeb9-dda5f1c1d5de" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="0291c98d-3248-468c-8b9b-dab7d10284a6" name="elementId" visibility="public" isID="true">
          <ownedComment xmi:id="d6711bfe-1662-45a8-812a-d1536b2b1c30" annotatedElement="0291c98d-3248-468c-8b9b-dab7d10284a6">
            <body>&lt;p>The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" name="ownedRelationship" visibility="public" type="f797201d-5a0b-4acf-a63d-c4cf276073d6" isOrdered="true" aggregation="composite" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="e76a8b3e-8e44-41fa-b840-6b689233d382">
          <ownedComment xmi:id="58027396-d16f-4e1c-84fe-f38214d68187" annotatedElement="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9">
            <body>&lt;p>The Relationships for which this Element is the &lt;tt>owningRelatedElement&lt;/tt>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="95afe96a-51ba-4a8b-abf6-bd732ad65631" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1fb771a1-7a69-4a28-a034-475d992e45f3" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="62034bc0-cc6e-41a0-b2b7-09f6bb604c5e" name="owner" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isDerived="true" association="39336dc2-b919-415f-8552-9cb1326049b9">
          <ownedComment xmi:id="fd7e977b-b706-4bf3-bf7b-df022f0d166a" annotatedElement="62034bc0-cc6e-41a0-b2b7-09f6bb604c5e">
            <body>&lt;p>The owner of this Element, derived as the &lt;code>owningRelatedElement&lt;/code> of the &lt;code>owningRelationship&lt;/code> of this Element, if any.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="38883fdb-85f5-4d7f-9d1d-e2b9cf875556" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c555ac75-64ea-4ec5-81c8-07065dab01c0" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="953bdc5d-4008-4e40-8e30-c760f7956254" name="ownedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isDerived="true" association="39336dc2-b919-415f-8552-9cb1326049b9">
          <ownedComment xmi:id="66931645-3dd5-4201-9456-3431172c3986" annotatedElement="953bdc5d-4008-4e40-8e30-c760f7956254">
            <body>&lt;p>The Elements owned by this Element, derived as the &lt;tt>ownedRelatedElements&lt;/tt> of the &lt;tt>ownedRelationships&lt;/tt> of this Element.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="84a7ebc3-7fcf-4230-8f2d-27b87442aa6a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5464bf83-88fd-43e4-b97b-4ec9189fec05" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ac1fd098-f8ee-4db3-a7a6-5148e50e1ca7" name="documentation" visibility="public" type="711f09e2-6f0c-4691-9ca4-da1dc268cc8f" isOrdered="true" isDerived="true" subsettedProperty="953bdc5d-4008-4e40-8e30-c760f7956254 79363c3a-95cb-4931-b243-549e858d6d77" association="72ce8ab7-ea8f-45ce-8699-c4f7381cb07b">
          <ownedComment xmi:id="3d5e197a-34b1-42ea-adb2-feb04e7d2874" annotatedElement="ac1fd098-f8ee-4db3-a7a6-5148e50e1ca7">
            <body>&lt;p>The Documentation owned by this Element.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c764883f-9d53-48ad-93dc-be2bcaa7de18" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8b270072-6bae-4d45-b3c8-a73a87f6d1c5" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="8cd0b6e4-8a21-48e4-bb7c-4c249a352d01" name="ownedAnnotation" visibility="public" type="eb2bcc09-d82c-4252-9ad4-5959443e0aee" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 4ad2615b-7b77-4084-bd3e-bd0f31cc54e1" association="186c0ea9-87c3-458b-bb07-73633b8ab2fc">
          <ownedComment xmi:id="026361b6-f662-4937-9304-63bf1f895d6d" annotatedElement="8cd0b6e4-8a21-48e4-bb7c-4c249a352d01">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Element&lt;/code> that are &lt;code>Annotations&lt;/code>, for which this &lt;code>Element&lt;/code> is the &lt;code>annotatedElement&lt;/code>.&lt;/code></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ae189bb8-f4ff-4d1f-9a97-b92557c67133" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ff9a3838-b26a-43c0-b46b-854d9d5248eb" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b8f93a3a-579d-4404-a560-2d9e3d40ff45" name="textualRepresentation" visibility="public" type="c10e5da4-a3e6-425d-b09b-2c5b1deebf36" isOrdered="true" isDerived="true" subsettedProperty="953bdc5d-4008-4e40-8e30-c760f7956254 79363c3a-95cb-4931-b243-549e858d6d77" association="bf14fcaa-2d00-4f90-b666-1c0ed4ff4c8c">
          <ownedComment xmi:id="043fc1c4-3755-49ee-8292-a1b31bc1828f" annotatedElement="b8f93a3a-579d-4404-a560-2d9e3d40ff45">
            <body>&lt;p>The &lt;code>TextualRepresentations&lt;/code> that annotate this &lt;code>Element&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ec7418ec-3ab8-4c70-b9b2-fa0672302110" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e5a81450-700a-442e-96c7-8086275531f3" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="dc13c4bf-26f8-44d3-b7e1-42e3c0d6508c" name="aliasIds" visibility="public" isOrdered="true">
          <ownedComment xmi:id="afccfd43-829b-4cbc-bfd7-ed609a40da1b" annotatedElement="dc13c4bf-26f8-44d3-b7e1-42e3c0d6508c">
            <body>&lt;p>Various alternative identifiers for this Element. Generally, these will be set by tools.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="83207f79-bf51-4d58-bef1-49395dcc9a72" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f8dc4aaa-6855-4a46-9d38-72de540b66e1" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="95530b90-b70a-4b11-b334-1a5025d31570" name="declaredShortName" visibility="public">
          <ownedComment xmi:id="ad4b95b8-b8da-467e-aedb-e02e2fd5e7de" annotatedElement="95530b90-b70a-4b11-b334-1a5025d31570">
            <body>&lt;p>An optional alternative name for the &lt;code>Element&lt;/code> that is intended to be shorter or in some way more succinct than its primary &lt;code>name&lt;/code>. It may act as a modeler-specified identifier for the &lt;code>Element&lt;/code>, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context.&lt;/p> 
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="80ca81ba-ecf0-4ff5-bae5-80f445fcd824" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="bc228da5-485e-4462-94ef-9f37e3954566" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="586e6993-dac0-4277-91ef-7a4c9788f61c" name="declaredName" visibility="public">
          <ownedComment xmi:id="4958482f-aaf0-41bf-b86c-1d59a720282d" annotatedElement="586e6993-dac0-4277-91ef-7a4c9788f61c">
            <body>&lt;p>The declared name of this &lt;code>Element&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d5f65ad9-a675-4f33-96ae-d554cffc7705" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="693b7aa1-2a69-4e47-af9e-c8f3b73d2259" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="64f637ef-310f-4398-8601-a38a16591e10" name="shortName" visibility="public" isDerived="true">
          <ownedComment xmi:id="95ec948a-e00b-4067-ad0c-dfdb3466a273" annotatedElement="64f637ef-310f-4398-8601-a38a16591e10">
            <body>&lt;p>The short name to be used for this &lt;code>Element&lt;/code> during name resolution within its &lt;code>owningNamespace&lt;/code>. This is derived using the &lt;code>effectiveShortName()&lt;/code> operation. By default, it is the same as the &lt;code>declaredShortName&lt;/code>, but this is overridden for certain kinds of &lt;code>Elements&lt;/code> to compute a &lt;code>shortName&lt;/code> even when the &lt;code>declaredName&lt;/code> is null.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="710f479c-55a7-4002-a6d5-8e296f6c1d3d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="36de8e59-edfc-4f53-8827-200de9ca6661" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="eefdd282-f78d-4133-9875-9017a9e584e1" name="name" visibility="public" isDerived="true">
          <ownedComment xmi:id="8f4d0e7e-45af-4403-9d3a-d4cc9fc8ecf0" annotatedElement="eefdd282-f78d-4133-9875-9017a9e584e1">
            <body>&lt;p>The name to be used for this &lt;code>Element&lt;/code> during name resolution within its &lt;code>owningNamespace&lt;/code>. This is derived using the &lt;code>effectiveName()&lt;/code> operation. By default, it is the same as the &lt;code>declaredName&lt;/code>, but this is overridden for certain kinds of &lt;code>Elements&lt;/code> to compute a &lt;code>name&lt;/code> even when the &lt;code>declaredName&lt;/code> is null.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9e437f4f-4bad-423e-a15b-e1179d952752" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="beb42d9d-d4f4-4a82-a7be-740e3cdd3e82" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e6d23414-9ac3-4a5c-9546-250118c85114" name="qualifiedName" visibility="public" isDerived="true">
          <ownedComment xmi:id="915e4bce-e22e-48ba-9ec6-e8f13393c2dd" annotatedElement="e6d23414-9ac3-4a5c-9546-250118c85114">
            <body>&lt;p>The full ownership-qualified name of this &lt;code>Element&lt;/code>, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The &lt;code>qualifiedName&lt;/code> is null if this &lt;code>Element&lt;/code> has no &lt;code>owningNamespace&lt;/code> or if there is not a complete ownership chain of named &lt;code>Namespaces&lt;/code> from a root &lt;code>Namespace&lt;/code> to this &lt;code>Element&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="10473135-2b05-43b8-abba-bd4c782010f7" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cec30480-e646-4070-99c1-0e129cea7c74" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="a1b3b470-7e5e-41e7-9916-cead25ded142" name="isImpliedIncluded" visibility="public">
          <ownedComment xmi:id="71f232fe-925f-468b-9f9e-7aab7959a4eb" annotatedElement="a1b3b470-7e5e-41e7-9916-cead25ded142">
            <body>&lt;p>Whether all necessary implied Relationships have been included in the &lt;code>ownedRelationships&lt;/code> of this Element. This property may be true, even if there are not actually any &lt;code>ownedRelationships&lt;/code> with &lt;code>isImplied = true&lt;/code>, meaning that no such Relationships are actually implied for this Element. However, if it is false, then &lt;code>ownedRelationships&lt;/code> may &lt;em>not&lt;/em> contain any implied Relationships. That is, either &lt;em>all&lt;/em> required implied Relationships must be included, or none of them.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="19817387-d018-4c18-8531-16528fb19f45" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="0df33c44-6220-4d7e-aa32-b4ff84cfb627" name="isLibraryElement" visibility="public" isDerived="true">
          <ownedComment xmi:id="279df415-a4cc-42e4-be30-29db35cafc41" annotatedElement="0df33c44-6220-4d7e-aa32-b4ff84cfb627">
            <body>&lt;p>Whether this Element is contained in the ownership tree of a library model.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
        </ownedAttribute>
        <ownedOperation xmi:id="990357fc-7a1c-42fb-ae3f-5f09203a9da4" name="escapedName" visibility="public">
          <ownedComment xmi:id="c495ab13-3748-4d8b-8573-4915099cb9dc" annotatedElement="990357fc-7a1c-42fb-ae3f-5f09203a9da4">
            <body>&lt;p>Return &lt;code>name&lt;/code>, if that is not null, otherwise the &lt;code>shortName&lt;/code>, if that is not null, otherwise null. If the returned value is non-null, it is returned as-is if it has the form of a basic name, or, otherwise, represented as a restricted name according to the lexical structure of the KerML textual notation (i.e., surrounded by single quote characters and with special characters escaped).&lt;/p></body>
          </ownedComment>
          <ownedParameter xmi:id="1354d59d-f195-4835-bbeb-af759c8b7d4f" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d5b849d0-02cc-4cbc-9573-8c2921fe315c" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3c99a13e-1550-4028-ada5-d4b88a692ca7" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="7d531104-d30d-4e41-8c70-e8877dddb956" name="effectiveShortName" visibility="public" bodyCondition="59ac5654-f6dd-42b3-8d77-62f1612817a6">
          <ownedComment xmi:id="0f704e43-5872-4402-950e-d84ab5f6fd60" annotatedElement="7d531104-d30d-4e41-8c70-e8877dddb956">
            <body>&lt;p>Return an effective &lt;code>shortName&lt;/code> for this &lt;code>Element&lt;/code>. By default this is the same as its &lt;code>declaredShortName&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="59ac5654-f6dd-42b3-8d77-62f1612817a6" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="08c541d6-2574-400f-a9a4-0123d15c592c" name="" visibility="public">
              <language>OCL2.0</language>
              <body>declaredShortName</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="92fa12d5-de5a-466c-bfb1-b4c643fd1aef" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0d2f9af9-1900-4c10-9bd9-c35804b7de71" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d6c47c8f-f696-4211-af98-79e967460edc" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="c6dbe7ea-4c15-4609-bcb9-f18d6e970b79" name="effectiveName" visibility="public" bodyCondition="f440e89e-2015-41f4-9941-edfcf999febb">
          <ownedComment xmi:id="c7274072-5860-4fe9-b816-88d2d582a192" annotatedElement="c6dbe7ea-4c15-4609-bcb9-f18d6e970b79">
            <body>&lt;p>Return an effective &lt;code>name&lt;/code> for this &lt;code>Element&lt;/code>. By default this is the same as its &lt;code>declaredName&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="f440e89e-2015-41f4-9941-edfcf999febb" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="6775da1d-6fb9-40d2-bde9-6853d3d52e0b" name="" visibility="public">
              <language>OCL2.0</language>
              <body>declaredName</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="f80600b1-34d9-4e87-a798-bdb3b01f0468" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ef22f15f-dfe7-40cb-bc70-da8aae51399a" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="432eb402-1be6-40dc-93a4-a553c88a6436" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="cb9361b7-9f79-425c-bc2e-46776cfd44f7" name="libraryNamespace" visibility="public" bodyCondition="a831dd8a-5f23-4e88-8213-fe4f058fed1f">
          <ownedComment xmi:id="aa27bd3a-c335-4a71-abc1-4e385f8d144f" annotatedElement="cb9361b7-9f79-425c-bc2e-46776cfd44f7">
            <body>&lt;p>By default, return the library Namespace of the &lt;code>owningRelationship&lt;/code> of this Element, if it has one.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="a831dd8a-5f23-4e88-8213-fe4f058fed1f" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="78755a9d-ffcd-4d9e-8311-d67e274b1a56" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if owningRelationship &lt;> null then owningRelationship.libraryNamespace()
else null endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="7d22214d-46bb-4ca3-bd0b-38a0f240f1bb" name="" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="883b3b81-a388-4ec4-b999-cc5b5119ef50" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ac9af0b2-7e28-4d5d-bf7c-7460c312d865" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="f797201d-5a0b-4acf-a63d-c4cf276073d6" name="Relationship" visibility="public" isAbstract="true">
        <ownedComment xmi:id="d9a03f3e-a572-4ee6-ae72-2e83979d8531" annotatedElement="f797201d-5a0b-4acf-a63d-c4cf276073d6">
          <body>&lt;p>A &lt;code>Relationship&lt;/code> is an &lt;code>Element&lt;/code> that relates other &lt;code>Element&lt;/code>. Some of its &lt;code>relatedElements&lt;/code> may be owned, in which case those &lt;code>ownedRelatedElements&lt;/code> will be deleted from a model if their &lt;code>owningRelationship&lt;/code> is. A &lt;code>Relationship&lt;/code> may also be owned by another &lt;code>Element&lt;/code>, in which case the &lt;code>ownedRelatedElements&lt;/code> of the &lt;code>Relationship&lt;/code> are also considered to be transitively owned by the &lt;code>owningRelatedElement&lt;/code> of the &lt;code>Relationship&lt;/code>.&lt;/p>

&lt;p>The &lt;code>relatedElements&lt;/code> of a &lt;code>Relationship&lt;/code> are divided into &lt;code>source&lt;/code> and &lt;code>target&lt;/code> &lt;code>Elements&lt;/code>. The &lt;code>Relationship&lt;/code> is considered to be directed from the &lt;code>source&lt;/code> to the &lt;code>target&lt;/code> &lt;code>Elements&lt;/code>. An undirected &lt;code>Relationship&lt;/code> may have either all &lt;code>source&lt;/code> or all &lt;code>target&lt;/code> &lt;code>Elements&lt;/code>.&lt;/p>

&lt;p>A &amp;quot;relationship &lt;code>Element&lt;/code>&amp;quot; in the abstract syntax is generically any &lt;code>Element&lt;/code> that is an instance of either &lt;code>Relationship&lt;/code> or a direct or indirect specialization of &lt;code>Relationship&lt;/code>. Any other kind of &lt;code>Element&lt;/code> is a &amp;quot;non-relationship &lt;code>Element&lt;/code>&amp;quot;. It is a convention of that non-relationship &lt;code>Elements&lt;/code> are &lt;em>only&lt;/em> related via reified relationship &lt;code>Elements&lt;/code>. Any meta-associations directly between non-relationship &lt;code>Elements&lt;/code> must be derived from underlying reified &lt;code>Relationship&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="7f2dbbbe-f8fb-48d4-a40a-7f01ae9c1b6a" name="deriveRelationshipRelatedElement" visibility="public" constrainedElement="f797201d-5a0b-4acf-a63d-c4cf276073d6">
          <ownedComment xmi:id="b81afc87-b613-4602-8be3-226f2944aae4" annotatedElement="7f2dbbbe-f8fb-48d4-a40a-7f01ae9c1b6a">
            <body>&lt;p>The &lt;code>relatedElements&lt;/code> of a &lt;code>Relationship&lt;/code> consist of all of its &lt;code>source&lt;/code> &lt;code>Elements&lt;/code> followed by all of its &lt;code>target&lt;/code> &lt;code>Elements&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="537c1d38-e5a7-45c2-8041-51bab8370988" name="" visibility="public">
            <language>OCL2.0</language>
            <body>relatedElement = source->union(target)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="621ef065-ddd1-43c1-81ff-b5e2192b98be" general="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
        <ownedAttribute xmi:id="0d55f45c-0032-4618-9131-61ed58c3b8e2" name="relatedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" isDerived="true" association="c3b981da-8e47-40ca-a805-4949d06af0d5">
          <ownedComment xmi:id="c0881dc2-4099-4c51-bd81-effdcf04ef95" annotatedElement="0d55f45c-0032-4618-9131-61ed58c3b8e2">
            <body>&lt;p>The Elements that are related by this Relationship, derived as the union of the &lt;code>source&lt;/code> and &lt;code>target&lt;/code> Elements of the Relationship.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2000def0-86e7-466c-bd62-1ffffee0d0ff" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="eb1df8fb-0270-4e26-9e90-d53b365cb0a7" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="4c7374f5-78f8-42ab-ae42-672ad9c80902" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" subsettedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="74b00fc8-af41-42df-ac3c-1d2ea868508c">
          <ownedComment xmi:id="3d0eca45-d4ff-430c-994e-1797ed987c95" annotatedElement="4c7374f5-78f8-42ab-ae42-672ad9c80902">
            <body>&lt;p>The &lt;code>relatedElements&lt;/code> to which this Relationship is considered to be directed.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="fd49bd8e-0662-4471-a501-6bf0d76ed20d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="aaa91767-301d-4691-a99a-415cb8d09f92" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="cd83f43d-3885-4b41-8f03-f02255e6a5da" name="source" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" subsettedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="44a8464b-480f-41d3-81d9-c46a4e756aa3">
          <ownedComment xmi:id="cd6695f6-2053-4171-9f06-5d9a02de6434" annotatedElement="cd83f43d-3885-4b41-8f03-f02255e6a5da">
            <body>&lt;p>The &lt;code>relatedElements&lt;/c ode> from which this Relationship is considered to be directed.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a8cce2f9-b4ea-49ad-af03-7982573f97e4" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="18c39ce3-2f2a-435e-8060-a316302805f2" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="c81d146c-d738-40a0-ab80-8526beac3673" name="owningRelatedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" subsettedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="e76a8b3e-8e44-41fa-b840-6b689233d382">
          <ownedComment xmi:id="52f4362f-c1e1-4e7a-aa2d-80df66e94df1" annotatedElement="c81d146c-d738-40a0-ab80-8526beac3673">
            <body>&lt;p>The &lt;tt>relatedElement&lt;/tt> of this Relationship that owns the Relationship, if any.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0e499108-4adb-4afc-a08f-ac81f0603859" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="77b4ed2f-b3f0-4a06-9ddb-6e3714646347" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="27fc72b3-57ec-4aa5-a656-1e902c5d768a" name="ownedRelatedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" aggregation="composite" subsettedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="c356916b-ef49-4f18-b2b4-282f2097699d">
          <ownedComment xmi:id="c5dc4ca3-de13-4b0c-b095-e3c9adac4593" annotatedElement="27fc72b3-57ec-4aa5-a656-1e902c5d768a">
            <body>&lt;p>The &lt;tt>relatedElements&lt;/tt> of this Relationship that are owned by the Relationship.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="773d7813-2d0f-4a4a-af18-d6c85c31b0dd" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="6ebfba02-dc34-41d7-b925-805ca2e41ef5" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="75499eaa-ac5b-429c-ba15-f18886cd2817" name="isImplied" visibility="public">
          <ownedComment xmi:id="fe6d2330-8870-4822-bdf9-298858603f93" annotatedElement="75499eaa-ac5b-429c-ba15-f18886cd2817">
            <body>&lt;p>Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="4d3b2ed8-f3e6-4070-bb72-98ae4c7c3e43" name="" visibility="public"/>
        </ownedAttribute>
        <ownedOperation xmi:id="82859d61-812a-4228-a048-abf93a05a4a3" name="libraryNamespace" visibility="public" bodyCondition="deed75a6-47e0-4af7-80f3-c09c350030e1" redefinedOperation="cb9361b7-9f79-425c-bc2e-46776cfd44f7">
          <ownedComment xmi:id="f927e44c-a0ca-4fda-9c2c-6235fd738ebb" annotatedElement="82859d61-812a-4228-a048-abf93a05a4a3">
            <body>&lt;p>Return whether this Relationship has either an &lt;code>owningRelatedElement&lt;/code> or &lt;code>owningRelationship&lt;/code> that is a library element.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="deed75a6-47e0-4af7-80f3-c09c350030e1" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="7ba2ae64-46c8-4069-aa06-6cdc5afc6229" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if owningRelatedElement &lt;> null then owningRelatedElement.libraryNamespace()
else if owningRelationship &lt;> null then owningRelationship.libraryNamespace() 
else null endif endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="3d9d282a-dcd9-48a5-a96d-ae8236b5a519" name="" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="86324c97-2883-4229-b2e6-cf5ced0d5b39" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="71895894-5d84-454d-bed3-0e888d8f1066" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="74b00fc8-af41-42df-ac3c-1d2ea868508c" name="A_target_targetRelationship" visibility="public" memberEnd="4c7374f5-78f8-42ab-ae42-672ad9c80902 ba7252a1-ad71-4f1b-9661-e020d460abd2">
        <ownedEnd xmi:id="ba7252a1-ad71-4f1b-9661-e020d460abd2" name="targetRelationship" visibility="public" type="f797201d-5a0b-4acf-a63d-c4cf276073d6" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="74b00fc8-af41-42df-ac3c-1d2ea868508c">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3d0867cb-0570-4df1-89db-fbd76dae61d2" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2f72a288-243a-4662-8fd3-9ac0ada59fe9" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="c356916b-ef49-4f18-b2b4-282f2097699d" name="A_ownedRelatedElement_owningRelationship" visibility="public" memberEnd="27fc72b3-57ec-4aa5-a656-1e902c5d768a 0c64cbc0-cb58-4982-b1ac-d09f6ac8d497"/>
      <packagedElement xmi:type="uml:Association" xmi:id="c3b981da-8e47-40ca-a805-4949d06af0d5" name="A_relatedElement_relationship" visibility="public" memberEnd="0d55f45c-0032-4618-9131-61ed58c3b8e2 3e98010e-1179-4758-8c95-8354c83f7fea">
        <ownedEnd xmi:id="3e98010e-1179-4758-8c95-8354c83f7fea" name="relationship" visibility="public" type="f797201d-5a0b-4acf-a63d-c4cf276073d6" isUnique="false" isDerived="true" isDerivedUnion="true" association="c3b981da-8e47-40ca-a805-4949d06af0d5">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9a83d7f3-9825-472e-942f-8e677814d32a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8c6bd4fb-eb23-4511-ae32-3b215f45fff0" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="44a8464b-480f-41d3-81d9-c46a4e756aa3" name="A_source_sourceRelationship" visibility="public" memberEnd="cd83f43d-3885-4b41-8f03-f02255e6a5da fd194ed0-9544-4215-b3df-64c5423ec874">
        <ownedEnd xmi:id="fd194ed0-9544-4215-b3df-64c5423ec874" name="sourceRelationship" visibility="public" type="f797201d-5a0b-4acf-a63d-c4cf276073d6" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="44a8464b-480f-41d3-81d9-c46a4e756aa3">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="43aef000-6189-48f9-89dd-fa1cb7719114" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="46413b87-7fe6-410a-9396-11219e29fc3b" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="e76a8b3e-8e44-41fa-b840-6b689233d382" name="A_ownedRelationship_owningRelatedElement" visibility="public" memberEnd="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 c81d146c-d738-40a0-ab80-8526beac3673"/>
      <packagedElement xmi:type="uml:Association" xmi:id="39336dc2-b919-415f-8552-9cb1326049b9" name="A_owner_ownedElement" visibility="public" memberEnd="62034bc0-cc6e-41a0-b2b7-09f6bb604c5e 953bdc5d-4008-4e40-8e30-c760f7956254"/>
      <packagedElement xmi:type="uml:Association" xmi:id="bf14fcaa-2d00-4f90-b666-1c0ed4ff4c8c" name="A_textualRepresentation_representedElement" visibility="public" memberEnd="b8f93a3a-579d-4404-a560-2d9e3d40ff45 94b41a6b-aa1f-4950-9fb3-34a3a8c7ce79"/>
      <packagedElement xmi:type="uml:Association" xmi:id="72ce8ab7-ea8f-45ce-8699-c4f7381cb07b" name="A_documentation_documentedElement" visibility="public" memberEnd="ac1fd098-f8ee-4db3-a7a6-5148e50e1ca7 583a6860-b6e7-432d-bfcd-eabf9dc3e675"/>
      <packagedElement xmi:type="uml:Association" xmi:id="186c0ea9-87c3-458b-bb07-73633b8ab2fc" name="A_ownedAnnotation_owningAnnotatedElement" visibility="public" memberEnd="8cd0b6e4-8a21-48e4-bb7c-4c249a352d01 3289771d-4de4-4921-b95b-d7d8aacf20f2"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="4bfede2f-d455-438f-a1c6-88445315e47e" name="Dependencies" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="345c4407-6df4-481b-b103-01f51cba97b7" name="Dependency" visibility="public">
        <ownedComment xmi:id="325f5db4-f3b7-4f6a-aac9-bb1a0416b4a2" annotatedElement="345c4407-6df4-481b-b103-01f51cba97b7">
          <body>&lt;p>A &lt;code>Dependency&lt;/code> is a &lt;code>Relationship&lt;/code> that indicates that one or more &lt;code>client&lt;/code> &lt;code>Elements&lt;/code> require one more &lt;code>supplier&lt;/code> &lt;code>Elements&lt;/code> for their complete specification. In general, this means that a change to one of the &lt;code>supplier&lt;/code> &lt;code>Elements&lt;/code> may necessitate a change to, or re-specification of, the &lt;code>client&lt;/code> &lt;code>Elements&lt;/code>.&lt;/p>

&lt;p>Note that a &lt;code>Dependency&lt;/code> is entirely a model-level &lt;code>Relationship&lt;/code>, without instance-level semantics.&lt;/p></body>
        </ownedComment>
        <generalization xmi:id="7f826069-8915-4dc0-8bd7-c4edb1f36873" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="4c3a1991-8da9-4cb9-bd2f-a5cbb3c055f5" name="client" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" association="c4cdf460-8600-4426-8a06-5d405554d67c">
          <ownedComment xmi:id="3c8c5f73-ad95-4903-a7b4-504ffb5a5a2d" annotatedElement="4c3a1991-8da9-4cb9-bd2f-a5cbb3c055f5">
            <body>&lt;p>The &lt;code>Element&lt;/code> or &lt;code>Elements&lt;/code> dependent on the &lt;code>supplier&lt;/code> &lt;code>Elements&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="73892ca5-8013-4c24-aff4-71e0e46ae35e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="04582c26-4a5c-4dbb-9203-6a4a09d6e869" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="67169bb1-834a-4a1f-8649-9d136c59a30b" name="supplier" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="4ef44cb5-a5e5-4c89-a510-855794650d65">
          <ownedComment xmi:id="55f53aa4-ab6a-4051-8cfb-f6d952c67b16" annotatedElement="67169bb1-834a-4a1f-8649-9d136c59a30b">
            <body>&lt;p>The &lt;code>Element&lt;/code> or &lt;code>Elements&lt;/code> on which the &lt;code>client&lt;/code> &lt;code>Elements&lt;/code> depend in some respect.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a855d5f7-d9e6-4061-a7e8-fe11d555c993" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="70d3d4f7-dba8-498a-8c40-0def08043f4f" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="c4cdf460-8600-4426-8a06-5d405554d67c" name="A_client_clientDependency" visibility="public" memberEnd="4c3a1991-8da9-4cb9-bd2f-a5cbb3c055f5 6899a9ee-e802-49c1-9ce8-7babe1b08fb6">
        <ownedEnd xmi:id="6899a9ee-e802-49c1-9ce8-7babe1b08fb6" name="clientDependency" visibility="public" type="345c4407-6df4-481b-b103-01f51cba97b7" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874" association="c4cdf460-8600-4426-8a06-5d405554d67c">
          <ownedComment xmi:id="1c1efa0f-9234-4e31-b0ab-3e61bcaf8f84" annotatedElement="6899a9ee-e802-49c1-9ce8-7babe1b08fb6">
            <body>&lt;p>The &lt;code>Dependencies&lt;/code> that have a certain &lt;code>client&lt;/code> &lt;code>Element&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="19717db7-d83d-416f-a1d7-21b385fe99c2" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="22d59954-755e-4932-8ec3-fded60f9eb25" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="4ef44cb5-a5e5-4c89-a510-855794650d65" name="A_supplier_supplierDependency" visibility="public" memberEnd="67169bb1-834a-4a1f-8649-9d136c59a30b 85fb3f7c-a676-4d0c-81b6-bdfb97825741">
        <ownedEnd xmi:id="85fb3f7c-a676-4d0c-81b6-bdfb97825741" name="supplierDependency" visibility="public" type="345c4407-6df4-481b-b103-01f51cba97b7" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="4ef44cb5-a5e5-4c89-a510-855794650d65">
          <ownedComment xmi:id="05a13ca1-45a8-4fdc-8bab-1004d08b5b3b" annotatedElement="85fb3f7c-a676-4d0c-81b6-bdfb97825741">
            <body>&lt;p>The &lt;code>Dependencies&lt;/code> that have a certain &lt;code>supplier&lt;/code> &lt;code>Element&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="389e906d-d301-4bdc-bd04-188b02fac905" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="252c63c2-e77a-4276-a09d-c4781c5953cc" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
  </packagedElement>
  <packagedElement xmi:type="uml:Package" xmi:id="d5869ef3-51fe-4056-9fff-0667021ed49b" name="Core" visibility="public" URI="">
    <ownedComment xmi:id="d913fcfa-2520-4c82-a97c-bc9e5669aa5d" annotatedElement="d5869ef3-51fe-4056-9fff-0667021ed49b">
      <body>The Core layer provides the semantic foundation for KerML.</body>
    </ownedComment>
    <packageImport xmi:id="a462c016-93ca-4e5c-a55a-c981394873a5" importedPackage="d88c098b-e2c0-4287-8797-203ff1229107"/>
    <packagedElement xmi:type="uml:Package" xmi:id="dd6a85fe-1ade-4514-97ad-d7183d20d748" name="Features" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="df9c1df6-7aa0-41af-8adb-8cdd7a47738f" name="Redefinition" visibility="public">
        <ownedComment xmi:id="6f1161aa-2529-481d-8dc5-4249cf3f5411" annotatedElement="df9c1df6-7aa0-41af-8adb-8cdd7a47738f">
          <body>&lt;p>&lt;code>Redefinition&lt;/code> is a kind of &lt;code>Subsetting&lt;/code> that requires the &lt;code>redefinedFeature&lt;/code> and the &lt;code>redefiningFeature&lt;/code> to have the same values (on each instance of the domain of the &lt;code>redefiningFeature&lt;/code>). This means any restrictions on the &lt;code>redefiningFeature&lt;/code>, such as &lt;code>type&lt;/code> or &lt;code>multiplicity&lt;/code>, also apply to the &lt;code>redefinedFeature&lt;/code> (on each instance of the domain of the &lt;code>redefiningFeature&lt;/code>), and vice versa. The &lt;code>redefinedFeature&lt;/code> might have values for instances of the domain of the &lt;code>redefiningFeature&lt;/code>, but only as instances of the domain of the &lt;code>redefinedFeature&lt;/code> that happen to also be instances of the domain of the &lt;code>redefiningFeature&lt;/code>. This is supported by the constraints inherited from &lt;code>Subsetting&lt;/code> on the domains of the &lt;code>redefiningFeature&lt;/code> and &lt;code>redefinedFeature&lt;/code>. However, these constraints are narrowed for &lt;code>Redefinition&lt;/code> to require the &lt;code>owningTypes&lt;/code> of the &lt;code>redefiningFeature&lt;/code> and &lt;code>redefinedFeature&lt;/code> to be different and the &lt;code>redefinedFeature&lt;/code> to not be inherited into the &lt;code>owningNamespace&lt;/code> of the &lt;code>redefiningFeature&lt;/code>.This enables the &lt;code>redefiningFeature&lt;/code> to have the same name as the &lt;code>redefinedFeature&lt;/code>, if desired.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="ec3775d5-009f-49dd-a543-7d82ce74357d" name="validateRedefinitionFeaturingTypes" visibility="public" constrainedElement="df9c1df6-7aa0-41af-8adb-8cdd7a47738f">
          <ownedComment xmi:id="4460f1b7-6d35-44c4-9be4-e6c8c0ad4ae9" annotatedElement="ec3775d5-009f-49dd-a543-7d82ce74357d">
            <body>&lt;p>The &lt;code>redefiningFeature&lt;/code> of a &lt;code>Redefinition&lt;/code> must have at least one &lt;code>featuringType&lt;/code> that is not also a &lt;code>featuringType&lt;/code> of the &lt;code>redefinedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="14c07efe-e391-4a32-9629-ed06c464ddb7" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let anythingType: Type =
    redefiningFeature.resolveGlobal('Base::Anything').modelElement.oclAsType(Type) in 
-- Including &quot;Anything&quot; accounts for implicit featuringType of Features
-- with no explicit featuringType.
let redefiningFeaturingTypes: Set(Type) =
    redefiningFeature.featuringTypes->asSet()->including(anythingType) in
let redefinedFeaturingTypes: Set(Type) =
    redefinedFeature.featuringTypes->asSet()->including(anythingType) in
redefiningFeaturingTypes &lt;> redefinedFeaturingType</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="3f663013-9dbb-421d-ab5e-0f8b237ba1e2" name="validateRedefinitionDirectionConformance" visibility="public" constrainedElement="df9c1df6-7aa0-41af-8adb-8cdd7a47738f">
          <ownedComment xmi:id="0c789b28-6ef1-490c-967b-689edd4066fb" annotatedElement="3f663013-9dbb-421d-ab5e-0f8b237ba1e2">
            <body>&lt;p>If the &lt;code>redefinedFeature&lt;/code> of a &lt;code>Redefinition&lt;/code> has a direction of &lt;code>in&lt;/code> or &lt;code>out&lt;/code> (relative to any &lt;code>featuringType&lt;/code> of the &lt;code>redefiningFeature&lt;/code>), then the &lt;code>redefiningFeature&lt;/code> must have the same &lt;code>direction&lt;/code>. If the &lt;code>redefinedFeature&lt;/code> has a direction of &lt;code>inout&lt;/code>, then the &lt;code>redefiningFeature&lt;/code> must have a non-null &lt;code>direction&lt;/code>. (Note: the direction of the &lt;code>redefinedFeature&lt;/code> relative to a &lt;code>featuringType&lt;/code> of the &lt;code>redefiningFeature&lt;/code> is the direction it would have if it had been inherited and not redefined.)&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="84e5a294-bdbc-47d1-b98c-252133380a31" name="" visibility="public">
            <language>OCL2.0</language>
            <body>featuringType->forAll(t |
    let direction : FeatureDirectionKind = t.directionOf(redefinedFeature) in
    ((direction = FeatureDirectionKind::_'in' or 
      direction = FeatureDirectionKind::out) implies
         redefiningFeature.direction = direction)
    and 
    (direction = FeatureDirectionKind::inout implies
        redefiningFeature.direction &lt;> null))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="d319c6b8-2d02-4313-8322-8a5fd3ef7b91" general="a26821f8-6af3-42a0-9043-03c372464172"/>
        <ownedAttribute xmi:id="f5092d04-2553-4bcd-9c80-2e0e8d70d2fc" name="redefiningFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="20d11fe1-16c0-41fb-8823-559ce4084ebf" association="ce1f43c5-a869-4ab0-9cae-d2e75015d9a8">
          <ownedComment xmi:id="37712e2d-a599-4fba-ba53-c04456960127" annotatedElement="f5092d04-2553-4bcd-9c80-2e0e8d70d2fc">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is redefining the &lt;code>redefinedFeature&lt;/code> of this &lt;code>Redefinition&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ded8b804-8252-4b25-89a4-abb0649f8c9d" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7dc1c319-6c14-4b5f-bdab-b0e34d0fcac1" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="c30433b4-031a-4ee7-8b11-9d39cbb35d39" name="redefinedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="b8bb3b86-cf2d-451e-b3c1-6a3aecac5aa4" association="f264e82a-350c-46e3-a3ea-cf731d2fe9a9">
          <ownedComment xmi:id="e2533563-dde2-4164-93ce-7844e45e3785" annotatedElement="c30433b4-031a-4ee7-8b11-9d39cbb35d39">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is redefined by the &lt;code>redefiningFeature&lt;/code> of this &lt;code>Redefinition&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c9f9ee8d-7c73-4ec5-9ace-67684fc404a5" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c2c03dc1-f0c6-47d8-ad73-7d1b9a1e6801" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="3d223887-90ae-4731-8d89-60a4bec5fd09" name="A_type_typingByType" visibility="public" memberEnd="637be91d-677d-4da1-a97e-6946c1b89889 1a967ba1-e16d-425c-9751-defa66e4a905">
        <ownedEnd xmi:id="1a967ba1-e16d-425c-9751-defa66e4a905" name="typingByType" visibility="public" type="0f0dd69d-e01b-4231-a0b5-c797c6bfc142" subsettedProperty="ec929050-eaf9-499b-b556-7d35cc53b50a" association="3d223887-90ae-4731-8d89-60a4bec5fd09">
          <ownedComment xmi:id="b3f4371a-da59-4f0c-aeb7-1ef9038cdf6f" annotatedElement="1a967ba1-e16d-425c-9751-defa66e4a905">
            <body>&lt;p>The FeatureTyping relating this Type to a Feature.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="81c2cf6a-380c-4bc7-9e7a-866376f64b3c" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a62d1ab6-1939-40dd-a7cc-f7cfa7a7b304" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="d473ad7b-ce6b-440e-b5d3-bf931e18b69d" name="A_typedFeature_type" visibility="public" memberEnd="08f343cc-a4b3-4b7b-ac32-2b752135ca37 2dd9a8a5-bc46-421d-bc22-89f91e4b6ffe">
        <ownedEnd xmi:id="08f343cc-a4b3-4b7b-ac32-2b752135ca37" name="typedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" association="d473ad7b-ce6b-440e-b5d3-bf931e18b69d">
          <ownedComment xmi:id="0069af0c-0874-4d0a-9528-0df019f3cf11" annotatedElement="08f343cc-a4b3-4b7b-ac32-2b752135ca37">
            <body>&lt;p>The Features for which a certain Type is a &lt;code>type&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1bd0867e-71ce-4462-837c-2aa93123feca" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="52a7f54a-bc32-4a43-a176-0dea2502bb07" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="b5bd62ea-d436-4305-b80b-1eb051316016" name="A_typing_typedFeature" visibility="public" memberEnd="127026ea-deda-4910-8e9f-9bce075926c2 933b0b76-a63b-4055-98d6-73d1153f9064">
        <ownedEnd xmi:id="127026ea-deda-4910-8e9f-9bce075926c2" name="typing" type="0f0dd69d-e01b-4231-a0b5-c797c6bfc142" subsettedProperty="99b13dd4-d587-432b-aba9-f7fa57b7ad99" association="b5bd62ea-d436-4305-b80b-1eb051316016">
          <ownedComment xmi:id="3db39711-08d9-44df-9920-4ab5741958a0" annotatedElement="127026ea-deda-4910-8e9f-9bce075926c2">
            <body>&lt;p>The FeatureTypings for which a certain Feature is the &lt;code>typedFeature&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3deb0940-99c3-43e1-9d84-61f16b385e0d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="18ed3995-28f6-4bd1-97f9-d375cc9b9d17" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="18b8f240-fdab-4cfa-93f6-c3a16f8a427e" name="A_ownedRedefinition_owningFeature" visibility="public" memberEnd="82497c64-3237-4c23-bb78-9bb9d1eaf8f0 10ea09d9-104b-40e5-bed0-d96d4fb6e428">
        <ownedEnd xmi:id="10ea09d9-104b-40e5-bed0-d96d4fb6e428" name="owningFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="43a01c3e-8273-4941-b616-2f8edcc0ac17" association="18b8f240-fdab-4cfa-93f6-c3a16f8a427e">
          <ownedComment xmi:id="418422e9-06fb-4033-bc95-2b794fafd62a" annotatedElement="10ea09d9-104b-40e5-bed0-d96d4fb6e428">
            <body>&lt;p>The Feature that owns this Redefinition relationship, which must also be its &lt;code>redefiningFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="26bce3dd-7676-4f2e-abeb-a96dab3c901a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="486249ef-af18-449e-a80a-5d6d163d89a6" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="f264e82a-350c-46e3-a3ea-cf731d2fe9a9" name="A_redefinedFeature_redefining" visibility="public" memberEnd="c30433b4-031a-4ee7-8b11-9d39cbb35d39 efe9310b-4648-4176-8777-eae4b9cc14ec">
        <ownedEnd xmi:id="efe9310b-4648-4176-8777-eae4b9cc14ec" name="redefining" visibility="public" type="df9c1df6-7aa0-41af-8adb-8cdd7a47738f" subsettedProperty="8bb4ce6a-5088-4453-b5b6-d5a905d715f8" association="f264e82a-350c-46e3-a3ea-cf731d2fe9a9">
          <ownedComment xmi:id="5d7d1fa6-b940-4af9-9399-6c1ae408510b" annotatedElement="efe9310b-4648-4176-8777-eae4b9cc14ec">
            <body>&lt;p>The Redefinitions with a certain Feature as the &lt;code>redefinedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="65151883-2313-4723-bdb3-2862565e4c1e" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2f5416d3-c86a-49c2-bf9a-07b0a3ad1765" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="1c5d822b-b113-4187-ac38-df54b4709c15" name="A_subsettingFeature_subsetting" visibility="public" memberEnd="20d11fe1-16c0-41fb-8823-559ce4084ebf 6d6998e4-39fd-4d6d-b2c3-96c1d403f6fe">
        <ownedEnd xmi:id="6d6998e4-39fd-4d6d-b2c3-96c1d403f6fe" name="subsetting" visibility="public" type="a26821f8-6af3-42a0-9043-03c372464172" subsettedProperty="99b13dd4-d587-432b-aba9-f7fa57b7ad99" association="1c5d822b-b113-4187-ac38-df54b4709c15">
          <ownedComment xmi:id="d6d5f823-0012-4587-b2cc-0b640001a2e5" annotatedElement="6d6998e4-39fd-4d6d-b2c3-96c1d403f6fe">
            <body>&lt;p>The Subsettings with a certain Feature as the &lt;code>subsettingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c89e4eed-06be-4811-8e33-cd70636817d3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="676357b4-96bb-458e-933b-85c88cedb30e" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="56b2e3ab-f2e5-4330-9c25-362cb4af825d" name="Feature" visibility="public">
        <ownedComment xmi:id="681889d2-057e-4f79-8e67-081288d3ef0b" annotatedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <body>&lt;p>A &lt;code>Feature&lt;/code> is a &lt;code>Type&lt;/code> that classifies relations between multiple things (in the universe). The domain of the relation is the intersection of the &lt;code>featuringTypes&lt;/code> of the &lt;code>Feature&lt;/code>. (The domain of a &lt;code>Feature&lt;/code> with no &lt;code>featuringTyps&lt;/code> is implicitly the most general &lt;code>Type&lt;/code> &lt;em>&lt;code>Base::Anything&lt;/code>&lt;/em> from the Kernel Semantic Library.) The co-domain of the relation is the intersection of the &lt;code>types&lt;/code> of the &lt;code>Feature&lt;/code>.

&lt;p>In the simplest cases, the &lt;code>featuringTypes&lt;/code> and &lt;code>types&lt;/code> are &lt;code>Classifiers&lt;/code> and the &lt;code>Feature&lt;/code> relates two things, one from the domain and one from the range. Examples include cars paired with wheels, people paired with other people, and cars paired with numbers representing the car length.&lt;/p>

&lt;p>Since &lt;code>Features&lt;/code> are &lt;code>Types&lt;/code>, their &lt;code>featuringTypes&lt;/code> and &lt;code>types&lt;/code> can be &lt;code>Features&lt;/code>. In this case, the &lt;code>Feature&lt;/code> effectively classifies relations between relations, which can be interpreted as the sequence of things related by the domain &lt;code>Feature&lt;/code> concatenated with the sequence of things related by the co-domain &lt;code>Feature&lt;/code>.&lt;/p>

&lt;p>The &lt;em>values&lt;/em> of a &lt;code>Feature&lt;/code> for a given instance of its domain are all the instances of its co-domain that are related to that domain instance by the &lt;code>Feature&lt;/code>. The values of a &lt;code>Feature&lt;/code> with &lt;code>chainingFeatures&lt;/code> are the same as values of the last &lt;code>Feature&lt;/code> in the chain, which can be found by starting with values of the first &lt;code>Feature&lt;/code>, then using those values as domain instances to obtain valus of the second &lt;code>Feature&lt;/code>, and so on, to values of the last &lt;code>Feature&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="f579b8bf-4fc1-45d6-b95c-1216d6456a18" name="deriveFeatureOwnedRedefinition" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="e21d2c54-987a-43b8-97e3-7a7e294526df" annotatedElement="f579b8bf-4fc1-45d6-b95c-1216d6456a18">
            <body>&lt;p>The &lt;code>ownedRedefinitions&lt;/code> of a &lt;code>Feature&lt;/code> are its &lt;code>ownedSubsettings&lt;/code> that are &lt;code>Redefinitions&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="7a959647-2cfb-4e70-ad1f-0d95ee41143a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedRedefinition = ownedSubsetting->selectByKind(Redefinition)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="27733c12-39d0-47ff-9f7e-3211e03c9624" name="deriveFeatureOwnedTypeFeaturing" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="b3100662-705a-4ca7-86ec-3cc9cba17038" annotatedElement="27733c12-39d0-47ff-9f7e-3211e03c9624">
            <body>&lt;p>The &lt;code>ownedTypeFeaturings&lt;/code> of a &lt;code>Feature&lt;/code> are its &lt;code>ownedRelationships&lt;/code> that are &lt;code>TypeFeaturings&lt;/code> and which have the &lt;code>Feature&lt;/code> as their &lt;code>featureOfType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="22dc1f31-e884-4ccd-886f-ecc1a2f02188" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)->
    select(tf | tf.featureOfType = self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="13192404-c796-4634-8aaa-636ff0b535cf" name="deriveFeatureOwnedSubsetting" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="eedc5bb5-1c9d-4c33-8488-004cf4723227" annotatedElement="13192404-c796-4634-8aaa-636ff0b535cf">
            <body>&lt;p>The &lt;code>ownedSubsettings&lt;/code> of a &lt;code>Feature&lt;/code> are its &lt;code>ownedSpecializations&lt;/code> that are &lt;code>Subsettings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a5aa1521-63d9-425c-89aa-1c48584dcfee" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSubsetting = ownedSpecialization->selectByKind(Subsetting)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="332bb7dd-c72e-4284-a908-6d82f113a038" name="deriveFeatureOwnedTyping" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="31f0c700-a4f0-4384-8fef-f7daf8791759" annotatedElement="332bb7dd-c72e-4284-a908-6d82f113a038">
            <body>&lt;p>The &lt;code>ownedTypings&lt;/code> of a &lt;code>Feature&lt;/code> are its &lt;code>ownedSpecializations&lt;/code> that are &lt;code>FeatureTypings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="5b69a534-51e1-45cd-8705-5eb467df0cfc" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedTyping = ownedGeneralization->selectByKind(FeatureTyping)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="a9cbc081-8038-4465-8072-0829e5b07929" name="deriveFeatureType" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="04bfa6bb-22e6-4567-b491-9ffaabebccba" annotatedElement="a9cbc081-8038-4465-8072-0829e5b07929">
            <body>&lt;p>The &lt;code>types&lt;/code> of a &lt;code>Feature&lt;/code> are the union of the &lt;code>types&lt;/code> of its &lt;code>typings&lt;/code> and the &lt;code>types&lt;/code> of the &lt;code>Features&lt;/code> it subsets, with all redundant supertypes removed. If the &lt;code>Feature&lt;/code> has &lt;code>chainingFeatures&lt;/code>, then the union also includes the types of the last &lt;code>chainingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8612f6a3-1c2e-4ce3-810a-f5d956ef8d40" name="" visibility="public">
            <language>OCL2.0</language>
            <body>type = 
    let types : OrderedSet(Types) = OrderedSet{self}->
        -- Note: The closure operation automatically handles circular relationships.
        closure(typingFeatures()).typing.type->asOrderedSet() in
    types->reject(t1 | types->exist(t2 | t2 &lt;> t1 and t2.specializes(t1)))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="5537e28b-154c-4bc8-acce-6bc29fd72a69" name="validateFeatureMultiplicityDomain" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="ac1958ec-752e-4bd3-8cd6-946c2f9e61b9" annotatedElement="5537e28b-154c-4bc8-acce-6bc29fd72a69">
            <body>&lt;p>If a Feature has a &lt;code>multiplicity&lt;/code>, then the &lt;code>featuringTypes&lt;/code> of the &lt;code>multiplicity&lt;/code> must be the same as those of the Feature itself.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="7c480f85-db1b-48c8-9ea5-4ab9a52ed085" name="" visibility="public">
            <language>OCL2.0</language>
            <body>multiplicity &lt;> null implies multiplicity.featuringType = featuringType </body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="b0ce433d-ee1f-43c7-95e8-db951ac920bb" name="checkFeatureSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="930baec4-a658-4574-bd05-5486129ea2a6" annotatedElement="b0ce433d-ee1f-43c7-95e8-db951ac920bb">
            <body>&lt;p>A Feature must directly or indirectly specialize &lt;code>&lt;em>Base::things&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="89287c07-5e92-47d7-9204-dfa417792920" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Base::things')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="345f22fe-e943-428a-a26b-78233136d516" name="validateFeatureChainingFeaturesNotSelf" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="8da56970-f906-4310-a6d4-87105f7b273a" annotatedElement="345f22fe-e943-428a-a26b-78233136d516">
            <body>&lt;p>A Feature cannot be one of its own &lt;code>chainingFeatures&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="68a203b4-1da5-415d-9725-e0b0fb3a52b8" name="" visibility="public">
            <language>English</language>
            <body>chainingFeature->excludes(self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="4cff5043-a6ad-42e0-b81d-1b1c80913bd9" name="deriveFeatureOwnedFeatureChaining" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="5926e5f3-2a23-41a6-a830-932daa72b28e" annotatedElement="4cff5043-a6ad-42e0-b81d-1b1c80913bd9">
            <body>&lt;p>The &lt;code>ownedFeatureChainings&lt;/code> of a &lt;code>Feature&lt;/code> are the &lt;code>ownedRelationships&lt;/code> that are &lt;code>FeatureChainings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6fe90776-09e5-4ded-b239-ef8bfd6dd7b5" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="f07a3317-e2e4-4a9b-a064-5ec466dfa3df" name="deriveFeatureChainingFeature" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="cb199813-a689-46a7-bbcb-8e3016726203" annotatedElement="f07a3317-e2e4-4a9b-a064-5ec466dfa3df">
            <body>&lt;p>The &lt;code>chainingFeatures&lt;/code> of a &lt;code>Feature&lt;/code> are the &lt;code>chainingFeatures&lt;/code> of its &lt;code>ownedFeatureChainings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ea77afee-0a77-47ba-81da-e37d5b310f39" name="" visibility="public">
            <language>OCL2.0</language>
            <body>chainingFeature = ownedFeatureChaining.chainingFeature</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="2a2bc6e3-fc7d-430a-acaa-8b689fc907fa" name="validateFeatureChainingFeatureNotOne" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="3c5b3ffe-2f88-46b7-a83d-d10144745b2e" annotatedElement="2a2bc6e3-fc7d-430a-acaa-8b689fc907fa">
            <body>A &lt;code>Feature&lt;/code> must have either no &lt;code>chainingFeatures&lt;/code> or more than one.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="83ffafdb-454f-4be6-932e-0d7ca4723545" name="" visibility="public">
            <language>OCL2.0</language>
            <body>chainingFeature->size() &lt;> 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="961d77b8-0dc2-4995-a77b-2a7811a60037" name="checkFeatureEndRedefinition" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="b3cebeba-5b3d-4cb2-8c2a-6ca8c4b52a5e" annotatedElement="961d77b8-0dc2-4995-a77b-2a7811a60037">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> has &lt;code>isEnd = true&lt;/code> and an &lt;code>owningType&lt;/code> that is not empty, then, for each direct supertype of its &lt;code>owningType&lt;/code>, it must redefine the &lt;code>endFeature&lt;/code> at the same position, if any.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="24c4c3e0-004d-4a0e-be60-ddc9603822c9" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isEnd and owningType &lt;> null implies
    let i : Integer = 
        owningType.ownedEndFeature->indexOf(self) in
    owningType.ownedSpecialization.general->
        forAll(supertype |
             supertype.endFeature->size() >= i implies
                redefines(supertype.endFeature->at(i))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="5fe2cd39-8c11-4e45-9a08-30d0c16cd5b9" name="checkFeatureValuationSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="f1508db7-587e-41c7-9e42-99d60956ccfc" annotatedElement="5fe2cd39-8c11-4e45-9a08-30d0c16cd5b9">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> has a &lt;code>FeatureValue&lt;/code>, no &lt;code>ownedSpecializations&lt;/code> that are not implied, and is not directed, then it must specialize the &lt;code>result&lt;/code> of the &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> of the &lt;code>FeatureValue&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b4ed7427-adf4-4075-b6b0-3c6aea79945e" name="" visibility="public">
            <language>OCL2.0</language>
            <body>direction = null and
ownedSpecializations->forAll(isImplied) implies
    ownedMembership->
        selectByKind(FeatureValue)->
        forAll(fv | specializes(fv.value.result))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="1c3eec83-cea7-461c-9b7f-6aa9087aa058" name="checkFeatureEndSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="b9f997e5-db56-4386-b269-2dcfbf564011" annotatedElement="1c3eec83-cea7-461c-9b7f-6aa9087aa058">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> has &lt;code>isEnd = true&lt;/code> and an &lt;code>owningType&lt;/code> that is an &lt;code>Association&lt;/code> or a &lt;code>Connector&lt;/code>, then it must directly or indirectly specialize &lt;code>&lt;em>Links::Link::participant&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d55ac427-19ee-4825-a001-9459cee4c984" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isEnd and owningType &lt;> null and
(owningType.oclIsKindOf(Association) or
 owningType.oclIsKindOf(Connector)) implies
    specializesFromLibrary('Links::Link::participant')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="5750ab26-6de1-4173-b467-9fa22ab7ca09" name="checkFeatureSubobjectSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="aaabbc9a-a5ea-4729-b10b-f3006b362593" annotatedElement="5750ab26-6de1-4173-b467-9fa22ab7ca09">
            <body>&lt;p>A composite &lt;code>Feature&lt;/code> typed by a &lt;code>Structure&lt;/code>, and whose &lt;code>ownedType&lt;/code> is a &lt;code>Structure&lt;/code> or another &lt;code>Feature&lt;/code> typed by a &lt;code>Structure&lt;/code> must directly or indirectly specialize &lt;em>&lt;code>Objects::Object::subobjects&lt;/code>&lt;/em>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8aa41ab7-3992-4e35-afe8-bf3b5a9cfdd9" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isComposite and
ownedTyping.type->includes(oclIsKindOf(Structure)) and
owningType &lt;> null and
(owningType.oclIsKindOf(Structure) or
 owningType.type->includes(oclIsKindOf(Structure))) implies
    specializesFromLibrary('Occurrence::Occurrence::suboccurrences')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d873a002-1f7b-458d-bfe0-aab6f42eb098" name="checkFeatureResultSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="eade9fa6-db6f-44d7-8807-87448be2fe9e" annotatedElement="d873a002-1f7b-458d-bfe0-aab6f42eb098">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> is the &lt;code>result&lt;/code> parameter of a &lt;code>FeatureReferenceExpression&lt;/code>, then the &lt;code>Feature&lt;/code> must specialize the &lt;code>referent&lt;/code> of the &lt;code>FeatureReferenceExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="16ae2d4e-25e0-4b13-8331-5858f0c6325c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and
owningType.oclIsKindOf(FeatureReferenceExpression) and
self = owningType.oclAsType(FeatureReferenceExpression).result implies
    specializes(owningType.oclAsType(FeatureReferenceExpression).referent)
</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="37ca4325-9287-4858-9ef3-22efb136c9cc" name="checkFeatureOccurrenceSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="4a6f5a94-4857-4751-8038-bf7c95d574e5" annotatedElement="37ca4325-9287-4858-9ef3-22efb136c9cc">
            <body>&lt;p>If a Feature has an &lt;code>ownedTyping&lt;/code> relationship to a &lt;code>Class&lt;/code>, then it must directly or indirectly specialize &lt;code>&lt;em>Occurrences::occurrences&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cc1b2917-0f2b-4fb4-aece-fa35e8e2a624" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedTyping.type->exists(selectByKind(Class)) implies
    specializesFromLibrary('Occurrences::occurrences')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="85192c3b-68fc-44a9-8bda-fb3b62cfb431" name="checkFeatureSuboccurrenceSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="e9bff940-bdae-47bc-82cd-46e64b97ac0d" annotatedElement="85192c3b-68fc-44a9-8bda-fb3b62cfb431">
            <body>&lt;p>A composite &lt;code>Feature&lt;/code> that has an &lt;code>ownedTyping&lt;/code> relationship to a &lt;code>Class&lt;/code>, and whose &lt;code>ownedType&lt;/code> is a &lt;code>Class&lt;/code> or another &lt;code>Feature&lt;/code> typed by a &lt;code>Class&lt;/code>, must directly or indirectly specialize &lt;em>&lt;code>Occurrences::Occurrence::suboccurrences&lt;/code>&lt;/em>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="5779af84-99a2-42aa-8898-a41ede333c49" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isComposite and
ownedTyping.type->includes(oclIsKindOf(Class)) and
owningType &lt;> null and
(owningType.oclIsKindOf(Class) or
 owningType.oclIsKindOf(Feature) and
    owningType.oclAsType(Feature).type->
        exists(oclIsKindOf(Class))) implies
    specializesFromLibrary('Occurrence::Occurrence::suboccurrences')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="0a8ab33d-2fa9-4660-b577-f4d943c53374" name="checkFeatureDataValueSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="38a35281-5436-4b0d-b9e0-218e2398d924" annotatedElement="0a8ab33d-2fa9-4660-b577-f4d943c53374">
            <body>&lt;p>If a Feature has an &lt;code>ownedTyping&lt;/code> relationship to a &lt;code>DataType&lt;/code>, then it must directly or indirectly specialize &lt;code>&lt;em>Base::dataValues&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b718ef5b-8961-4a05-b4b4-65cd75f6e6e1" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedTyping.type->exists(selectByKind(DataType)) implies
    specializesFromLibrary('Base::dataValues')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="46fb9da8-c1e2-482d-a54e-c2d080effe03" name="checkFeatureItemFlowFeatureRedefinition" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="cd672a28-ccb1-4738-be30-5ab30a8d131f" annotatedElement="46fb9da8-c1e2-482d-a54e-c2d080effe03">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> is the first &lt;code>ownedFeature&lt;/code> of a first or second &lt;code>ItemFlowEnd&lt;/code>, then it must directly or indirectly specialize either &lt;em>&lt;code>Transfers::Transfer::source::sourceOutput&lt;/code>&lt;/em> or &lt;em>&lt;code>Transfers::Transfer::target::targetInput&lt;/code>&lt;/em>, respectively, from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d35aceb1-a983-4e76-9c84-b5c3186ce7e6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and
owningType.oclIsKindOf(ItemFlowEnd) and
owningType.ownedFeature->at(1) = self implies
    let flowType : Type = owningType.owningType in
    flowType &lt;> null implies
        let i : Integer = 
            flowType.ownedFeature.indexOf(owningType) in
        (i = 1 implies 
            redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and
        (i = 2 implies
            redefinesFromLibrary('Transfers::Transfer::source::targetInput'))
                 </body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="1730ee81-b2d4-4847-89ef-ef212d3a85c0" name="checkFeatureParameterRedefinition" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="6b8500b0-366c-49d6-8473-0738c30b4d71" annotatedElement="1730ee81-b2d4-4847-89ef-ef212d3a85c0">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> is a &lt;code>parameter&lt;/code> of an &lt;code>owningType&lt;/code> that is a &lt;code>Behavior&lt;/code> or &lt;code>Step&lt;/code>, &lt;em>other&lt;/em> than the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> (if any), then, for each direct supertype of its &lt;code>owningType&lt;/code> that is also a &lt;code>Behavior&lt;/code> or &lt;code>Step&lt;/code>, it must redefine the &lt;code>parameter&lt;/code> at the same position, if any.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9ec7e1d0-5d77-499f-b2e7-9469e559b064" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and
(owningType.oclIsKindOf(Behavior) or
 owningType.oclIsKindOf(Step)) implies
    let i : Integer = 
        owningType.ownedFeature->select(direction &lt;> null) in
    owningType.ownedSpecialization.general->
        forAll(supertype |
            let ownedParameters : Sequence(Feature) = 
                supertype.ownedFeature->select(direction &lt;> null) in
            ownedParameters->size() >= i implies
                redefines(ownedParameters->at(i))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d78c662f-3e17-4895-9cfd-1d8af732f030" name="checkFeatureObjectSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="cf0a7008-7bd4-4dc0-9216-e1546dd629bd" annotatedElement="d78c662f-3e17-4895-9cfd-1d8af732f030">
            <body>&lt;p>If a Feature has an &lt;code>ownedTyping&lt;/code> relationship to a &lt;code>Structure&lt;/code>, then it must directly or indirectly specialize &lt;code>&lt;em>Objects::objects&lt;/em>&lt;/code> from the Kernel Semantics Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d23bebe2-dd2d-4db4-92a4-5cbc071fa656" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedTyping.type->exists(selectByKind(Structure)) implies
    specializesFromLibary('Objects::objects')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d9678c29-2310-4f5c-900c-f3e9ff51110d" name="checkFeatureResultRedefinition" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="3789cb68-7ec5-4d31-9d7a-a09b357eaefd" annotatedElement="d9678c29-2310-4f5c-900c-f3e9ff51110d">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> is a &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of an &lt;code>owningType&lt;/code> that is a &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code>, then, for each direct supertype of its &lt;code>owningType&lt;/code> that is also a &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code>, it must redefine the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="c7954fab-2066-419f-968d-f304ac58e4b0" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and
(owningType.oclIsKindOf(Function) and
    self = owningType.oclAsType(Function).result or
 owningType.oclIsKindOf(Expression) and
    self = owningType.oclAsType(Expression).result) implies
    owningType.ownedSpecialization.general->
        select(oclIsKindOf(Function) or oclIsKindOf(Expression))->
        forAll(supertype |
            redefines(
                if superType.oclIsKindOf(Function) then
                    superType.oclAsType(Function).result
                else
                    superType.oclAsType(Expression).result
                endif)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="42345a54-c931-451f-8a0a-2905b160a846" name="deriveFeatureOwnedFeatureInverting" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="465e801a-cc5c-4120-9ab7-0ac915265946" annotatedElement="42345a54-c931-451f-8a0a-2905b160a846">
            <body>&lt;p>The &lt;code>ownedFeatureInvertings&lt;/code> of a &lt;code>Feature&lt;/code> are its &lt;code>ownedRelationships&lt;/code> that are &lt;code>FeatureInvertings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8ceded8c-c70d-4d27-9c0c-d4c3532367f6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)->
    select(fi | fi.featureInverted = self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="ef036ca4-a727-4e20-b547-4f87cec5ce5f" name="deriveFeatureFeaturingType" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="a3134a71-bd28-45f0-99bd-3d11fe5622ae" annotatedElement="ef036ca4-a727-4e20-b547-4f87cec5ce5f">
            <body>The &lt;code>featuringTypes&lt;/code> of a &lt;code>Feature&lt;/code> include the &lt;code>featuringTypes&lt;/code> of all the &lt;code>typeFeaturings&lt;/code> of the &lt;code>Feature&lt;/code>. If the &lt;code>Feature&lt;/code> has &lt;code>chainingFeatures&lt;/code>, then its &lt;code>featuringTypes&lt;/code> also include the &lt;code>featuringTypes&lt;/code> of the first &lt;code>chainingFeature&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9c57b967-493d-4c98-882a-f66ca1016fd7" name="" visibility="public">
            <language>OCL2.0</language>
            <body>featuringType =
    let featuringTypes : OrderedSet(Type) = 
        featuring.type->asOrderedSet() in
    if chainingFeature->isEmpty() then featuringTypes
    else
        featuringTypes->
            union(chainingFeature->first().featuringType)->
            asOrderedSet()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="6d114cae-e69c-416c-ae4a-d2f2cd8345b8" name="deriveFeatureOwnedReferenceSubsetting" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="fc68f002-5e60-4a22-9fc1-c79ac3795a2c" annotatedElement="6d114cae-e69c-416c-ae4a-d2f2cd8345b8">
            <body>&lt;p>The &lt;code>ownedReferenceSubsetting&lt;/code> of a &lt;code>Feature&lt;/code> is the first
&lt;code>ownedSubsetting&lt;/code> that is a &lt;code>ReferenceSubsetting&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="89c7630c-4f31-4cf7-aa3b-ce4add1cdd19" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedReferenceSubsetting =
    let referenceSubsettings : OrderedSet(ReferenceSubsetting) =
        ownedSubsetting->selectByKind(ReferenceSubsetting) in
    if referenceSubsettings->isEmpty() then null
    else referenceSubsettings->first() endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d0b6642d-7841-4e7e-9e93-eb4bd3a478fe" name="validateFeatureOwnedReferenceSubsetting" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="a65daccf-c39a-46c2-a3a1-0737fa09717d" annotatedElement="d0b6642d-7841-4e7e-9e93-eb4bd3a478fe">
            <body>&lt;p>A &lt;code>Feature&lt;/code> must have at most one &lt;code>ownedSubsetting&lt;/code> that is an &lt;code>ReferenceSubsetting&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1bcb7f64-509f-49fd-9b92-a8eb64ab6fb2" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSubsetting->selectByKind(ReferenceSubsetting)->size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d3fbae12-534a-46cd-9b8d-73d7d25c052c" name="validateFeatureChainingFeatureConformance" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="906ac1b6-c5a0-43b3-ab20-e15ae5760940" annotatedElement="d3fbae12-534a-46cd-9b8d-73d7d25c052c">
            <body>Each &lt;code>chainingFeature&lt;/code> (other than the last) must conform to all the &lt;code>featuringTypes&lt;/code> of the next &lt;code>Feature&lt;/code> in the chain.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="88b603ce-bd80-43ec-94de-a3d914cf0d24" name="" visibility="public">
            <language>OCL2.0</language>
            <body>Sequence{1..chainingFeature->size() - 1}->forAll(i |
    chainingFeature->at(i + 1).featuringType->forAll(t | 
        chainingFeature->at(i).specializes(t)))
</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="734a0415-9f6e-4db7-9b52-b41478624a21" name="checkFeaturePortionSpecialization" visibility="public" constrainedElement="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
          <ownedComment xmi:id="3d2b9e8f-501c-4971-9050-7833235a7ab7" annotatedElement="734a0415-9f6e-4db7-9b52-b41478624a21">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> has &lt;code>isPortion = true&lt;/code>, an &lt;code>ownedTyping &lt;/code> relationship to a &lt;code>Class&lt;/code>, and an &lt;code>owningType&lt;/code> that is a &lt;code>Class&lt;/code> or another &lt;code>Feature&lt;/code> typed by a &lt;code>Class&lt;/code>, then it must directly or indirectly specialize &lt;em>&lt;code>Occurrences::Occurrence::portions&lt;/code>&lt;/em> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b7c6fbf3-d7d6-410a-be22-990f79c7a58f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isPortion and
ownedTyping.type->includes(oclIsKindOf(Class)) and
owningType &lt;> null and
(owningType.oclIsKindOf(Class) or
 owningType.oclIsKindOf(Feature) and
    owningType.oclAsType(Feature).type->
        exists(oclIsKindOf(Class))) implies
    specializesFromLibrary('Occurrence::Occurrence::portions')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="2ff35416-e202-4e77-93f4-48f8969891e3" general="a32ae34b-57c2-4f49-832c-00f8741d55e7"/>
        <ownedAttribute xmi:id="2a12de05-aa4b-4bc9-8eae-467829b67416" name="owningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b 934985ee-d247-42fc-8106-101a5b3ebacb c8436944-a5b8-41ca-80ef-195006f600a8" association="10fc25f2-a27b-4705-b87c-fe107262f5cd">
          <ownedComment xmi:id="c8036438-44fe-46f0-955d-39f1fe00514c" annotatedElement="2a12de05-aa4b-4bc9-8eae-467829b67416">
            <body>&lt;p>The &lt;code>Type&lt;/code> that is the &lt;code>owningType&lt;/code> of the &lt;code>owningFeatureMembership&lt;/code> of this &lt;code>Feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1a377a34-00d6-4f66-9ba4-7eeeae55b8c8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9d170626-2f38-4a13-adfa-60b7f0586951" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="a74e590e-8750-4378-a370-f6e196b41fc2" name="isUnique" visibility="public">
          <ownedComment xmi:id="4ecb8856-153d-4b03-903c-ef585ab94a2d" annotatedElement="a74e590e-8750-4378-a370-f6e196b41fc2">
            <body>&lt;p>Whether or not values for this &lt;code>Feature&lt;/code> must have no duplicates or not.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="8fa71477-b22a-4c51-a694-f90b78f2cefb" name="" visibility="public" value="true"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="64e2167d-05dc-49ab-a30b-befdbe17c100" name="isOrdered" visibility="public">
          <ownedComment xmi:id="e980b2e1-cc9b-4947-9705-19c14701e2fc" annotatedElement="64e2167d-05dc-49ab-a30b-befdbe17c100">
            <body>&lt;p>Whether an order exists for the values of this &lt;code>Feature&lt;/code> or not.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="aba7a298-019b-45fb-999f-d1a8e89a9373" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="2dd9a8a5-bc46-421d-bc22-89f91e4b6ffe" name="type" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isOrdered="true" isDerived="true" association="d473ad7b-ce6b-440e-b5d3-bf931e18b69d">
          <ownedComment xmi:id="ae9217f1-3781-4bd0-9a9e-a716bd3e32c6" annotatedElement="2dd9a8a5-bc46-421d-bc22-89f91e4b6ffe">
            <body>&lt;p>&lt;code>Types&lt;/code> that restrict the values of this &lt;code>Feature&lt;/code>, such that the values must be instances of all the &lt;code>types&lt;/code>. The types of a &lt;code>Feature&lt;/code> are derived from its &lt;code>typings&lt;/code> and the &lt;code>types&lt;/code> of its &lt;code>subsettings&lt;/code>. If the &lt;code>Feature&lt;/code> is chained, then the &lt;code>types&lt;/code> of the last &lt;code>Feature&lt;/code> in the chain are also &lt;code>types&lt;/code> of the chained &lt;code>Feature&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6cb7e382-72db-4d75-b233-a9cd19e22998" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="eee90a73-9bc6-4081-b666-43c9e7ee3f4d" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="82497c64-3237-4c23-bb78-9bb9d1eaf8f0" name="ownedRedefinition" visibility="public" type="df9c1df6-7aa0-41af-8adb-8cdd7a47738f" aggregation="composite" isDerived="true" subsettedProperty="24acf8ee-a922-4e2d-b75f-ea635fac57e8" association="18b8f240-fdab-4cfa-93f6-c3a16f8a427e">
          <ownedComment xmi:id="7da5cb22-f059-4d29-bc63-9fbaee9006c3" annotatedElement="82497c64-3237-4c23-bb78-9bb9d1eaf8f0">
            <body>&lt;p>The &lt;code>ownedSubsettings&lt;/code> of this &lt;code>Feature&lt;/code> that are &lt;code>Redefinitions&lt;/code>, for which the &lt;code>Feature&lt;/code> is the &lt;code>redefiningFeature&lt;/code>.&lt;/p>

</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2dbb7c18-68e0-4f86-8c90-a1955c907f60" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f1a3ae06-a924-49d0-8bc1-5c604e8724f3" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="24acf8ee-a922-4e2d-b75f-ea635fac57e8" name="ownedSubsetting" visibility="public" type="a26821f8-6af3-42a0-9043-03c372464172" aggregation="composite" isDerived="true" subsettedProperty="7746c947-3bd4-4cb9-98b7-cc9dddda5261 6d6998e4-39fd-4d6d-b2c3-96c1d403f6fe" association="69548ce0-04cf-4419-84d5-ecf8e6543eda">
          <ownedComment xmi:id="05cdcbfb-727f-46c2-a2eb-3aa5de9398e2" annotatedElement="24acf8ee-a922-4e2d-b75f-ea635fac57e8">
            <body>&lt;p>The &lt;code>ownedSpecializations&lt;/code> of this &lt;code>Feature&lt;/code> that are &lt;code>Subsettings&lt;/code>, for which the &lt;code>Feature&lt;/code> is the &lt;code>subsettingFeature&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="302668e3-af65-47ed-b208-bb4542f80e6b" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3d00ad30-88d8-47d3-b2c8-d001255cfa04" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b79a7d91-99ab-4372-8103-af57f85ad3a1" name="owningFeatureMembership" visibility="public" type="10189040-993c-4d64-aacf-0d99b558af68" isDerived="true" subsettedProperty="8763ebb8-6a3d-45b3-b628-966dc39fbb40 bffacdf5-2f73-400c-b0d6-0aaacb177f4f" association="2b5fa6a3-5aa7-453a-a026-7934e87e5711">
          <ownedComment xmi:id="336f92b8-2450-4bc3-8b18-f1b55c5bf461" annotatedElement="b79a7d91-99ab-4372-8103-af57f85ad3a1">
            <body>&lt;p>The &lt;code>FeatureMembership&lt;/code> that owns this &lt;code>Feature&lt;/code> as an &lt;code>ownedMemberFeature&lt;/code>, determining its &lt;code>owningType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f55b14b6-f146-4f50-81c8-9a2ddacc0417" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0b9be809-6281-46ac-924b-a1356f33be16" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5c603204-888c-435b-980f-5b21617df027" name="isComposite" visibility="public">
          <ownedComment xmi:id="ea175e7a-7d33-4655-b2ad-d97b38506b92" annotatedElement="5c603204-888c-435b-980f-5b21617df027">
            <body>&lt;p>Whether the &lt;code>Feature&lt;/code> is a composite &lt;code>feature&lt;/code> of its &lt;code>featuringType&lt;/code>. If so, the values of the &lt;code>Feature&lt;/code> cannot exist after its featuring instance no longer does.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="dd1e022a-94fc-4445-a369-209156b32ba5" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="7106639b-7eaa-43c0-9f16-3ee22064145c" name="isEnd" visibility="public">
          <ownedComment xmi:id="c09dba39-e0d8-449f-87e4-53e3e4dfc825" annotatedElement="7106639b-7eaa-43c0-9f16-3ee22064145c">
            <body>&lt;p>Whether or not the this &lt;code>Feature&lt;/code> is an end &lt;code>Feature&lt;/code>, requiring a different interpretation of the &lt;code>multiplicity&lt;/code> of the &lt;code>Feature&lt;/code>.&lt;/p>

&lt;p>An end &lt;code>Feature&lt;/code> is always considered to map each domain instance to a single co-domain instance, whether or not a &lt;code>Multiplicity&lt;/code> is given for it. If a &lt;code>Multiplicity&lt;/code> is given for an end &lt;code>Feature&lt;/code>, rather than giving the co-domain cardinality for the &lt;code>Feature&lt;/code> as usual, it specifies a cardinality constraint for &lt;em>navigating&lt;/em> across the &lt;code>endFeatures&lt;/code> of the &lt;code>featuringType&lt;/code> of the end &lt;code>Feature&lt;/code>. That is, if a &lt;code>Type&lt;/code> has &lt;em>n&lt;/em> &lt;code>endFeatures&lt;/code>, then the &lt;code>Multiplicity&lt;/code> of any one of those end &lt;code>Features&lt;/code> constrains the cardinality of the set of values of that &lt;code>Feature&lt;/code> when the values of the other &lt;em>n-1&lt;/em> end &lt;code>Features&lt;/code> are held fixed.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="963ecbbe-f7ce-4335-9098-5e34bbdad664" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="da436a76-d30f-483b-94e9-da9e631dcf18" name="endOwningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="f685dfe3-4bd5-4bd3-a995-151ae1143ba7 2a12de05-aa4b-4bc9-8eae-467829b67416" association="80acb01e-92c0-408c-8b9d-78a1a1c6899e">
          <ownedComment xmi:id="97533262-0e86-48b5-a9f8-a116ff251edf" annotatedElement="da436a76-d30f-483b-94e9-da9e631dcf18">
            <body>&lt;p>The &lt;code>Type&lt;/code> that is related to this &lt;code>Feature&lt;/code> by an &lt;code>EndFeatureMembership&lt;/code> in which the &lt;code>Feature&lt;/code> is an &lt;code>ownedMemberFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6602c846-7641-49fe-b327-f1d8b372fbf7" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8cfe6b81-7101-44c3-9108-cd7b7ad68a57" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ba9a36c8-55d6-422c-a252-f2c24ba2c4bc" name="ownedTyping" visibility="public" type="0f0dd69d-e01b-4231-a0b5-c797c6bfc142" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="7746c947-3bd4-4cb9-98b7-cc9dddda5261 127026ea-deda-4910-8e9f-9bce075926c2" association="75618461-70af-4a89-a5e6-fdc26447c8f5">
          <ownedComment xmi:id="70846a6e-cccf-4bcf-ace3-f75daf1f1745" annotatedElement="ba9a36c8-55d6-422c-a252-f2c24ba2c4bc">
            <body>&lt;p>The &lt;code>ownedSpecializations&lt;/code> of this &lt;code>Feature&lt;/code> that are &lt;code>FeatureTypings&lt;/code>, for which the &lt;code>Feature&lt;/code> is the &lt;code>typedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="138cff2b-5fa7-4548-b7e7-a0f59680658e" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7c9b1223-d2b7-4e33-bc61-ff2e08887512" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="c8436944-a5b8-41ca-80ef-195006f600a8" name="featuringType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isOrdered="true" isDerived="true" association="60fb475c-7b5a-4999-9f7a-f519136c7326">
          <ownedComment xmi:id="9fee8314-0db2-4117-874b-a803f8af1fb2" annotatedElement="c8436944-a5b8-41ca-80ef-195006f600a8">
            <body>&lt;p>&lt;code>Types&lt;/code> that feature this &lt;code>Feature&lt;/code>, such that any instance in the domain of the &lt;code>Feature&lt;/code> must be classified by all of these &lt;code>Types&lt;/code>, including at least all the &lt;code>featuringTypes&lt;/code> of its &lt;code>typeFeaturings&lt;/code>.  If the &lt;code>Feature&lt;/code> is chained, then the &lt;code>featuringTypes&lt;/code> of the first &lt;code>Feature&lt;/code> in the chain are also &lt;code>featuringTypes&lt;/code> of the chained &lt;code>Feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9fe77fca-1284-421d-b27a-676544b1cbfc" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="74913b38-5526-4fbc-97df-a3efcc1b2f7c" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="a2cb0eed-78bd-4eca-aa1e-78ca8d8e9868" name="ownedTypeFeaturing" visibility="public" type="f6581ab1-844e-4f0b-b4da-8f9eb207fec0" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 147fe6bb-e3ac-450b-8bc0-24c0406ba49b" association="36c1e905-1adf-4e35-8a1c-a00f389066aa">
          <ownedComment xmi:id="ed96e735-c246-40f4-83c7-a10a8cc74069" annotatedElement="a2cb0eed-78bd-4eca-aa1e-78ca8d8e9868">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Feature&lt;/code> that are &lt;code>TypeFeaturings&lt;/code> and for which the &lt;code>Feature&lt;/code> is the &lt;code>featureOfType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="28fedd96-aa63-48d6-8457-0ec139cf2d93" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="da58a870-bc1d-4cbc-a356-e2a11d7a91e8" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fb250937-23af-4b97-afc5-aedb5f2734f6" name="isDerived" visibility="public">
          <ownedComment xmi:id="9f18bdab-206d-4a84-9c23-743fdc745bb4" annotatedElement="fb250937-23af-4b97-afc5-aedb5f2734f6">
            <body>&lt;p>Whether the values of this &lt;code>Feature&lt;/code> can always be computed from the values of other &lt;code>Features&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="bbef26ff-ad30-4463-b84c-362748f80fd1" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="cfa42988-6a5a-44e5-9d11-d9bec4fd5774" name="chainingFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isUnique="false" isDerived="true" association="9bb6daf3-e396-4fc1-95fb-70c077ddd883">
          <ownedComment xmi:id="b1761de4-383b-46c3-9097-c5089b2b964f" annotatedElement="cfa42988-6a5a-44e5-9d11-d9bec4fd5774">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that are chained together to determine the values of this &lt;code>Feature&lt;/code>, derived from the &lt;code>chainingFeatures&lt;/code> of the &lt;code>ownedFeatureChainings&lt;/code> of this &lt;code>Feature&lt;/code>, in the same order. The values of a &lt;code>Feature&lt;/code> with &lt;code>chainingFeatures&lt;/code> are the same as values of the last &lt;code>Feature&lt;/code> in the chain, which can be found by starting with the values of the first &lt;code>Feature&lt;/code> (for each instance of the domain of the original &lt;code>Feature&lt;/code>), then using each of those as domain instances to find the values of the second &lt;code>Feature&lt;/code> in chainingFeatures, and so on, to values of the last &lt;code>Feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3a24bcdf-72a7-4369-adee-b87b6aebe524" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="46767663-eeb6-4d7f-8204-71bb54a5f96e" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e9b3d5a9-b17d-42fc-88ef-c71f5857fcd6" name="ownedFeatureInverting" visibility="public" type="19742ae9-e925-4fec-99cb-fcf43a063039" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 6fb1d0b2-adeb-43d6-9c2e-98697718f9b9" association="779ac43f-1300-49d5-81ad-33c147f4baaa">
          <ownedComment xmi:id="d173f352-dc28-4759-9527-7a2cb2033e66" annotatedElement="e9b3d5a9-b17d-42fc-88ef-c71f5857fcd6">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Feature&lt;/code> that are &lt;code>FeatureInvertings&lt;/code> and for which the &lt;code>Feature&lt;/code> is the &lt;code>featureInverted&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9a5ca735-175b-493e-8e54-11263983a746" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c4294709-bfcd-455d-a5bf-eac299188fe7" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="92df3ab0-2f9a-4c05-9606-1be680a6f67a" name="ownedFeatureChaining" visibility="public" type="7d79e5c0-21de-4f7b-999a-1896854037ca" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874 9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" association="5ac5d620-4e67-4bf2-9282-b6cbebbb8d12">
          <ownedComment xmi:id="85cd6e52-9aac-496d-88eb-710970612231" annotatedElement="92df3ab0-2f9a-4c05-9606-1be680a6f67a">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Feature&lt;/code> that are &lt;code>FeatureChainings&lt;/code>, for which the &lt;code>Feature&lt;/code> will be the &lt;code>featureChained&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b8454222-6fc9-4fae-94dd-5f21ef2cf15e" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="bfa193c8-6487-48eb-b841-cf0820e6d016" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="4aad3e9c-a931-4bef-9d81-a7650840ce2f" name="isReadOnly" visibility="public">
          <ownedComment xmi:id="9b20770e-7baf-4d27-bc45-cf8a7f7104ff" annotatedElement="4aad3e9c-a931-4bef-9d81-a7650840ce2f">
            <body>&lt;p>Whether the values of this &lt;code>Feature&lt;/code> can change over the lifetime of an instance of the domain.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="29d4eeda-f668-4959-a8cf-86602db3a802" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ecaa2470-9287-4437-809a-38d344328298" name="isPortion" visibility="public">
          <ownedComment xmi:id="0131d110-77f3-472c-9e71-d203211ec15a" annotatedElement="ecaa2470-9287-4437-809a-38d344328298">
            <body>&lt;p>Whether the values of this &lt;code>Feature&lt;/code> are contained in the space and time of instances of the domain of the &lt;code>Feature&lt;/code> and represent the same thing as those instances.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="13e81b2f-9e49-4f04-a695-9cf7a01ba028" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="223be62d-afd1-4955-b258-78902bbc83e8" name="direction" visibility="public" type="7afbde11-a8e1-455f-bbec-22a4e1f5b814">
          <ownedComment xmi:id="1cb6a0d0-89fd-4261-aa47-2ab08e0482b7" annotatedElement="223be62d-afd1-4955-b258-78902bbc83e8">
            <body>&lt;p>Indicates how values of this &lt;code>Feature&lt;/code> are determined or used (as specified for the &lt;code>FeatureDirectionKind&lt;/code>).&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="edab3155-77f2-4abb-9392-85126723b333" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="4d1333f2-3819-4fa3-a9c6-d512ce6b9ff7" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b0433961-5933-432e-ac02-c6f2f849e579" name="ownedReferenceSubsetting" visibility="public" type="cce96e86-0574-4396-8c05-e7160bb4707a" aggregation="composite" isDerived="true" subsettedProperty="24acf8ee-a922-4e2d-b75f-ea635fac57e8" association="6270bb5e-4abe-46ee-82d1-c306bc063932">
          <ownedComment xmi:id="a61017a0-b24d-48bc-aa75-9868dcbcb1fe" annotatedElement="b0433961-5933-432e-ac02-c6f2f849e579">
            <body>&lt;p>The one &lt;code>ownedSubsetting&lt;/code> of this &lt;code>Feature&lt;/code>, if any, that is a &lt;code>ReferenceSubsetting&lt;/code>, for which the &lt;code>Feature&lt;/code> is the &lt;code>referencingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="39928fb4-bf96-470a-9e4e-d5b66e4bf136" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="429f1710-b80e-44e4-83e1-23f8c9e89c9c" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="62627ba2-400d-4ce1-aa00-5510fe5ce0fc" name="directionFor" visibility="public" bodyCondition="40a9a558-173b-4b45-abf0-818148e07abd">
          <ownedComment xmi:id="f2427503-74a6-4dbe-835a-19283c87d172" annotatedElement="62627ba2-400d-4ce1-aa00-5510fe5ce0fc">
            <body>&lt;p>Return the &lt;code>directionOf&lt;/code> this &lt;code>Feature&lt;/code> relative to the given &lt;code>type&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="40a9a558-173b-4b45-abf0-818148e07abd" name="directionForBody" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="780c70f9-c606-4065-a935-2727404c45c1" name="" visibility="public">
              <language>OCL2.0</language>
              <body>type.directionOf(self)</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="a4eac5de-5763-4164-9d12-d9bc84685223" name="type" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7"/>
          <ownedParameter xmi:id="944292dc-36c9-410c-af41-bc3bd775ce98" name="" visibility="public" type="7afbde11-a8e1-455f-bbec-22a4e1f5b814" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cb0059f1-57b4-4a7a-bb37-754aa7dbf67f" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3c30ccfc-6fb9-4b3c-9b35-08975bed3693" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="bf6048fe-1e9f-4f63-9b0a-19c789aedb76" name="isFeaturedWithin" visibility="public" bodyCondition="1fbd983b-eba8-4977-80f0-b481e79e5cbe">
          <ownedComment xmi:id="768578c9-1e87-4491-a1f6-ec03776e4c66" annotatedElement="bf6048fe-1e9f-4f63-9b0a-19c789aedb76">
            <body>&lt;p>Return whether this &lt;code>Feature&lt;/code> has the given &lt;code>type&lt;/code> as a direct or indirect &lt;code>featuringType&lt;/code>. If &lt;code>type&lt;/code> is null, then check if this &lt;code>Feature&lt;/code> is explicitly or implicitly featured by &lt;em>&lt;code>Base::Anything&lt;/code>&lt;/em>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="1fbd983b-eba8-4977-80f0-b481e79e5cbe" name="isFeaturedWithIn_Body" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="f5f5d009-cf73-4ebd-bf8b-188a916e9266" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if type = null then 
    featuringType->isEmpty() or
    featuringType=Sequence{resolveGlobal('Base::Anything').memberElement)}
else 
    featuringType->notEmpty() and
    featuringType->forAll(f | type.specializes(f)))
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="772af689-b7a6-4fbc-8af7-a4606d5ca6d6" name="type" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1e8d0d68-ef17-4a2e-bea4-837b2a3e9274" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="dffca58d-c985-460c-961c-3e55cb76eb1b" name="" visibility="public" value="1"/>
          </ownedParameter>
          <ownedParameter xmi:id="af444af5-ceea-4870-bce2-959a8b17db92" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="f7e76e27-651b-418d-aae5-4b90fadaf532" name="effectiveShortName" visibility="public" bodyCondition="1ae7f2be-1b01-487a-bd0f-87d856b8c1a0" redefinedOperation="7d531104-d30d-4e41-8c70-e8877dddb956">
          <ownedComment xmi:id="20562a43-d1cd-4d88-a59e-7fcf099b79ee" annotatedElement="f7e76e27-651b-418d-aae5-4b90fadaf532">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> has no &lt;code>declaredShortName&lt;/code> or &lt;code>declaredName&lt;/code>, then its effective &lt;code>shortName&lt;/code> is given by the effective &lt;code>shortName&lt;/code> of the &lt;code>Feature&lt;/code> returned by the &lt;code>namingFeature()&lt;/code> operation, if any.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="1ae7f2be-1b01-487a-bd0f-87d856b8c1a0" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="00f53158-90a9-488d-b41c-33bbf666b46e" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if declaredShortName &lt;> null or declaredName &lt;> null then
    declaredShortName
else
    let namingFeature : Feature = namingFeature() in
    if namingFeature = null then
        null
    else
        namingFeature.effectiveShortName()
    endif
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="dae26d08-d2c6-4eab-82fb-b35a0c893292" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b8a868a0-888f-4737-a1f3-f21375d98c8d" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="04c9de11-4e92-4074-b150-bce6d9d08bec" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="ae2ceccb-90e4-4e36-992e-36a9f303a1a8" name="effectiveName" visibility="public" bodyCondition="947297e2-0c11-4467-93cc-14d9a51953af" redefinedOperation="c6dbe7ea-4c15-4609-bcb9-f18d6e970b79">
          <ownedComment xmi:id="5b194ae5-278f-4c25-95a9-2839a020bd20" annotatedElement="ae2ceccb-90e4-4e36-992e-36a9f303a1a8">
            <body>&lt;p>If a &lt;code>Feature&lt;/code> has no &lt;code>declaredName&lt;/code> or &lt;code>declaredShortName&lt;/code>
, then its effective &lt;code>name&lt;/code> is given by the effective &lt;code>name&lt;/code> of the &lt;code>Feature&lt;/code> returned by the &lt;code>namingFeature()&lt;/code> operation, if any.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="947297e2-0c11-4467-93cc-14d9a51953af" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="5b5fe8e5-d69d-40a6-8108-76f8e1e7e442" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if declaredShortName &lt;> null or declaredName &lt;> null then
    declaredName
else
    let namingFeature : Feature = namingFeature() in
    if namingFeature = null then
        null
    else
        namingFeature.effectiveName()
    endif
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="fff7b297-02e9-4007-867f-d43af588889b" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="67c81ed5-36b6-4164-8308-386d270eecec" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="6703f391-1f91-475b-8ffe-b677219e3240" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="ba2bb40d-dd37-4d29-872d-349570953c58" name="namingFeature" visibility="public" bodyCondition="41f1bbcb-40bb-4eff-ba45-150b953be41b">
          <ownedComment xmi:id="d3c08129-33a5-4bde-af0d-2709d76dffe0" annotatedElement="ba2bb40d-dd37-4d29-872d-349570953c58">
            <body>&lt;p>By default, the naming &lt;code>Feature&lt;/code> of a &lt;code>Feature&lt;/code> is given by its first &lt;code>redefinedFeature&lt;/code> of its first &lt;code>ownedRedefinition&lt;/code>, if any.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="41f1bbcb-40bb-4eff-ba45-150b953be41b" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="9a3af6b6-58ec-454e-ba2a-bc9e7fc58177" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if ownedRedefinition->isEmpty() then
    null
else
    ownedRedefinition->at(1).redefinedFeature
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="4c72bbf3-833e-4df4-b784-613fa3daebe7" name="" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f52caf66-57c7-49e5-829c-6edc62bcfe4e" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e70c6ca0-6f94-4ab2-b5f6-1937e61bcd4d" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="df786343-9d6b-48c9-b6ab-b37397a1c3b7" name="redefines" visibility="public" bodyCondition="55aa463a-a2f8-45cb-9ddd-2cc77f930b7f">
          <ownedComment xmi:id="96c4d1ce-a369-4091-a9da-25f94f9a9af5" annotatedElement="df786343-9d6b-48c9-b6ab-b37397a1c3b7">
            <body>&lt;p>Check whether this &lt;code>Feature&lt;/code> &lt;em>directly&lt;/em> redefines the given &lt;code>redefinedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="55aa463a-a2f8-45cb-9ddd-2cc77f930b7f" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="ac4702c8-7a3f-4209-9a39-79d7c369c045" name="" visibility="public">
              <language>OCL2.0</language>
              <body>ownedRedefinition.redefinedFeature->includes(redefinedFeature)</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="96b01319-97c6-4f3c-b444-183b64c7e878" name="redefinedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
          <ownedParameter xmi:id="d36b14d5-dfe7-45a8-ac0a-9839e2b3cf5f" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="8b939ede-464e-40a1-808e-b5d7a0ef7228" name="redefinesFromLibrary" visibility="public" bodyCondition="18ef4c62-f3ab-4529-8f07-fcce0ca4b907">
          <ownedComment xmi:id="6d2420d8-0d44-4e69-8360-de67eb045a06" annotatedElement="8b939ede-464e-40a1-808e-b5d7a0ef7228">
            <body>&lt;p>Check whether this &lt;code>Feature&lt;/code> &lt;em>directly&lt;/em> redefines the named library &lt;code>Feature&lt;/code>. &lt;code>libraryFeatureName&lt;/code> must conform to the syntax of a KerML qualified name and must resolve to a &lt;code>Feature&lt;/code> in global scope.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="18ef4c62-f3ab-4529-8f07-fcce0ca4b907" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="dd8f86c8-49c8-47c7-80e7-88829dec05de" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let mem: Membership = resolveGlobal(libraryFeatureName) in
mem &lt;> null and mem.memberElement.oclIsKindOf(Feature) and
redefines(mem.memberElement.oclAsType(Feature))</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="71086c46-3724-4c6b-85ff-6c1ab8d84168" name="libraryFeatureName" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="59b21c2b-ae89-4e23-8613-5807691f22aa" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="b783ac3c-a255-41e9-a253-a8d738d45e1b" name="subsetsChain" visibility="public" bodyCondition="44be231b-3582-45da-803b-12c186574a3a">
          <ownedComment xmi:id="20858e04-828b-4c4f-8fd5-7c71ec34aa7d" annotatedElement="b783ac3c-a255-41e9-a253-a8d738d45e1b">
            <body>&lt;p>Check whether this &lt;code>Feature&lt;/code> directly or indirectly specializes a &lt;code>Feature&lt;/code> whose last two &lt;code>chainingFeatures&lt;/code> are the given &lt;code>Features&lt;/code> &lt;code>first&lt;/code> and &lt;code>second&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="44be231b-3582-45da-803b-12c186574a3a" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="0cc7b834-2b2f-45f1-99bb-12a6ab000297" name="" visibility="public">
              <language>OCL2.0</language>
              <body>allSuperTypes()->selectAsKind(Feature)->
    exists(f | let n: Integer = f.chainingFeature->size() in
        n >= 2 and
        f.chainingFeature->at(n-1) = first and
        f.chainingFeature->at(n) = second)</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="56ebd0a6-10f9-44a2-b083-5c5a56d5957d" name="first" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
          <ownedParameter xmi:id="53aca91a-763a-401f-828f-e480f10537c7" name="second" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
          <ownedParameter xmi:id="77978b26-5326-471d-a181-9e024cf9e632" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="43a26f3f-ea82-488e-a0bc-904e16ed9c5e" name="typingFeatures" visibility="public" bodyCondition="3baa429e-0255-4f08-8c83-2a14bd084a1b">
          <ownedComment xmi:id="44a7b1ba-c0ab-40ce-a72a-4ce4bd05c0b9" annotatedElement="43a26f3f-ea82-488e-a0bc-904e16ed9c5e">
            <body>&lt;p>Return the &lt;code>Features&lt;/code> used to determine the &lt;code>types&lt;/code> of this &lt;code>Feature&lt;/code> (other than this &lt;code>Feature&lt;/code> itself), consisting of all subsetted &lt;code>Features&lt;/code> and the last &lt;code>chainingFeature&lt;/code> (if any), if this &lt;code>Feature&lt;/code> is not conjugated, or its &lt;code>originalType&lt;/code>, if it is conjugated (and the &lt;code>originalType&lt;/code> is a &lt;code>Feature&lt;/code>).&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="3baa429e-0255-4f08-8c83-2a14bd084a1b" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="3aee8722-65f6-4984-9b1a-538a138479e9" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if not isConjugated then
    let subsettedFeatures : OrderedSet(Feature) = subsetting.subsettedFeatures in 
    if chainingFeature->isEmpty() or
       subsettedFeature->includes(chainingFeature->last())
    then subsettedFeatures
    else subsettedFeatures->append(chainingFeature->last())
    endif
else if conjugator.originalType.oclIsKindOf(Feature) then
    OrderedSet{conjugator.originalType.oclAsType(Feature)}
else OrderedSet{}
endif endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="0f98df1a-cf43-4cf4-8bbc-f14949879841" name="" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="15d9b3fb-aab3-46e4-99ac-a34d1dd66566" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="dda009bc-249d-411d-a60c-1f121069e018" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="0f0dd69d-e01b-4231-a0b5-c797c6bfc142" name="FeatureTyping" visibility="public">
        <ownedComment xmi:id="3bc4ac95-57df-4d0d-8641-20ad17ffdcae" annotatedElement="0f0dd69d-e01b-4231-a0b5-c797c6bfc142">
          <body>&lt;p>&lt;code>FeatureTyping&lt;/code> is &lt;code>Specialization&lt;/code> in which the &lt;code>specific&lt;/code> &lt;code>Type&lt;/code> is a &lt;code>Feature&lt;/code>. This means the set of instances of the (specific) &lt;code>typedFeature&lt;/code> is a subset of the set of instances of the (general) &lt;code>type&lt;/code>. In the simplest case, the &lt;code>type&lt;/code> is a &lt;code>Classifier&lt;/code>, whereupon the &lt;code>typedFeature&lt;/code> has values that are instances of the &lt;code>Classifier&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="1ee2e33f-6512-45c4-8949-cb7a8d55c10c" general="d0bbaddc-004a-4559-b707-31bbc0d7c7e9"/>
        <ownedAttribute xmi:id="933b0b76-a63b-4055-98d6-73d1153f9064" name="typedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="f45c204e-a88a-4382-9701-ccc842d4a68a" association="b5bd62ea-d436-4305-b80b-1eb051316016">
          <ownedComment xmi:id="7c3083b9-073c-4014-a2a6-62f3b37014fb" annotatedElement="933b0b76-a63b-4055-98d6-73d1153f9064">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that has a &lt;code>type&lt;/code> determined by this &lt;code>FeatureTyping&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="302a4ece-977b-4aa7-a360-6aba3dbeaf3d" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="dfece4d4-722f-4229-9e6d-0eb2056dcdd1" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="637be91d-677d-4da1-a97e-6946c1b89889" name="type" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="6dd5c0f9-10e8-4361-90d4-723016f969f5" association="3d223887-90ae-4731-8d89-60a4bec5fd09">
          <ownedComment xmi:id="1f0c3f4c-f02e-453b-b514-24a1998dec30" annotatedElement="637be91d-677d-4da1-a97e-6946c1b89889">
            <body>&lt;p>The &lt;code>Type&lt;/code> that is being applied by this &lt;code>FeatureTyping&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="438fb2ed-f213-48ea-b1da-395fd51623d5" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b57e00ba-f81a-4da4-8b87-125104fa88e3" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="73c7f9ef-d8cf-4eb5-a2d6-86f3ddf9dd39" name="owningFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" redefinedProperty="adeb1ff1-cb20-496c-b832-6ae775e10fd9" subsettedProperty="933b0b76-a63b-4055-98d6-73d1153f9064" association="75618461-70af-4a89-a5e6-fdc26447c8f5">
          <ownedComment xmi:id="445eb131-e36f-4abc-bc79-8bcdc1b09740" annotatedElement="73c7f9ef-d8cf-4eb5-a2d6-86f3ddf9dd39">
            <body>&lt;p>A &lt;code>typedFeature&lt;/code> that is also the &lt;code>owningRelatedElement&lt;/code> of this &lt;code>FeatureTyping&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c1221227-9714-476e-993c-b1a4f2db9ee4" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="304a3f61-4f1a-46eb-8d35-00bcee2f9121" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="a26821f8-6af3-42a0-9043-03c372464172" name="Subsetting" visibility="public">
        <ownedComment xmi:id="9f88f724-8c6c-4209-8d8c-f5721d42245e" annotatedElement="a26821f8-6af3-42a0-9043-03c372464172">
          <body>&lt;p>&lt;code>Subsetting&lt;/code> is &lt;code>Specialization&lt;/code> in which the &lt;code>specific&lt;/code> and &lt;code>general&lt;/code> &lt;code>Types&lt;/code> are &lt;code>Features&lt;/code>. This means all values of the &lt;code>subsettingFeature&lt;/code> (on instances of its domain, i.e., the intersection of its &lt;code>featuringTypes&lt;/code>) are values of the &lt;code>subsettedFeature&lt;/code> on instances of its domain. To support this the domain of the &lt;code>subsettingFeature&lt;/code> must be the same or specialize (at least indirectly) the domain of the &lt;code>subsettedFeature&lt;/code> (via &lt;code>Specialization&lt;/code>), and the co-domain (intersection of the &lt;code>types&lt;/code>) of the &lt;code>subsettingFeature&lt;/code> must specialize the co-domain of the &lt;code>subsettedFeature&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="01f41404-f99a-4848-b1bb-7fa595e4cfdb" name="validateSubsettingFeaturingTypes" visibility="public" constrainedElement="a26821f8-6af3-42a0-9043-03c372464172">
          <ownedComment xmi:id="943d8137-679c-49e8-9272-a60b7e1afa97" annotatedElement="01f41404-f99a-4848-b1bb-7fa595e4cfdb">
            <body>&lt;p>For each &lt;code>featuringType&lt;/code> of the &lt;code>subsettedFeature&lt;/code> of a &lt;code>Subsetting&lt;/code>, there must be a &lt;code>featuringType&lt;/code> of the &lt;code>subsettingFeature&lt;/code> that conforms to it.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="70d2969d-7178-425e-a8ca-0a5f675040d7" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let subsettingFeaturingTypes: OrderedSet(Type) =
    subsettingFeature.featuringTypes in
let subsettedFeaturingTypes: OrderedSet(Type) =
    subsettedFeature.featuringTypes in
let anythingType: Element =
    subsettingFeature.resolveGlobal('Base::Anything').memberElement in 
subsettedFeaturingTypes->forAll(t |
    subsettingFeaturingTypes->isEmpty() and t = anythingType or
    subsettingFeaturingTypes->exists(specializes(t))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="812243ff-9df4-44e3-b669-35781ca08f1d" name="validateSubsettingUniquenessConformance" visibility="public" constrainedElement="a26821f8-6af3-42a0-9043-03c372464172">
          <ownedComment xmi:id="f19182e9-4a57-4060-8115-95ba61e0ca92" annotatedElement="812243ff-9df4-44e3-b669-35781ca08f1d">
            <body>&lt;p>If the &lt;code>subsettedFeature&lt;/code> of a &lt;code>Subsetting&lt;/code> has &lt;code>isUnique = true&lt;/code>, then the &lt;code>subsettedFeature&lt;/code> must have &lt;code>isUnique = true&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6cb3cfd6-8337-4306-a93c-f801e1aa1bd6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>subsettedFeature.isUnique implies subsettingFeature.isUnique</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="9de20578-a7c0-49c1-948a-cad22f60b12d" general="d0bbaddc-004a-4559-b707-31bbc0d7c7e9"/>
        <ownedAttribute xmi:id="b8bb3b86-cf2d-451e-b3c1-6a3aecac5aa4" name="subsettedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="6dd5c0f9-10e8-4361-90d4-723016f969f5" association="d865e0c6-7e0e-40b5-9cdb-7837aff5e52d">
          <ownedComment xmi:id="78f1b6b7-10b8-4429-93e3-ae467dfd093e" annotatedElement="b8bb3b86-cf2d-451e-b3c1-6a3aecac5aa4">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is subsetted by the &lt;code>subsettingFeature&lt;/code> of this &lt;code>Subsetting&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6e8f0c90-c156-4510-aa65-d56c7699125f" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5a221922-634a-4e21-a107-d3d5a7571caf" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="20d11fe1-16c0-41fb-8823-559ce4084ebf" name="subsettingFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="f45c204e-a88a-4382-9701-ccc842d4a68a" association="1c5d822b-b113-4187-ac38-df54b4709c15">
          <ownedComment xmi:id="9b93a43b-04a6-4c90-a55d-1925b32c24de" annotatedElement="20d11fe1-16c0-41fb-8823-559ce4084ebf">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is a subset of the &lt;code>subsettedFeature&lt;/code> of this &lt;code>Subsetting&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0c433550-e79d-4646-994a-002a21dd5b8b" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="26509ec0-a026-48cf-8fb8-503d5e15e4b0" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="43a01c3e-8273-4941-b616-2f8edcc0ac17" name="owningFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" redefinedProperty="adeb1ff1-cb20-496c-b832-6ae775e10fd9" subsettedProperty="20d11fe1-16c0-41fb-8823-559ce4084ebf" association="69548ce0-04cf-4419-84d5-ecf8e6543eda">
          <ownedComment xmi:id="0bd2af59-76df-44fb-90c2-028e8cc7de10" annotatedElement="43a01c3e-8273-4941-b616-2f8edcc0ac17">
            <body>&lt;p>A &lt;code>subsettingFeature&lt;/code> that is also the &lt;code>owningRelatedElement&lt;/code> of this &lt;code>Subsetting&lt;/code>.&lt;/p>

</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b3492b13-3fa3-497b-a9e8-d5397b3380b0" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="56b5e910-1584-4f96-a069-de1f500a03e2" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="ce1f43c5-a869-4ab0-9cae-d2e75015d9a8" name="A_redefiningFeature_redefinition" visibility="public" memberEnd="f5092d04-2553-4bcd-9c80-2e0e8d70d2fc 6c14a1fc-75af-49f0-9fb9-1b7a96407573">
        <ownedEnd xmi:id="6c14a1fc-75af-49f0-9fb9-1b7a96407573" name="redefinition" visibility="public" type="df9c1df6-7aa0-41af-8adb-8cdd7a47738f" subsettedProperty="6d6998e4-39fd-4d6d-b2c3-96c1d403f6fe" association="ce1f43c5-a869-4ab0-9cae-d2e75015d9a8">
          <ownedComment xmi:id="f711369a-1daa-4579-9d33-44a2fcd77248" annotatedElement="6c14a1fc-75af-49f0-9fb9-1b7a96407573">
            <body>&lt;p>The Redefinitions with a certain Feature as the &lt;code>redefiningFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="24d7c439-d249-4511-a41d-fbf43499744a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cef146a9-dac2-45dc-86f5-b1634bad357c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="69548ce0-04cf-4419-84d5-ecf8e6543eda" name="A_owningFeature_ownedSubsetting" visibility="public" memberEnd="43a01c3e-8273-4941-b616-2f8edcc0ac17 24acf8ee-a922-4e2d-b75f-ea635fac57e8"/>
      <packagedElement xmi:type="uml:Association" xmi:id="d865e0c6-7e0e-40b5-9cdb-7837aff5e52d" name="A_subsettedFeature_supersetting" visibility="public" memberEnd="b8bb3b86-cf2d-451e-b3c1-6a3aecac5aa4 8bb4ce6a-5088-4453-b5b6-d5a905d715f8">
        <ownedEnd xmi:id="8bb4ce6a-5088-4453-b5b6-d5a905d715f8" name="supersetting" visibility="public" type="a26821f8-6af3-42a0-9043-03c372464172" subsettedProperty="ec929050-eaf9-499b-b556-7d35cc53b50a" association="d865e0c6-7e0e-40b5-9cdb-7837aff5e52d">
          <ownedComment xmi:id="923a60f5-dc6e-4301-8945-6de760b56dca" annotatedElement="8bb4ce6a-5088-4453-b5b6-d5a905d715f8">
            <body>&lt;p>The Subsettings with a certain Feature as the &lt;code>subsettedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="66236b73-6bcd-47e1-b63a-729ee8b6c186" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d8e6255d-7f71-40cc-9128-eef455921c8c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="0a5a6716-28ab-4499-b986-845496e19c86" name="A_multiplicity_typeWithMultiplicity" visibility="public" memberEnd="63fd5eb9-e073-41d0-9eb1-6a1a003047a9 c095a671-20c5-484a-823a-948d9160faf3">
        <ownedEnd xmi:id="c095a671-20c5-484a-823a-948d9160faf3" name="typeWithMultiplicity" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2" association="0a5a6716-28ab-4499-b986-845496e19c86">
          <ownedComment xmi:id="0f6d6b35-c01e-4b0d-89da-29bc7d5a60f8" annotatedElement="c095a671-20c5-484a-823a-948d9160faf3">
            <body>&lt;p>A &lt;code>Type&lt;/code> that has the &lt;code>multiplicity&lt;/code> as an &lt;code>ownedMember&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c2efba31-3d3a-4b83-8243-ddc3fd1674ce" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="33ac2717-af97-4a9f-914a-435ba5da6a34" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="75618461-70af-4a89-a5e6-fdc26447c8f5" name="A_ownedTyping_owningFeature" visibility="public" memberEnd="ba9a36c8-55d6-422c-a252-f2c24ba2c4bc 73c7f9ef-d8cf-4eb5-a2d6-86f3ddf9dd39"/>
      <packagedElement xmi:type="uml:Association" xmi:id="65fabdcb-bb91-4292-a982-c7d453e3719c" name="A_featureOfType_typeFeaturing" visibility="public" memberEnd="02d8e7c6-f578-46e2-8b60-8f6781e3c76a 147fe6bb-e3ac-450b-8bc0-24c0406ba49b">
        <ownedEnd xmi:id="147fe6bb-e3ac-450b-8bc0-24c0406ba49b" name="typeFeaturing" visibility="public" type="f6581ab1-844e-4f0b-b4da-8f9eb207fec0" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874 bffacdf5-2f73-400c-b0d6-0aaacb177f4f" association="65fabdcb-bb91-4292-a982-c7d453e3719c">
          <ownedComment xmi:id="11470a4b-46ba-4583-a00f-fab935dca8ff" annotatedElement="147fe6bb-e3ac-450b-8bc0-24c0406ba49b">
            <body>&lt;p>The TypeFeaturings for which a certain Feature is the &lt;code>featureOfType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="fa524170-ea02-43b5-9ea1-108d6a5d5459" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cc7bed04-1723-4eac-ab0d-66abd3d34f83" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="60fb475c-7b5a-4999-9f7a-f519136c7326" name="A_featuringType_featureOfType" visibility="public" memberEnd="c8436944-a5b8-41ca-80ef-195006f600a8 b11857b8-e7d1-49fd-a7f2-7ed6d1d125db">
        <ownedEnd xmi:id="b11857b8-e7d1-49fd-a7f2-7ed6d1d125db" name="featureOfType" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" association="60fb475c-7b5a-4999-9f7a-f519136c7326">
          <ownedComment xmi:id="24c82cf6-a170-4f31-86ba-22b22c46e608" annotatedElement="b11857b8-e7d1-49fd-a7f2-7ed6d1d125db">
            <body>&lt;p>The Features for which a certain Type is a &lt;code>featuringType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="213be421-b475-47c8-93b6-5717cc4e832d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="efb9f5d4-188d-4c04-9942-4f565c2b8dee" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="f6581ab1-844e-4f0b-b4da-8f9eb207fec0" name="TypeFeaturing" visibility="public">
        <ownedComment xmi:id="e6e6bda2-08b1-470a-92ee-206f799eb280" annotatedElement="f6581ab1-844e-4f0b-b4da-8f9eb207fec0">
          <body>&lt;p>A &lt;code>TypeFeaturing&lt;/code> is a &lt;code>Featuring&lt;/code> &lt;code>Relationship&lt;/code> in which the &lt;code>featureOfType&lt;/code> is the &lt;code>source&lt;/code> and the &lt;code>featuringType&lt;/code> is the &lt;code>target&lt;/code>.&lt;/p></body>
        </ownedComment>
        <generalization xmi:id="b1fb9022-4792-460f-b92b-95c25a47228b" general="6b39d50b-0fa2-46c4-88e1-14ea53f05f8b"/>
        <ownedAttribute xmi:id="02d8e7c6-f578-46e2-8b60-8f6781e3c76a" name="featureOfType" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da e3585351-105e-4e50-9547-2974f25f09a4" association="65fabdcb-bb91-4292-a982-c7d453e3719c">
          <ownedComment xmi:id="cbc826d1-fcdb-4e70-b5d6-404afec4b778" annotatedElement="02d8e7c6-f578-46e2-8b60-8f6781e3c76a">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is featured by the &lt;code>featuringType&lt;/code>. It is the &lt;code>source&lt;/code> of the &lt;code>TypeFeaturing&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a15c1658-ecaf-45ba-b7af-59039fa49cb1" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b1d715e4-058f-4073-ab71-212ea04a7b48" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fd727563-b8f6-4727-b5a1-ec338e551951" name="featuringType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902 35ddd42a-b8a5-4ea6-b2d1-ab7d0a827a00" association="179470be-00ce-4f0e-bd4b-59ee89a8ffcd">
          <ownedComment xmi:id="8e312a68-bee0-452c-ba45-6d7919402c77" annotatedElement="fd727563-b8f6-4727-b5a1-ec338e551951">
            <body>&lt;p>The &lt;code>Type&lt;/code> that features the &lt;code>featureOfType&lt;/code>. It is the &lt;code>target&lt;/code> of the &lt;code>TypeFeaturing&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1a3f18dc-2784-4d63-b4d9-c29bea01525c" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d4ba7d40-fa77-459a-b165-189d74f4a751" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5b10450f-fcde-4a1a-8688-24625e1b6dd0" name="owningFeatureOfType" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="02d8e7c6-f578-46e2-8b60-8f6781e3c76a c81d146c-d738-40a0-ab80-8526beac3673" association="36c1e905-1adf-4e35-8a1c-a00f389066aa">
          <ownedComment xmi:id="1a7bb4be-ce5d-4543-810e-036c4eb5a319" annotatedElement="5b10450f-fcde-4a1a-8688-24625e1b6dd0">
            <body>&lt;p>A &lt;code>featureOfType&lt;/code> that is also the &lt;code>owningRelatedElement&lt;/code> of this &lt;code>TypeFeaturing&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8a969e8a-081c-4895-a940-bd903d4a96d7" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f100fdac-b2d5-4b40-b3e6-52a657825e2b" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="36c1e905-1adf-4e35-8a1c-a00f389066aa" name="A_ownedTypeFeaturing_owningFeatureOfType" visibility="public" memberEnd="a2cb0eed-78bd-4eca-aa1e-78ca8d8e9868 5b10450f-fcde-4a1a-8688-24625e1b6dd0"/>
      <packagedElement xmi:type="uml:Association" xmi:id="179470be-00ce-4f0e-bd4b-59ee89a8ffcd" name="A_featuringType_typeFeaturingOfType" visibility="public" memberEnd="fd727563-b8f6-4727-b5a1-ec338e551951 22d72efb-5461-4779-8d85-e97ea6cc7e26">
        <ownedEnd xmi:id="22d72efb-5461-4779-8d85-e97ea6cc7e26" name="typeFeaturingOfType" visibility="public" type="f6581ab1-844e-4f0b-b4da-8f9eb207fec0" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2 50ef422c-01b0-4c96-8fcf-d091fc26655a" association="179470be-00ce-4f0e-bd4b-59ee89a8ffcd">
          <ownedComment xmi:id="806cecac-5370-43c8-bffa-26daffa392bb" annotatedElement="22d72efb-5461-4779-8d85-e97ea6cc7e26">
            <body>&lt;p>The TypeFeaturings for which a certain Type is the &lt;code>featuringType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f118a4f3-4db8-4cb1-b1b8-facb9d8fbb5a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="14832956-4596-47d4-978c-69d68129e2a9" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="5ac5d620-4e67-4bf2-9282-b6cbebbb8d12" name="A_ownedFeatureChaining_featureChained" visibility="public" memberEnd="92df3ab0-2f9a-4c05-9606-1be680a6f67a ee3fb20e-db26-476c-817f-4ac6c72cf594"/>
      <packagedElement xmi:type="uml:Class" xmi:id="41db7b8e-d1e9-4982-afd7-3a4a86933540" name="EndFeatureMembership" visibility="public">
        <ownedComment xmi:id="1d692739-336c-4daa-a17e-ea47cce6a2c4" annotatedElement="41db7b8e-d1e9-4982-afd7-3a4a86933540">
          <body>&lt;p>&lt;code>EndFeatureMembership&lt;/code> is a &lt;code>FeatureMembership&lt;/code> that requires its &lt;code>memberFeature&lt;/code> be owned and have &lt;code>isEnd = true&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="b0837e79-46a1-4375-8370-8243f2a7aff1" name="validateEndFeatureMembershipIsEnd" visibility="public" constrainedElement="41db7b8e-d1e9-4982-afd7-3a4a86933540">
          <ownedComment xmi:id="4bb97775-cbd9-423e-a783-ab0f71d6afa2" annotatedElement="b0837e79-46a1-4375-8370-8243f2a7aff1">
            <body>&lt;p>The &lt;code>ownedMemberFeature&lt;/code> of an &lt;code>EndFeatureMembership&lt;/code> must be an end &lt;code>Feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d16a43a3-e8d6-435c-997b-3144a8398430" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMemberFeature.isEnd</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="472bc272-c6d4-4188-81bf-6f71c3422eb1" general="10189040-993c-4d64-aacf-0d99b558af68"/>
        <ownedAttribute xmi:id="6f8c7cac-e36c-4a29-85c2-dda5538e2e05" name="ownedMemberFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" aggregation="composite" isDerived="true" redefinedProperty="6bf83eae-2d89-4ea9-8c7b-92d8ef26bfaa" association="501d2ac3-e424-4d29-bd58-e509e61f43b1">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="bd34073d-e227-463c-85a7-c2dd17a9f61e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="691074bd-fbd6-4cc7-bb44-c1ce08a33687" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="8a5e1afc-227d-47af-bcb2-738eb3489d84" name="A_chainingFeature_chainedFeatureChaining" visibility="public" memberEnd="23d97038-3261-4f93-b9d0-5790d5196ebe 23276587-efa7-4c5b-a44c-855496948aca">
        <ownedComment xmi:id="516cfe2d-c9d7-44c3-a741-5eb9f04c1833" annotatedElement="8a5e1afc-227d-47af-bcb2-738eb3489d84">
          <body>&lt;p>Relationship for chainedFeatures.&lt;/p></body>
        </ownedComment>
        <ownedEnd xmi:id="23276587-efa7-4c5b-a44c-855496948aca" name="chainedFeatureChaining" visibility="public" type="7d79e5c0-21de-4f7b-999a-1896854037ca" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="8a5e1afc-227d-47af-bcb2-738eb3489d84">
          <ownedComment xmi:id="dc7144eb-57a4-48f2-8a38-796a6355a05e" annotatedElement="23276587-efa7-4c5b-a44c-855496948aca">
            <body>&lt;p>The FeatureChainings that identify this Feature as their &lt;code>chainingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="939c9d3d-b603-454f-a585-08455f7e94dc" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3771b409-3b2f-4d65-a83d-a6e969f1d0d2" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="7d79e5c0-21de-4f7b-999a-1896854037ca" name="FeatureChaining" visibility="public">
        <ownedComment xmi:id="93c2fb6b-24a1-414b-878b-05937e840f1c" annotatedElement="7d79e5c0-21de-4f7b-999a-1896854037ca">
          <body>&lt;p>&lt;code>FeatureChaining&lt;/code> is a &lt;code>Relationship&lt;/code> that makes its target &lt;code>Feature&lt;/code> one of the &lt;code>chainingFeatures&lt;/code> of its owning &lt;code>Feature&lt;/code>.&lt;/p></body>
        </ownedComment>
        <generalization xmi:id="18ebf330-896e-4f68-be6a-11544e56fb86" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="23d97038-3261-4f93-b9d0-5790d5196ebe" name="chainingFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="8a5e1afc-227d-47af-bcb2-738eb3489d84">
          <ownedComment xmi:id="573e7f2e-af21-4524-9f2a-dfbfadc9551c" annotatedElement="23d97038-3261-4f93-b9d0-5790d5196ebe">
            <body>&lt;p>The &lt;code>Feature&lt;/code> whose values partly determine values of &lt;code>featureChained&lt;/code>, as described in &lt;code>Feature::chainingFeature&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9109a626-9e87-48ee-a07b-600f797f452e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1eaa5237-c0b3-4aca-8e6d-38ba9d29d63f" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ee3fb20e-db26-476c-817f-4ac6c72cf594" name="featureChained" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="c81d146c-d738-40a0-ab80-8526beac3673" association="5ac5d620-4e67-4bf2-9282-b6cbebbb8d12">
          <ownedComment xmi:id="2eba78ee-7a8d-48bb-bbaf-e46255a92c58" annotatedElement="ee3fb20e-db26-476c-817f-4ac6c72cf594">
            <body>&lt;p>The &lt;code>Feature&lt;/code> whose values are partly determined by values of the &lt;code>chainingFeature&lt;/code>, as described in &lt;code>Feature::chainingFeature&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="7962174b-7189-446f-87d7-f52be7869afc" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="10a319f6-4b26-4e97-ac29-b6782afbf8a1" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="9bb6daf3-e396-4fc1-95fb-70c077ddd883" name="A_chainingFeature_chainedFeature" visibility="public" memberEnd="cfa42988-6a5a-44e5-9d11-d9bec4fd5774 c7166cd8-984a-4242-85e3-fa55b1cbdb77">
        <ownedEnd xmi:id="c7166cd8-984a-4242-85e3-fa55b1cbdb77" name="chainedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" association="9bb6daf3-e396-4fc1-95fb-70c077ddd883">
          <ownedComment xmi:id="646973c4-f492-423b-99cd-32577ef9eee6" annotatedElement="c7166cd8-984a-4242-85e3-fa55b1cbdb77">
            <body>&lt;p>The Features that have a particular &lt;code>chainingFeature&lt;/code> in their Feature chain, whose values are partly determined by values of the &lt;code>chainingFeature&lt;/code>, as described in &lt;code>chainingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="05a3e7a2-f4b8-442e-a8f9-758618575cc3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8cfde0eb-6d93-4776-8ef4-4a845fe24e02" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="501d2ac3-e424-4d29-bd58-e509e61f43b1" name="A_ownedMemberFeature_owningEndFeatureMembership" visibility="public" memberEnd="6f8c7cac-e36c-4a29-85c2-dda5538e2e05 9b6c8e8b-52a3-4021-a5ee-0a42088cdd83">
        <ownedEnd xmi:id="9b6c8e8b-52a3-4021-a5ee-0a42088cdd83" name="owningEndFeatureMembership" visibility="public" type="41db7b8e-d1e9-4982-afd7-3a4a86933540" isDerived="true" subsettedProperty="b79a7d91-99ab-4372-8103-af57f85ad3a1" association="501d2ac3-e424-4d29-bd58-e509e61f43b1">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ec7f1b90-dd38-4345-925d-256cdb5338b7" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d64413df-90e5-4983-ab7c-f612481048d1" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="19742ae9-e925-4fec-99cb-fcf43a063039" name="FeatureInverting" visibility="public">
        <ownedComment xmi:id="9b4aee8f-189a-448b-bb1e-8c64b6b8bb14" annotatedElement="19742ae9-e925-4fec-99cb-fcf43a063039">
          <body>&lt;p>A &lt;code>FeatureInverting&lt;/code> is a &lt;code>Relationship&lt;/code> between &lt;code>Features&lt;/code> asserting that their interpretations (sequences) are the reverse of each other, identified as &lt;code>featureInverted&lt;/code> and &lt;code>invertingFeature&lt;/code>. For example, a &lt;code>Feature&lt;/code> identifying each person&amp;#39;s parents is the inverse of a &lt;code>Feature&lt;/code> identifying each person&amp;#39;s children. A person identified as a parent of another will identify that other as one of their children.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="93ad3379-5905-462f-b424-656fdc642552" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="f4c5ac7d-9ed1-46da-a787-c595dfc5eeb0" name="featureInverted" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" association="94b1bd08-da10-4959-a569-c9c02c08edf9">
          <ownedComment xmi:id="af6739d4-0b50-4b3a-9315-d348aa7feef4" annotatedElement="f4c5ac7d-9ed1-46da-a787-c595dfc5eeb0">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is an inverse of the &lt;code>invertingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e074a932-8b81-4980-acf9-75d014ae973b" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="42b8009a-3b9e-4bda-adf9-bf2e0cee3418" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="36f71aed-a12e-4332-8ca1-7000d7b4571f" name="invertingFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="ba3ba829-c73f-4b20-8420-b685f782f155">
          <ownedComment xmi:id="045884e9-966c-41cf-bc30-2316573ef0ec" annotatedElement="36f71aed-a12e-4332-8ca1-7000d7b4571f">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is an inverse of the &lt;code>invertedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="bda6ddd5-2490-4c53-b67a-540846586e98" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5a83a9d9-bd57-47bb-808b-726a53815fa9" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b893a139-4098-4e9d-8794-d7ba21da6687" name="owningFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="c81d146c-d738-40a0-ab80-8526beac3673 f4c5ac7d-9ed1-46da-a787-c595dfc5eeb0" association="779ac43f-1300-49d5-81ad-33c147f4baaa">
          <ownedComment xmi:id="8081e0ee-f56d-4f89-88bd-4ed3d682714e" annotatedElement="b893a139-4098-4e9d-8794-d7ba21da6687">
            <body>&lt;p>A &lt;code>featureInverted&lt;/code> that is also the &lt;code>owningRelatedElement&lt;/code> of this &lt;code>FeatureInverting&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1306ebbb-39ec-43e4-850b-24d54aad649b" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0dc65446-c72d-4043-a47f-9df9819c27f5" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="94b1bd08-da10-4959-a569-c9c02c08edf9" name="A_invertingFeatureInverting_featureInverted" visibility="public" memberEnd="6fb1d0b2-adeb-43d6-9c2e-98697718f9b9 f4c5ac7d-9ed1-46da-a787-c595dfc5eeb0">
        <ownedEnd xmi:id="6fb1d0b2-adeb-43d6-9c2e-98697718f9b9" name="invertingFeatureInverting" visibility="public" type="19742ae9-e925-4fec-99cb-fcf43a063039" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874" association="94b1bd08-da10-4959-a569-c9c02c08edf9">
          <ownedComment xmi:id="7d62e99d-9b1e-427c-98e2-ed5c49f4604c" annotatedElement="6fb1d0b2-adeb-43d6-9c2e-98697718f9b9">
            <body>&lt;p>The FeatureInvertings that identify this Feature as their &lt;code>featureInverted&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="53d7e750-b367-4371-b348-fec33cecf0c6" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ae1ae634-7d6d-480d-8f8d-80073c00360c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="ba3ba829-c73f-4b20-8420-b685f782f155" name="A_invertingFeature_invertedFeatureInverting" visibility="public" memberEnd="36f71aed-a12e-4332-8ca1-7000d7b4571f 71ba4438-beee-4717-8c5e-30266eca6994">
        <ownedEnd xmi:id="71ba4438-beee-4717-8c5e-30266eca6994" name="invertedFeatureInverting" visibility="public" type="19742ae9-e925-4fec-99cb-fcf43a063039" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="ba3ba829-c73f-4b20-8420-b685f782f155">
          <ownedComment xmi:id="a299f808-ae29-4e3b-93f0-433ba34cde0d" annotatedElement="71ba4438-beee-4717-8c5e-30266eca6994">
            <body>&lt;p>The FeatureInvertings that identify this Feature as their &lt;code>invertingFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a5ed63fd-082b-4a0d-a8b1-d0b44c664203" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0c7f59e2-c984-4a9e-bb9a-837a8a12aa61" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="779ac43f-1300-49d5-81ad-33c147f4baaa" name="A_ownedFeatureInverting_owningFeature" visibility="public" memberEnd="e9b3d5a9-b17d-42fc-88ef-c71f5857fcd6 b893a139-4098-4e9d-8794-d7ba21da6687"/>
      <packagedElement xmi:type="uml:Association" xmi:id="01184981-2a68-4352-8336-c0e3b7763153" name="A_feature_featuring" visibility="public" memberEnd="e3585351-105e-4e50-9547-2974f25f09a4 bffacdf5-2f73-400c-b0d6-0aaacb177f4f">
        <ownedEnd xmi:id="bffacdf5-2f73-400c-b0d6-0aaacb177f4f" name="featuring" visibility="public" type="6b39d50b-0fa2-46c4-88e1-14ea53f05f8b" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="01184981-2a68-4352-8336-c0e3b7763153">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e6a48828-8e74-4660-8455-065067bec32c" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="41c9fe9e-f407-4b57-9d0c-bfebabeb0c36" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="6270bb5e-4abe-46ee-82d1-c306bc063932" name="A_ownedReferenceSubsetting_referencingFeature" visibility="public" memberEnd="b0433961-5933-432e-ac02-c6f2f849e579 ac783c98-5d98-449b-9548-17fbab7b838a"/>
      <packagedElement xmi:type="uml:Class" xmi:id="6b39d50b-0fa2-46c4-88e1-14ea53f05f8b" name="Featuring" visibility="public" isAbstract="true">
        <ownedComment xmi:id="f7b9518c-4698-498b-a233-5833aa905953" annotatedElement="6b39d50b-0fa2-46c4-88e1-14ea53f05f8b">
          <body>&lt;p>&lt;code>Featuring&lt;/code> is a &lt;code>Relationship&lt;/code> between a &lt;code>Type&lt;/code> and a &lt;code>Feature&lt;/code> that is featured by that &lt;code>Type&lt;/code>. It asserts that every instance in the domain of the &lt;code>feature&lt;/code> must be classified by the &lt;code>type&lt;/code>.&lt;/p>

&lt;p>&lt;code>Featuring&lt;/code> is abstract and does not commit to which of &lt;code>feature&lt;/code> or &lt;code>type&lt;/code> are the &lt;code>source&lt;/code> or &lt;code>target&lt;/code> of the &lt;code>Relationship&lt;/code>. This commitment is made in the subclasses of &lt;code>Featuring&lt;/code>, &lt;code>TypeFeaturing&lt;/code> and &lt;code>FeatureMembership&lt;/code>, which have opposite directions.&lt;/p></body>
        </ownedComment>
        <generalization xmi:id="c75aeca6-1605-4ac5-b16a-718b29be7496" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="35ddd42a-b8a5-4ea6-b2d1-ab7d0a827a00" name="type" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" subsettedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="6e7eac67-12b0-4b51-90db-aaaa19f2e876">
          <ownedComment xmi:id="4ebea105-366c-4c12-ad53-dbce340abfa2" annotatedElement="35ddd42a-b8a5-4ea6-b2d1-ab7d0a827a00">
            <body>&lt;p>The &lt;code>Type&lt;code> that features the &lt;code>featureOfType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3cf5e072-7b2b-499a-8ac4-e4a3a60062ba" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="12eb840d-9819-46cc-8a65-06d8e3b0d74e" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e3585351-105e-4e50-9547-2974f25f09a4" name="feature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" subsettedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="01184981-2a68-4352-8336-c0e3b7763153">
          <ownedComment xmi:id="f941be9f-6745-49ce-a620-0e1cc4b8bda1" annotatedElement="e3585351-105e-4e50-9547-2974f25f09a4">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is featured by the &lt;code>featuringType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="72cd3a14-53ba-42f3-aafe-d627b21b6ca9" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="609584ac-80db-4482-9eb9-5ad466213334" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="6e7eac67-12b0-4b51-90db-aaaa19f2e876" name="A_type_featuringOfType" visibility="public" memberEnd="35ddd42a-b8a5-4ea6-b2d1-ab7d0a827a00 50ef422c-01b0-4c96-8fcf-d091fc26655a">
        <ownedEnd xmi:id="50ef422c-01b0-4c96-8fcf-d091fc26655a" name="featuringOfType" visibility="public" type="6b39d50b-0fa2-46c4-88e1-14ea53f05f8b" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="6e7eac67-12b0-4b51-90db-aaaa19f2e876">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8a1e5674-97a6-48e0-87d3-4cd583a2e6c3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b9f93e87-a6ca-4d0e-8f99-41e72f18171a" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cce96e86-0574-4396-8c05-e7160bb4707a" name="ReferenceSubsetting" visibility="public">
        <ownedComment xmi:id="9bd2f317-5ab3-438a-9839-0c58068585a9" annotatedElement="cce96e86-0574-4396-8c05-e7160bb4707a">
          <body>&lt;p>&lt;code>ReferenceSubsetting&lt;/code> is a kind of &lt;code>Subsetting&lt;/code> in which the &lt;code>referencedFeature&lt;/code> is syntactically distinguished from other &lt;code>Features&lt;/code> subsetted by the &lt;code>referencingFeature&lt;/code>. &lt;code>ReferenceSubsetting&lt;/code> has the same semantics as &lt;code>Subsetting&lt;/code>, but the &lt;code>referenceFeature&lt;/code> may have a special purpose relative to the &lt;code>referencingFeature&lt;/code>. For instance, &lt;code>ReferenceSubsetting&lt;/code> is used to identify the &lt;code>relatedFeatures&lt;/code> of a &lt;code>Connector&lt;/code>.&lt;/p>

&lt;p>&lt;code>ReferenceSubsetting&lt;/code> is always an &lt;code>ownedRelationship&lt;/code> of its &lt;code>referencingFeature&lt;/code>. A &lt;code>Feature&lt;/code> can have at most one &lt;code>ownedReferenceSubsetting&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="ca369a0d-b231-471e-8f7c-fef85bd57670" general="a26821f8-6af3-42a0-9043-03c372464172"/>
        <ownedAttribute xmi:id="3bbcf949-999f-49e4-9914-c273a7107f86" name="referencedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="b8bb3b86-cf2d-451e-b3c1-6a3aecac5aa4" association="6783a129-0383-4dd1-b481-8c35e7ea9c2d">
          <ownedComment xmi:id="e93e31e0-2d09-45a8-82ea-fdb00dbf5c60" annotatedElement="3bbcf949-999f-49e4-9914-c273a7107f86">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is referenced by the &lt;code>referencingFeature&lt;/code> of this &lt;code>ReferenceSubsetting&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5afc9419-f06e-401a-998e-31821e28f24e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="81c73604-f0c7-49ef-9426-201fd60c7cb1" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ac783c98-5d98-449b-9548-17fbab7b838a" name="referencingFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" redefinedProperty="20d11fe1-16c0-41fb-8823-559ce4084ebf 43a01c3e-8273-4941-b616-2f8edcc0ac17" association="6270bb5e-4abe-46ee-82d1-c306bc063932">
          <ownedComment xmi:id="eb2e260c-ea5a-4e42-98c5-9c3b34e2d1cd" annotatedElement="ac783c98-5d98-449b-9548-17fbab7b838a">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that owns this &lt;code>ReferenceSubsetting&lt;/code> relationship, which is also its &lt;code>subsettingFeature&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4869b41c-5a77-4ea7-b92c-8e6decd63d98" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="92dbadea-2301-4d81-b1b5-65f63af6e12f" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="6783a129-0383-4dd1-b481-8c35e7ea9c2d" name="A_referencedFeature_referencing" visibility="public" memberEnd="3bbcf949-999f-49e4-9914-c273a7107f86 5d848bc6-3533-4bb0-bde6-b21cc5b05b56">
        <ownedEnd xmi:id="5d848bc6-3533-4bb0-bde6-b21cc5b05b56" name="referencing" visibility="public" type="cce96e86-0574-4396-8c05-e7160bb4707a" subsettedProperty="8bb4ce6a-5088-4453-b5b6-d5a905d715f8" association="6783a129-0383-4dd1-b481-8c35e7ea9c2d">
          <ownedComment xmi:id="8a0891a0-26e8-47bd-b0f0-e5d8dfc42b47" annotatedElement="5d848bc6-3533-4bb0-bde6-b21cc5b05b56">
            <body>&lt;p>The ReferenceSubsettings with a certain Feature as the &lt;code>referencedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1f83b92f-ad09-4047-8955-b89822615029" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a56678bf-f323-409c-9397-134d7173a47c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="1007a49b-88d8-4952-92fe-fa6ee4090e4b" name="Classifiers" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="ce1b8900-35ef-45fb-9f31-d1a40a43a7cf" name="A_superclassifier_superclassification" visibility="public" memberEnd="63d72dd5-812d-41f7-9669-ffc82d00072a e274b7ca-a5e9-4865-ba7f-f72492208718">
        <ownedEnd xmi:id="e274b7ca-a5e9-4865-ba7f-f72492208718" name="superclassification" visibility="public" type="cc1fdc81-c8a8-44ba-8a31-e4b9f2f9de02" subsettedProperty="ec929050-eaf9-499b-b556-7d35cc53b50a" association="ce1b8900-35ef-45fb-9f31-d1a40a43a7cf">
          <ownedComment xmi:id="29cc921d-c4a4-4051-84bc-478446bee9b0" annotatedElement="e274b7ca-a5e9-4865-ba7f-f72492208718">
            <body>&lt;p>The Subclassifications with a certain &lt;code>superclassifier&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="365d10a9-9786-40cf-a739-e529310209f7" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9242fb68-476e-4587-b62b-6a621784c377" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="d0a45a28-7af9-4bb2-9fc9-ac3e79928263" name="Classifier" visibility="public">
        <ownedComment xmi:id="9176ff98-3d45-430b-ac77-f5222827cadb" annotatedElement="d0a45a28-7af9-4bb2-9fc9-ac3e79928263">
          <body>&lt;p>A &lt;code>Classifier&lt;/code> is a &lt;code>Type&lt;/code> that classifies:&lt;/p>

&lt;ul>
	&lt;li>Things (in the universe) regardless of how &lt;code>Features&lt;/code> relate them. (These are interpreted semantically as sequences of exactly one thing.)&lt;/li>
	&lt;li>How the above things are related by &lt;code>Features.&lt;/code> (These are interpreted semantically as sequences of multiple things, such that the last thing in the sequence is also classified by the &lt;code>Classifier&lt;/code>. Note that this means that a &lt;code>Classifier&lt;/code> modeled as specializing a &lt;code>Feature&lt;/code> cannot classify anything.)&lt;/li>
&lt;/ul>

</body>
        </ownedComment>
        <ownedRule xmi:id="addcfc81-5618-4e25-8919-e3f53d3f9d9d" name="deriveClassifierOwnedSubclassification" visibility="public" constrainedElement="d0a45a28-7af9-4bb2-9fc9-ac3e79928263">
          <ownedComment xmi:id="354a59d2-4713-4029-a165-beb71750749a" annotatedElement="addcfc81-5618-4e25-8919-e3f53d3f9d9d">
            <body>&lt;p>The &lt;code>ownedSubclassifications&lt;/code> of a &lt;code>Classifier&lt;/code> are its &lt;code>ownedSpecializations&lt;/code> that are &lt;code>Subclassifications&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="99c81e00-b868-4168-bedc-ccb00f286de6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSubclassification = 
    ownedSpecialization->selectByKind(Subclassification)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="842661fa-ccc8-4edf-8db6-735e58e2a9d9" name="validateClassifierMultiplicityDomain" visibility="public" constrainedElement="d0a45a28-7af9-4bb2-9fc9-ac3e79928263">
          <ownedComment xmi:id="1e9bead7-547a-4e97-ace8-f87b007f941d" annotatedElement="842661fa-ccc8-4edf-8db6-735e58e2a9d9">
            <body>&lt;p>If a &lt;code>Classifier&lt;/code> has a &lt;code>multiplicity&lt;/code>, then the &lt;code>multiplicity&lt;/code> must have no &lt;code>featuringTypes&lt;/code> (meaning that its domain is implicitly &lt;em>Base::Anything&lt;/em>).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="22c39b55-29b5-4095-a6c7-2febd513635d" name="" visibility="public">
            <language>OCL2.0</language>
            <body>multiplicity &lt;> null implies multiplicity.featuringType->isEmpty()</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="58d55a76-4aba-40b9-9645-101b8a4ae12d" general="a32ae34b-57c2-4f49-832c-00f8741d55e7"/>
        <ownedAttribute xmi:id="b1a104db-4783-45af-92ff-e88deb9f6fc7" name="ownedSubclassification" visibility="public" type="cc1fdc81-c8a8-44ba-8a31-e4b9f2f9de02" aggregation="composite" isDerived="true" subsettedProperty="7746c947-3bd4-4cb9-98b7-cc9dddda5261" association="8de68e2c-c8b6-4865-9d89-79920974785e">
          <ownedComment xmi:id="c1de6397-1fba-4abc-8485-ddef7856a724" annotatedElement="b1a104db-4783-45af-92ff-e88deb9f6fc7">
            <body>&lt;p>The &lt;code>ownedSpecializations&lt;/code> of this &lt;code>Classifier&lt;/code> that are &lt;code>Subclassifications&lt;/code>, for which this &lt;code>Classifier&lt;/code> is the &lt;code>subclassifier&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1a25cace-ca9c-4d07-8b3d-97ea7cb63848" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="fc6648ec-f915-4507-a033-3ac318efaa35" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="c6b0e1c4-d193-4c26-af93-abeec4092094" name="A_subclassifier_subclassification" visibility="public" memberEnd="8d95c5c6-badf-420d-be23-73bbe915a016 c3da7db4-35ce-440f-af43-06b12a7ea3ea">
        <ownedEnd xmi:id="c3da7db4-35ce-440f-af43-06b12a7ea3ea" name="subclassification" visibility="public" type="cc1fdc81-c8a8-44ba-8a31-e4b9f2f9de02" subsettedProperty="99b13dd4-d587-432b-aba9-f7fa57b7ad99" association="c6b0e1c4-d193-4c26-af93-abeec4092094">
          <ownedComment xmi:id="86b9bc4a-40b9-48a3-b757-989765fd62ef" annotatedElement="c3da7db4-35ce-440f-af43-06b12a7ea3ea">
            <body>&lt;p>The Subclassifications with a certain &lt;code>subclassifier&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="99893bdc-e1f8-4d0d-ac4b-cab1296d29f8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0c1f24f3-a473-4f86-97d0-ae3e27a4b30c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cc1fdc81-c8a8-44ba-8a31-e4b9f2f9de02" name="Subclassification" visibility="public">
        <ownedComment xmi:id="75bce4ad-0474-4e70-9049-37b820521d28" annotatedElement="cc1fdc81-c8a8-44ba-8a31-e4b9f2f9de02">
          <body>&lt;p>&lt;code>Subclassification&lt;/code> is &lt;code>Specialization&lt;/code> in which both the &lt;code>specific&lt;/code> and &lt;code>general&lt;/code> &lt;code>Types&lt;/code> are &lt;code>Classifier&lt;/code>. This means all instances of the specific &lt;code>Classifier&lt;/code> are also instances of the general &lt;code>Classifier&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="d9733817-2507-42ea-82bd-96d8ad71ff55" general="d0bbaddc-004a-4559-b707-31bbc0d7c7e9"/>
        <ownedAttribute xmi:id="63d72dd5-812d-41f7-9669-ffc82d00072a" name="superclassifier" visibility="public" type="d0a45a28-7af9-4bb2-9fc9-ac3e79928263" redefinedProperty="6dd5c0f9-10e8-4361-90d4-723016f969f5" association="ce1b8900-35ef-45fb-9f31-d1a40a43a7cf">
          <ownedComment xmi:id="1935d98e-cc68-4323-a503-5062891b4abb" annotatedElement="63d72dd5-812d-41f7-9669-ffc82d00072a">
            <body>&lt;p>The more &lt;code>general&lt;/code> Classifier in this &lt;code>Subclassification&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b98ca350-8aa1-445a-868c-0a4a85596769" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d8ed5847-6475-4e4e-99d1-89783c1d307b" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="8d95c5c6-badf-420d-be23-73bbe915a016" name="subclassifier" visibility="public" type="d0a45a28-7af9-4bb2-9fc9-ac3e79928263" redefinedProperty="f45c204e-a88a-4382-9701-ccc842d4a68a" association="c6b0e1c4-d193-4c26-af93-abeec4092094">
          <ownedComment xmi:id="a6adc7fb-85dc-4081-a0e0-2fbe30cc1932" annotatedElement="8d95c5c6-badf-420d-be23-73bbe915a016">
            <body>&lt;p>The more specific &lt;code>Classifier&lt;/code> in this &lt;code>Subclassification&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a869a69c-aaf2-456c-86ef-2edc5b0184a7" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="beac95d3-7bbd-42c7-9b10-43501c494b1c" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ebcaa492-26d8-4f8d-ab2a-0778964d3900" name="owningClassifier" visibility="public" type="d0a45a28-7af9-4bb2-9fc9-ac3e79928263" isDerived="true" redefinedProperty="adeb1ff1-cb20-496c-b832-6ae775e10fd9" association="8de68e2c-c8b6-4865-9d89-79920974785e">
          <ownedComment xmi:id="f32f9eeb-3947-4c4b-b571-491986bb1983" annotatedElement="ebcaa492-26d8-4f8d-ab2a-0778964d3900">
            <body>&lt;p>The &lt;code>Classifier&lt;/code> that owns this &lt;code>Subclassification&lt;/code> relationship, which must also be its &lt;code>subclassifier&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="7234d493-f85f-4d43-9094-55019996a12f" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ecc09e75-441f-4bb0-8717-4606f167f588" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="8de68e2c-c8b6-4865-9d89-79920974785e" name="A_owningClassifier_ownedSubclassification" visibility="public" memberEnd="ebcaa492-26d8-4f8d-ab2a-0778964d3900 b1a104db-4783-45af-92ff-e88deb9f6fc7"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="82867fcc-b3b1-4523-8f76-acb1f1e58803" name="Types" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="e940b01d-4226-412d-b7f6-6e1b52ddc468" name="A_output_typeWithOutput" visibility="public" memberEnd="f33f29d7-3216-4ab5-9298-4fd27cf976f2 83914dc6-d56a-4cb1-974f-03c4fa47945b">
        <ownedEnd xmi:id="83914dc6-d56a-4cb1-974f-03c4fa47945b" name="typeWithOutput" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="e940b01d-4226-412d-b7f6-6e1b52ddc468">
          <ownedComment xmi:id="f7b0fcd6-c15f-439c-8ade-bce791fa0a8b" annotatedElement="83914dc6-d56a-4cb1-974f-03c4fa47945b">
            <body>&lt;p>A Type with a certain &lt;code>input&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1bb0ec4a-f96d-47d4-a013-ffe36a1ddf21" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0c41e2a5-dd41-4238-9d2c-cd52d7c3cd42" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="9d82330d-48f0-4626-a7b5-0e600ed2ec2c" name="A_endFeature_typeWithEndFeature" visibility="public" memberEnd="5979d447-4d72-4ffb-a569-ddbe6aacc8dd f685dfe3-4bd5-4bd3-a995-151ae1143ba7">
        <ownedEnd xmi:id="f685dfe3-4bd5-4bd3-a995-151ae1143ba7" name="typeWithEndFeature" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="9d82330d-48f0-4626-a7b5-0e600ed2ec2c">
          <ownedComment xmi:id="58e691c1-342c-430a-859d-1e1bc91f0d46" annotatedElement="f685dfe3-4bd5-4bd3-a995-151ae1143ba7">
            <body>&lt;p>A Type that has an EndFeatureMembership in which the &lt;code>endFeature&lt;/code> is a &lt;code>memberFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5de299bf-0609-442d-ac44-ccb355458b48" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f4cede2f-f388-45d9-9029-2f9353fa380c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="10fc25f2-a27b-4705-b87c-fe107262f5cd" name="A_ownedFeature_owningType" visibility="public" memberEnd="f062fa83-0335-40e0-8652-a22e6a8b3b11 2a12de05-aa4b-4bc9-8eae-467829b67416"/>
      <packagedElement xmi:type="uml:Association" xmi:id="d2d0c55f-7bc9-4587-a306-0ba1f24c559e" name="A_input_typeWithInput" visibility="public" memberEnd="76d0099a-2c42-442f-8fcf-c353da43fa2b 097a588f-431f-4a6a-924c-a5bd62bcefec">
        <ownedEnd xmi:id="097a588f-431f-4a6a-924c-a5bd62bcefec" name="typeWithInput" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="d2d0c55f-7bc9-4587-a306-0ba1f24c559e">
          <ownedComment xmi:id="d11dca69-820b-462f-9c60-95460c2490a5" annotatedElement="097a588f-431f-4a6a-924c-a5bd62bcefec">
            <body>&lt;p>A Type with a certain &lt;code>output&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="64ec30e8-ac5b-4554-894a-8fedcc1e5836" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3cafcc69-6116-436b-9f0a-8a5cb57accea" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="40e74d8d-9b1e-4e29-9918-2f5a02df411a" name="A_ownedFeatureMembership_owningType" visibility="public" memberEnd="dc592816-92e5-4085-b386-e50a8bbdf926 b698b27c-2d6a-4cc5-a202-ab3d3cb5ec2a"/>
      <packagedElement xmi:type="uml:Association" xmi:id="f2ef649b-3abd-47a4-bb5f-53137157b96d" name="A_ownedSpecialization_owningType" visibility="public" memberEnd="7746c947-3bd4-4cb9-98b7-cc9dddda5261 adeb1ff1-cb20-496c-b832-6ae775e10fd9"/>
      <packagedElement xmi:type="uml:Class" xmi:id="d0bbaddc-004a-4559-b707-31bbc0d7c7e9" name="Specialization" visibility="public">
        <ownedComment xmi:id="36627ab4-6ddf-4654-96e4-f7614a03d273" annotatedElement="d0bbaddc-004a-4559-b707-31bbc0d7c7e9">
          <body>&lt;p>&lt;code>Specialization&lt;/code> is a &lt;code>Relationship&lt;/code> between two &lt;code>Types&lt;/code> that requires all instances of the &lt;code>specific&lt;/code> type to also be instances of the &lt;code>general&lt;/code> Type (i.e., the set of instances of the &lt;code>specific&lt;/code> Type is a &lt;em>subset&lt;/em> of those of the &lt;code>general&lt;/code> Type, which might be the same set).&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="0c284383-6cd8-4213-9194-74e027f315ef" name="validateSpecificationSpecificNotConjugated" visibility="public" constrainedElement="d0bbaddc-004a-4559-b707-31bbc0d7c7e9">
          <ownedComment xmi:id="00600134-b02d-4ac1-8d38-d4fc235bda38" annotatedElement="0c284383-6cd8-4213-9194-74e027f315ef">
            <body>&lt;p>The &lt;code>specific&lt;/code> &lt;code>Type&lt;/code> of a &lt;code>Specialization&lt;/code> cannot be a conjugated &lt;code>Type&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="90642294-be80-429d-9c51-26ea77574ee9" name="" visibility="public">
            <language>OCL2.0</language>
            <body>not specific.isConjugated</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="9e56e581-f603-493c-ad82-5764188c526a" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="adeb1ff1-cb20-496c-b832-6ae775e10fd9" name="owningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="f45c204e-a88a-4382-9701-ccc842d4a68a c81d146c-d738-40a0-ab80-8526beac3673" association="f2ef649b-3abd-47a4-bb5f-53137157b96d">
          <ownedComment xmi:id="9f22650f-682b-40e2-8e4c-9d39614e7c76" annotatedElement="adeb1ff1-cb20-496c-b832-6ae775e10fd9">
            <body>&lt;p>The &lt;code>Type&lt;/code> that is the &lt;code>specific&lt;/code> &lt;code>Type&lt;/code> of this &lt;code>Specialization&lt;/code> and owns it as its &lt;code>owningRelatedElement&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="53ab92b7-5156-456d-8f47-1d5ce4020362" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="12c53f9b-61bb-44a9-a3f2-27ac38c97243" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="6dd5c0f9-10e8-4361-90d4-723016f969f5" name="general" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="83da86b5-028c-4c0e-8dfd-2d50988596ba">
          <ownedComment xmi:id="52730b72-7cf5-442a-af1d-4d724270e87b" annotatedElement="6dd5c0f9-10e8-4361-90d4-723016f969f5">
            <body>&lt;p>A &lt;code>Type&lt;/code> with a superset of all instances of the &lt;code>specific&lt;/code> &lt;code>Type&lt;/code>, which might be the same set.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ae11a8f9-9d49-4a2a-b0d8-78b6adc16e23" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="83c888b1-31e7-4363-a13e-4dcc3c074b2b" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="f45c204e-a88a-4382-9701-ccc842d4a68a" name="specific" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" association="4e14595c-a9a1-41d4-9b7e-fedc4d040620">
          <ownedComment xmi:id="1903aeff-b94c-485c-84de-52617e7309c6" annotatedElement="f45c204e-a88a-4382-9701-ccc842d4a68a">
            <body>&lt;p>A &lt;code>Type&lt;/code> with a subset of all instances of the &lt;code>general&lt;/code> &lt;code>Type&lt;/code>, which might be the same set.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="93ef2bfa-e71d-4a4a-bfc0-5cd7155e4812" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f5deef73-7941-415b-97db-475abefcd5dd" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Enumeration" xmi:id="7afbde11-a8e1-455f-bbec-22a4e1f5b814" name="FeatureDirectionKind" visibility="public">
        <ownedComment xmi:id="ec4fd429-a58f-4942-9c94-d5577ce858de" annotatedElement="7afbde11-a8e1-455f-bbec-22a4e1f5b814">
          <body>&lt;p>&lt;code>FeatureDirectionKind&lt;/code> enumerates the possible kinds of &lt;code>direction&lt;/code> that a &lt;code>Feature&lt;/code> may be given as a member of a &lt;code>Type&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedLiteral xmi:id="abdb438f-0154-4a36-8d41-273958aa94b1" name="in" visibility="public">
          <ownedComment xmi:id="288e8086-cfbc-4c8f-861e-be686d69ba89" annotatedElement="abdb438f-0154-4a36-8d41-273958aa94b1">
            <body>&lt;p>Values&amp;nbsp;of the &lt;code>Feature&lt;/code> on each&amp;nbsp;instance of its domain are&amp;nbsp;determined&amp;nbsp;externally to that instance and&amp;nbsp;used internally.&lt;/p>
</body>
          </ownedComment>
        </ownedLiteral>
        <ownedLiteral xmi:id="e44ccae7-3b00-4e9d-81ab-5e08001411f6" name="inout" visibility="public">
          <ownedComment xmi:id="3dc9fc5b-1195-4664-8419-9e8371093176" annotatedElement="e44ccae7-3b00-4e9d-81ab-5e08001411f6">
            <body>&lt;p>Values&amp;nbsp;of the &lt;code>Feature&lt;/code> on each&amp;nbsp;instance are&amp;nbsp;determined either as&amp;nbsp;&lt;em>in&lt;/em> or &lt;em>out&lt;/em>&amp;nbsp;directions, or both.&lt;/p>
</body>
          </ownedComment>
        </ownedLiteral>
        <ownedLiteral xmi:id="3cf650de-cdcd-4c80-9c92-917e3d402a3c" name="out" visibility="public">
          <ownedComment xmi:id="9501e0d1-cfd1-4a3e-b244-af9cb5b1d36e" annotatedElement="3cf650de-cdcd-4c80-9c92-917e3d402a3c">
            <body>&lt;p>Values of the &lt;code>Feature&lt;/code> on each instance of its domain are&amp;nbsp;determined internally to that instance and used externally.&lt;/p>
</body>
          </ownedComment>
        </ownedLiteral>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="4e14595c-a9a1-41d4-9b7e-fedc4d040620" name="A_specific_specialization" visibility="public" memberEnd="f45c204e-a88a-4382-9701-ccc842d4a68a 99b13dd4-d587-432b-aba9-f7fa57b7ad99">
        <ownedEnd xmi:id="99b13dd4-d587-432b-aba9-f7fa57b7ad99" name="specialization" visibility="public" type="d0bbaddc-004a-4559-b707-31bbc0d7c7e9" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874" association="4e14595c-a9a1-41d4-9b7e-fedc4d040620">
          <ownedComment xmi:id="0fe60bc4-4efb-4296-8356-61a725b608a7" annotatedElement="99b13dd4-d587-432b-aba9-f7fa57b7ad99">
            <body>&lt;p>The Specializations with a certain &lt;code>specific&lt;/code> Type.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b09f1278-35da-4ffd-8021-6de041e6346a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="17c23f6c-15fe-4851-83d0-3bdd573e1196" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="2b5fa6a3-5aa7-453a-a026-7934e87e5711" name="A_ownedMemberFeature_owningFeatureMembership" visibility="public" memberEnd="6bf83eae-2d89-4ea9-8c7b-92d8ef26bfaa b79a7d91-99ab-4372-8103-af57f85ad3a1"/>
      <packagedElement xmi:type="uml:Association" xmi:id="83da86b5-028c-4c0e-8dfd-2d50988596ba" name="A_general_generalization" visibility="public" memberEnd="6dd5c0f9-10e8-4361-90d4-723016f969f5 ec929050-eaf9-499b-b556-7d35cc53b50a">
        <ownedEnd xmi:id="ec929050-eaf9-499b-b556-7d35cc53b50a" name="generalization" visibility="public" type="d0bbaddc-004a-4559-b707-31bbc0d7c7e9" redefinedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="83da86b5-028c-4c0e-8dfd-2d50988596ba">
          <ownedComment xmi:id="b94c1d53-db35-4f16-a68d-1db858e8520f" annotatedElement="ec929050-eaf9-499b-b556-7d35cc53b50a">
            <body>&lt;p>The Specializations with a certain &lt;code>general&lt;code> Type.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="54132a87-3caf-49e1-8550-640c7c10e227" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a6a84df6-ceeb-4000-98a1-a5c08a49d4d7" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="a32ae34b-57c2-4f49-832c-00f8741d55e7" name="Type" visibility="public">
        <ownedComment xmi:id="616795c6-4877-43fd-8b0a-ffba340d4c4e" annotatedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <body>&lt;p>A &lt;code>Type&lt;/code> is a &lt;code>Namespace&lt;/code> that is the most general kind of &lt;code>Element&lt;/code> supporting the semantics of classification. A &lt;code>Type&lt;/code> may be a &lt;code>Classifier&lt;/code> or a &lt;code>Feature&lt;/code>, defining conditions on what is classified by the &lt;code>Type&lt;/code> (see also the description of &lt;code>isSufficient&lt;/code>).&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="3962a460-8f16-4016-bbff-7ebd79eb30ce" name="deriveTypeOwnedSpecialization" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="074936d0-92a2-4025-8989-12f61405623d" annotatedElement="3962a460-8f16-4016-bbff-7ebd79eb30ce">
            <body>&lt;p>The &lt;code>ownedSpecializations&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>ownedRelationships&lt;/code> that are &lt;code>Specializations&lt;/code> whose &lt;code>special&lt;/code> &lt;code>Type&lt;/code> is the owning &lt;code>Type&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="db88af02-fb95-44ff-a432-aca8f6117f97" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSpecialization = ownedRelationship->selectByKind(Specialization)->
    select(s | s.special = self)
    </body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="b7bc456c-cd95-486d-b752-18d646fda2cb" name="deriveTypeMultiplicity" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="41d97679-8d3e-4b9a-9056-a19ecd167b74" annotatedElement="b7bc456c-cd95-486d-b752-18d646fda2cb">
            <body>&lt;p>If a &lt;code>Type&lt;/code> has an owned &lt;code>Multiplicity&lt;/code>, then that is its &lt;code>multiplicity&lt;/code>. Otherwise, if the &lt;code>Type&lt;/code> has an &lt;code>ownedSpecialization&lt;/code>, then its &lt;code>multiplicity&lt;/code> is the &lt;code>multiplicity&lt;/code> of the &lt;code>general&lt;/code> &lt;code>Type&lt;/code> of that &lt;code>Specialization&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="83be9de7-2b4c-46b6-901e-ad1323c050ad" name="" visibility="public">
            <language>OCL2.0</language>
            <body>multiplicity = 
    let ownedMultiplicities: Sequence(Multiplicity) =
        ownedMember->selectByKind(Multiplicity) in
    if ownedMultiplicities->isEmpty() then null
    else ownedMultiplicities->first()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="971abc1e-137a-4462-a06a-03fae785fa83" name="deriveTypeOwnedFeatureMembership" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="4e1c35c5-17c6-4023-9977-a6fc9340b2ba" annotatedElement="971abc1e-137a-4462-a06a-03fae785fa83">
            <body>&lt;p>The &lt;code>ownedFeatureMemberships&lt;/code> of a &lt;code>Type&lt;/code> are its &lt;code>ownedMemberships&lt;/code> that are &lt;code>FeatureMemberships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="bf16960d-012d-4c79-8da0-60ab08fe0bd0" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="5ba6b266-3a0f-4f50-991d-dd7d436986a0" name="deriveTypeOwnedConjugator" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="37168901-a0a0-4fc5-984f-e88d7174f66b" annotatedElement="5ba6b266-3a0f-4f50-991d-dd7d436986a0">
            <body>&lt;p>The &lt;code>ownedConjugator&lt;/code> of a &lt;code>Type&lt;/code> is the its single &lt;code>ownedRelationship&lt;/code> that is a &lt;code>Conjugation&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="fc91b39e-5ed2-4545-a67a-7464c1078e34" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedConjugator =
    let ownedConjugators: Sequence(Conjugator) = 
        ownedRelationship->selectByKind(Conjugation) in
    if ownedConjugators->isEmpty() then null 
    else ownedConjugators->at(1) endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="a3d09077-5eca-41d7-b2e0-0aa571c30b89" name="deriveTypeOutput" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="687979c7-e645-4bca-a248-1243bb1677b1" annotatedElement="a3d09077-5eca-41d7-b2e0-0aa571c30b89">
            <body>&lt;p>The &lt;code>outputs&lt;/code> of a &lt;code>Type&lt;/code> are those of its &lt;code>features&lt;/code> that have a direction of &lt;ode>out&lt;/code> or &lt;code>inout&lt;/code> relative to the &lt;code>Type&lt;/code>, taking conjugation into account.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="0e93f590-8e92-4825-86fa-95062c9c5104" name="" visibility="public">
            <language>OCL2.0</language>
            <body>output = feature->select(f | 
    let direction: FeatureDirectionKind = directionOf(f) in
    direction = FeatureDirectionKind::out or
    direction = FeatureDirectionKind::inout)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="fc7fb950-dfd8-4e6b-ba5b-7d485adfc940" name="deriveTypeInput" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="f1ecb070-29df-4ee8-8e9d-7669b451a37d" annotatedElement="fc7fb950-dfd8-4e6b-ba5b-7d485adfc940">
            <body>&lt;p>The &lt;code>inputs&lt;/code> of a &lt;code>Type&lt;/code> are those of its features that have a direction of &lt;code>in&lt;/code> or &lt;code>inout&lt;/code> relative to the &lt;code>Type&lt;/code>, taking conjugation into account.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6930c4a9-a973-4e55-a256-7b0abc182df8" name="" visibility="public">
            <language>OCL2.0</language>
            <body>input = feature->select(f | 
    let direction: FeatureDirectionKind = directionOf(f) in
    direction = FeatureDirectionKind::_'in' or
    direction = FeatureDirectionKind::inout)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="aabc2d77-5684-4400-8cf6-8e0df168a21b" name="deriveTypeInheritedMembership" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="238a0bd7-4a55-4282-bab2-1ecde93d6bf6" annotatedElement="aabc2d77-5684-4400-8cf6-8e0df168a21b">
            <body>&lt;p>The &lt;code>inheritedMemberships&lt;code> of a &lt;code>Type&lt;/code> are determined by the &lt;code>inheritedMemberships()&lt;/code> operation.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8a69733b-f011-4bb1-ab2d-0c0cb2ecb7a0" name="" visibility="public">
            <language>OCL2.0</language>
            <body>inheritedMembership = inheritedMemberships(Set{})</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="3efb4f45-e717-4bf4-97d5-9cd3b238f807" name="checkTypeSpecialization" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="ebe67b3d-ad74-47d2-bba9-51482aafdf1d" annotatedElement="3efb4f45-e717-4bf4-97d5-9cd3b238f807">
            <body>&lt;p>A Type must directly or indirectly specialize &lt;code>&lt;em>Base::Anything&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="2bd03dbd-3b05-4914-b61e-7e62df2e11a1" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Base::Anything')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="952de68b-6d34-42aa-b0ca-031f53ae197a" name="deriveTypeDirectedFeature" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="06e5f4ce-f060-4f46-be99-dc7263239831" annotatedElement="952de68b-6d34-42aa-b0ca-031f53ae197a">
            <body>&lt;p>The &lt;code>directedFeatures&lt;/code> of a &lt;code>Type&lt;/code> are those &lt;code>features&lt;/code> for which the &lt;code>direction&lt;/code> is non-null.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1c16cde6-8bfc-419f-b616-7c02e3031086" name="" visibility="public">
            <language>OCL2.0</language>
            <body>directedFeature = feature->select(f | directionOf(f) &lt;> null)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="066e966d-2833-464f-88c3-cd3153f4f750" name="deriveTypeFeature" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="9c8517b3-8fdd-41ab-a64e-2436ac74f165" annotatedElement="066e966d-2833-464f-88c3-cd3153f4f750">
            <body>&lt;p>The &lt;code>features&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>ownedMemberFeatures&lt;/code> of its &lt;code>featureMemberships&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ce6f19f3-6ee4-447f-b535-bb9c9c2826d4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>feature = featureMembership.ownedMemberFeature</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="5e8f601f-bca6-4bda-8ab7-64584828a0df" name="deriveTypeFeatureMembership" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="933d5774-2efd-442d-ae22-6131a7b77e12" annotatedElement="5e8f601f-bca6-4bda-8ab7-64584828a0df">
            <body>&lt;p>The &lt;code>featureMemberships&lt;/code> of a &lt;code>Type&lt;/code> is the union of the &lt;code>ownedFeatureMemberships&lt;/code> and those &lt;code>inheritedMemberships&lt;/code> that are &lt;code>FeatureMemberships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="4cd100fd-8c4a-40b3-932f-7b7e7bb959b7" name="" visibility="public">
            <language>OCL2.0</language>
            <body>featureMembership = ownedFeatureMembership->union(
    inheritedMembership->selectByKind(FeatureMembership))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d693df1f-7336-43a8-8633-a7bcc259690e" name="deriveTypeOwnedFeature" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="04222279-19c9-4bf1-9247-7294363d894d" annotatedElement="d693df1f-7336-43a8-8633-a7bcc259690e">
            <body>&lt;p>The &lt;code>ownedFeatures&lt;/code> of a Type are the &lt;code>ownedMemberFeatures&lt;/code> of its &lt;code>ownedFeatureMemberships&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="24fc12c7-7754-4f78-b607-1065088ae3c7" name="" visibility="public">
            <language>English</language>
            <body>ownedFeature = ownedFeatureMembership.ownedMemberFeature</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="cf8303d1-1b25-4294-bacf-2546b3e74a19" name="deriveTypeDifferencingType" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="55768312-405b-4fff-82bf-0e6012de17b7" annotatedElement="cf8303d1-1b25-4294-bacf-2546b3e74a19">
            <body>&lt;p>The &lt;code>differencingTypes&lt;/code> of a Type are the &lt;code>differencingTypes&lt;/code> of its &lt;code>ownedDifferencings&lt;/code>, in the same order.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b44c573d-7145-453b-ae97-e223c5585af7" name="" visibility="public">
            <language>English</language>
            <body>differencingType = ownedDifferencing.differencingType</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="bcfc1c12-0fd8-42af-80d1-c2af4c6fb1a3" name="validateTypeIntersectingTypesNotSelf" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="0a4207fd-ebc4-4743-b66e-143ec11a92f9" annotatedElement="bcfc1c12-0fd8-42af-80d1-c2af4c6fb1a3">
            <body>&lt;p>A Type cannot be one of its own &lt;code>intersectingTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="276f227b-fd7d-4d3d-b8b7-904c27a6a7ba" name="" visibility="public">
            <language>English</language>
            <body>intersectingType->excludes(self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="067f8f99-f702-4bcf-ba15-7ae9bd72f028" name="validateTypeDifferencingTypesNotSelf" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="aca66026-cd2e-4f21-bb38-c54d7ea3d5c3" annotatedElement="067f8f99-f702-4bcf-ba15-7ae9bd72f028">
            <body>&lt;p>A Type cannot be one of its own &lt;code>differencingTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cdfa9d55-9b85-416b-9493-b19daee35e65" name="" visibility="public">
            <language>English</language>
            <body>differencingType->excludes(self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="3cec1455-b85b-4776-bd6e-a4048fbe27da" name="deriveTypeUnioningType" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="2c6ec1bd-dd34-425a-9c08-ffa0dcf5eac5" annotatedElement="3cec1455-b85b-4776-bd6e-a4048fbe27da">
            <body>&lt;p>The &lt;code>unioningTypes&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>unioningTypes&lt;/code> of its &lt;code>ownedUnionings&lt;/code>.&lt;p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cf072334-91f7-4ab8-b726-c6463b896361" name="" visibility="public">
            <language>OCL2.0</language>
            <body>unioningType = ownedUnioning.unioningType</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="e310b0db-91bf-477a-ba1e-8a24639497cf" name="validateTypeUnioningTypesNotSelf" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="f2f6c2ca-1dbb-4a7b-8e4e-84274e9e954e" annotatedElement="e310b0db-91bf-477a-ba1e-8a24639497cf">
            <body>&lt;p>A Type cannot be one of its own &lt;code>unioningTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b5fa78e9-7cbf-4698-860a-659e17695f63" name="" visibility="public">
            <language>English</language>
            <body>unioningType->excludes(self)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="1b7eae6d-472e-4459-a772-67288a385427" name="deriveTypeIntersectingType" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="91ca2a80-9df6-44a1-a08c-c650ebe42b31" annotatedElement="1b7eae6d-472e-4459-a772-67288a385427">
            <body>&lt;p>The &lt;code>intersectingTypes&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>intersectingTypes&lt;/code> of its &lt;code>ownedIntersectings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="c8f0f756-f97a-4bcc-bcd9-5df36fb41cb7" name="" visibility="public">
            <language>OCL2.0</language>
            <body>intersectingType = ownedIntersecting.intersectingType</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="ba70d75f-bfc1-43eb-acd3-8d4656afb961" name="validateTypeAtMostOneConjugator" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="5b9344ae-7452-49e9-b1c7-3552f327a744" annotatedElement="ba70d75f-bfc1-43eb-acd3-8d4656afb961">
            <body>A &lt;code>Type&lt;/code> must have at most one owned &lt;code>Conjugation&lt;/code> &lt;code>Relationship&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="604d2e17-2fe0-4163-a012-d0c3f98651d4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedRelationship->selectByKind(Conjugation)->size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d0471aea-5139-4c7f-860c-47594d0d7667" name="validateTypeOwnedMultiplicity" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="a28dc543-1a7b-480c-beb1-8cae65f9f583" annotatedElement="d0471aea-5139-4c7f-860c-47594d0d7667">
            <body>&lt;p>A &lt;code>Type&lt;/code> may have at most one &lt;code>ownedMember&lt;/code> that is a &lt;code>Multiplicity&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a58a8ad4-49d9-462b-b5bd-73e0ec5d9515" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMember->selectByKind(Multiplicity)->size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="a3168785-a0b9-4ce1-8fe3-12fa14916e43" name="deriveTypeEndFeature" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="fcbf79ca-a47c-4536-919d-cf8a1dfdc8e0" annotatedElement="a3168785-a0b9-4ce1-8fe3-12fa14916e43">
            <body>&lt;p>The &lt;code>endFeatures&lt;/code> of a &lt;code>Type&lt;/code> are all its &lt;code>features&lt;/code> for which &lt;code>isEnd = true&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="25ace37b-df84-47f9-9c6a-dbd00f3d6b19" name="" visibility="public">
            <language>OCL2.0</language>
            <body>endFeature = feature->select(isEnd)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="ec3d0914-3cde-48c2-be8a-d1dcecc26fd9" name="deriveTypeOwnedDisjoining" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="a1152878-8736-48b7-a0a0-d77c5d216a3b" annotatedElement="ec3d0914-3cde-48c2-be8a-d1dcecc26fd9">
            <body>&lt;p>The &lt;code>ownedDisjoinings&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>ownedRelationships&lt;/code> that are &lt;code>Disjoinings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="827f4948-d09f-473f-9afc-66ebf080c546" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedDisjoining =
    ownedRelationship->selectByKind(Disjoining)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="ff4746f4-4848-4879-8cbd-ba0c329d63ab" name="deriveTypeOwnedUnioning" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="1dfc4b8d-ed98-43c5-91af-ca6388aacf6b" annotatedElement="ff4746f4-4848-4879-8cbd-ba0c329d63ab">
            <body>&lt;p>The &lt;code>ownedUnionings&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>ownedRelationships&lt;/code> that are &lt;code>Unionings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="00d79802-2a32-48a9-90d8-77d8cb646c3a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedUnioning =
    ownedRelationship->selectByKind(Unioning)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="e35be3ba-5460-4970-9ce4-87e9109b4f90" name="deriveTypeOwnedIntersecting" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="d6773ee9-bd46-4f64-9236-84d88ed5d30b" annotatedElement="e35be3ba-5460-4970-9ce4-87e9109b4f90">
            <body>&lt;p>The &lt;code>ownedIntersectings&lt;/code> of a &lt;code>Type&lt;/code> are the &lt;code>ownedRelationships&lt;/code> that are &lt;code>Intersectings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8fe7690b-0e4e-4076-ad11-2aff26a7ee2b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedRelationship->selectByKind(Intersecting)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="dd8399ef-920b-441c-924e-07deb2dbdf0c" name="deriveTypeOwnedDifferencing" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="a885f203-9153-4948-8bce-df63fd4cbb7d" annotatedElement="dd8399ef-920b-441c-924e-07deb2dbdf0c">
            <body>&lt;p>The &lt;code>ownedDifferencings&lt;/code> of a &lt;code>Type&lt;/code> are its &lt;code>ownedRelationships&lt;/code> that are &lt;code>Differencings&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f1c5f2f1-ad4a-4e5a-a060-f81e32b6e63b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedDifferencing =
    ownedRelationship->selectByKind(Differencing)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="c6b24875-f469-424c-853f-7755503dd71d" name="deriveTypeOwnedEndFeature" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="57a6bcb3-d163-4ca0-807f-0044e186bae4" annotatedElement="c6b24875-f469-424c-853f-7755503dd71d">
            <body>&lt;p>The &lt;code>ownedEndFeatures&lt;/code> of a &lt;code>Type&lt;/code> are all its &lt;code>ownedFeatures&lt;/code> for which &lt;code>isEnd = true&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="aba02ff9-84bd-4621-940b-1d6eab83b994" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedEndFeature = ownedFeature->select(isEnd)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="2445a7e9-f6c1-4760-8ad2-d3ceac67322d" name="deriveTypeInheritedFeature" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="b84cf620-097b-4943-955e-802412970764" annotatedElement="2445a7e9-f6c1-4760-8ad2-d3ceac67322d">
            <body>&lt;p>The &lt;code>inheritedFeatures&lt;/code> of this &lt;code>Type&lt;/code> are the &lt;code>memberFeatures&lt;/code> of the &lt;code>inheritedMemberships&lt;/code> that are &lt;code>FeatureMemberships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="865dde2a-b87d-4fec-9e11-b27925a2d287" name="" visibility="public">
            <language>OCL2.0</language>
            <body>inheritedFeature = inheritedMemberships->
    selectByKind(FeatureMembership).memberFeature</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="067d9fae-f700-4f10-8606-f90e0978a733" name="validateTypeOwnedUnioningNotOne" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="dd8b0a35-d5cd-44e1-90c2-b2894b864f34" annotatedElement="067d9fae-f700-4f10-8606-f90e0978a733">
            <body>A &lt;code>Type&lt;/code> must not have exactly one &lt;code>ownedUnioning&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cb402f2a-513d-4cd5-84fc-b896c6833e3f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedUnioning->size() &lt;> 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="57271126-d973-40b4-a2ed-50891d58a894" name="validateTypeOwnedIntersectingNotOne" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="0bedf3e6-d72d-41e9-9d0e-f589671ebb62" annotatedElement="57271126-d973-40b4-a2ed-50891d58a894">
            <body>A &lt;code>Type&lt;/code> must not have exactly one &lt;code>ownedIntersecting&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="bd2f0b74-9880-4d7d-8214-a85f77d6bba0" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedIntersecting->size() &lt;> 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="54f37aee-ee35-430b-b72d-ac50744f1c7a" name="validateTypeOwnedDifferencingNotOne" visibility="public" constrainedElement="a32ae34b-57c2-4f49-832c-00f8741d55e7">
          <ownedComment xmi:id="27e5c0f1-4fac-4316-9fb2-056b30ccbc52" annotatedElement="54f37aee-ee35-430b-b72d-ac50744f1c7a">
            <body>A &lt;code>Type&lt;/code> must not have exactly one &lt;code>ownedDifferencing&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d8f85bef-5375-4770-ad01-001a4fd2aeb4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedDifferencing->size() &lt;> 1</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="a347e4f6-ac50-44e2-9935-e9f4aac6ca04" general="16a893ca-c85b-4a48-989a-fc24520fc6d6"/>
        <ownedAttribute xmi:id="7746c947-3bd4-4cb9-98b7-cc9dddda5261" name="ownedSpecialization" visibility="public" type="d0bbaddc-004a-4559-b707-31bbc0d7c7e9" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="99b13dd4-d587-432b-aba9-f7fa57b7ad99 9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" association="f2ef649b-3abd-47a4-bb5f-53137157b96d">
          <ownedComment xmi:id="b8e1a369-00cb-43ae-8e01-ab87e7aa9cbf" annotatedElement="7746c947-3bd4-4cb9-98b7-cc9dddda5261">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>Specializations&lt;/code>, for which the &lt;code>Type&lt;/code> is the &lt;code>specific&lt;/code> &lt;code>Type&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="187dd0d3-2d01-4938-801e-e058d8807c46" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="bf56c81e-0553-4686-9e43-4d23c801cefa" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="dc592816-92e5-4085-b386-e50a8bbdf926" name="ownedFeatureMembership" visibility="public" type="10189040-993c-4d64-aacf-0d99b558af68" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="fad0c25d-2a44-4e7a-9b06-bae16320cb4e c7ddb5de-07c8-4a60-ae17-11b745959f98 50ef422c-01b0-4c96-8fcf-d091fc26655a" association="40e74d8d-9b1e-4e29-9918-2f5a02df411a">
          <ownedComment xmi:id="1c35d077-c986-4f5f-8299-34fb4f4e4e88" annotatedElement="dc592816-92e5-4085-b386-e50a8bbdf926">
            <body>&lt;p>The &lt;code>ownedMemberships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>FeatureMemberships&lt;/code>, for which the &lt;code>Type&lt;/code> is the &lt;code>owningType&lt;/code>. Each such &lt;code>FeatureMembership&lt;/code> identifies an &lt;code>ownedFeature&lt;/code> of the &lt;code>Type&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="edbc24b9-763a-4d33-859a-0050d8ba26d1" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1ebabde0-d444-4dda-a7fe-cb5695e48cb9" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="42941304-02d9-4962-b118-95860c17236a" name="feature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb" association="5c8479ce-ac64-4d2e-bbfd-bb4aa7625864">
          <ownedComment xmi:id="edd0dcf1-4355-4c89-b41a-96f1890dae64" annotatedElement="42941304-02d9-4962-b118-95860c17236a">
            <body>&lt;p>The &lt;code>ownedMemberFeatures&lt;/code> of the &lt;code>featureMemberships&lt;/code> of this &lt;code>Type&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3cd3b5c3-2c71-474e-9645-16e6ffe2aacb" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5e97cd84-6b72-48bd-a240-9689e750e5d9" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="f062fa83-0335-40e0-8652-a22e6a8b3b11" name="ownedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="e77d17fa-39f5-4493-b101-5630bea6df70" association="10fc25f2-a27b-4705-b87c-fe107262f5cd">
          <ownedComment xmi:id="5574f92f-d637-4b16-ac3f-c203e7fb25e9" annotatedElement="f062fa83-0335-40e0-8652-a22e6a8b3b11">
            <body>&lt;p>The &lt;code>ownedMemberFeatures&lt;/code> of the &lt;code>ownedFeatureMemberships&lt;/code> of this &lt;code>Type&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f7034752-9d87-484f-aea4-964bca9465b6" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="01daeedb-a8bd-4faa-b33d-260636432125" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="76d0099a-2c42-442f-8fcf-c353da43fa2b" name="input" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="5b298b23-243e-4a34-afc9-15236eca08a8" association="d2d0c55f-7bc9-4587-a306-0ba1f24c559e">
          <ownedComment xmi:id="ab04f6b8-9ad7-46d4-8506-11516de3d5b0" annotatedElement="76d0099a-2c42-442f-8fcf-c353da43fa2b">
            <body>&lt;p>All &lt;code>features&lt;/code> related to this &lt;code>Type&lt;/code> by &lt;code>FeatureMemberships&lt;/code> that have &lt;code>direction&lt;/code> &lt;code>in&lt;code> or &lt;code>inout&lt;code>.&lt;/code>&lt;/code>&lt;/code>&lt;/code>&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="71f47261-de45-4335-bf8d-dadfbd71a3d3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e8b76fc8-e019-415d-965f-23011e177db7" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="f33f29d7-3216-4ab5-9298-4fd27cf976f2" name="output" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="5b298b23-243e-4a34-afc9-15236eca08a8" association="e940b01d-4226-412d-b7f6-6e1b52ddc468">
          <ownedComment xmi:id="7054ce0b-87a8-4036-a346-d9340d8ecaf3" annotatedElement="f33f29d7-3216-4ab5-9298-4fd27cf976f2">
            <body>&lt;p>All &lt;code>features&lt;/code> related to this &lt;code>Type&lt;/code> by &lt;code>FeatureMemberships&lt;/code> that have &lt;code>direction&lt;/code> &lt;code>out&lt;code> or &lt;code>inout&lt;code>.&lt;/code>&lt;/code>&lt;/code>&lt;/code>&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4528eaff-58bf-4207-9fff-2ee43c520d53" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e2436d6d-aa47-4e5d-a831-d3fe7881f686" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="8ba5f657-df28-48f4-ac52-7e154eb63b38" name="isAbstract" visibility="public">
          <ownedComment xmi:id="89da00d7-1ea5-4b2e-933e-fb0ab70c6146" annotatedElement="8ba5f657-df28-48f4-ac52-7e154eb63b38">
            <body>&lt;p>Indicates whether instances of this &lt;code>Type&lt;/code> must also be instances of at least one of its specialized &lt;code>Types&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="05e6abfb-57a7-4a5d-b573-0b0340e91da6" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="743ca62c-f40b-47f9-8b18-1c0219ba96a1" name="inheritedMembership" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" isDerived="true" subsettedProperty="596739a5-b42a-40d6-af0c-89cddf2d7768" association="5d35ff04-357b-48ef-b48f-1894e255639b">
          <ownedComment xmi:id="0d4a9809-dad5-4c1a-b933-b6a5b01a9e71" annotatedElement="743ca62c-f40b-47f9-8b18-1c0219ba96a1">
            <body>&lt;p>All &lt;code>Memberships&lt;/code> inherited by this &lt;code>Type&lt;/code> via &lt;code>Specialization&lt;/code> or &lt;code>Conjugation&lt;/code>. These are included in the derived union for the &lt;code>memberships&lt;/code> of the &lt;code>Type&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8d29d1ae-c420-4215-9fce-5bf04264ad57" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3abb16b3-479d-4747-ac9d-1c026039f199" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5979d447-4d72-4ffb-a569-ddbe6aacc8dd" name="endFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="42941304-02d9-4962-b118-95860c17236a" association="9d82330d-48f0-4626-a7b5-0e600ed2ec2c">
          <ownedComment xmi:id="d2d6f5b5-20a5-4e89-a1c6-209cc2337b22" annotatedElement="5979d447-4d72-4ffb-a569-ddbe6aacc8dd">
            <body>&lt;p>All &lt;code>features&lt;/code> of this &lt;code>Type&lt;/code> with &lt;code>isEnd = true&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e3427ce9-6a0d-4e10-ad05-8554f7532ae4" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="52a7e2d6-9840-41db-89fb-d706d94de355" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="c4743769-27b0-4bec-a7ef-b187bc40ea4f" name="ownedEndFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="5979d447-4d72-4ffb-a569-ddbe6aacc8dd f062fa83-0335-40e0-8652-a22e6a8b3b11" association="80acb01e-92c0-408c-8b9d-78a1a1c6899e">
          <ownedComment xmi:id="029ec08f-d980-4c1e-ab48-861c30b74a24" annotatedElement="c4743769-27b0-4bec-a7ef-b187bc40ea4f">
            <body>&lt;p>All &lt;code>endFeatures&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>ownedFeatures&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="afc74250-a1cd-429e-9827-559c78d4f8f8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d2cf9dba-ecdf-4fe9-a388-a45810a3809c" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d77a343b-bf72-4b55-9419-c4973d9398d5" name="isSufficient" visibility="public">
          <ownedComment xmi:id="e8d66b6e-6daf-48fa-a921-9f3426eb804b" annotatedElement="d77a343b-bf72-4b55-9419-c4973d9398d5">
            <body>&lt;p>Whether all things that meet the classification conditions of this &lt;code>Type&lt;/code> must be classified by the &lt;code>Type&lt;/code>.&lt;/p>

&lt;p>(A &lt;code>Type&lt;/code>&amp;nbsp;gives conditions that must be met by whatever it classifies, but when &lt;code>isSufficient&lt;/code> is false, things may meet those conditions but still not be classified by the &lt;code>Type&lt;/code>. For example, a Type &lt;code>&lt;em>Car&lt;/em>&lt;/code> that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the &lt;code>Type&lt;/code> &lt;code>&lt;em>Car&lt;/em>&lt;/code> were sufficient, it would classify all four-wheeled things.)&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="86a7ab59-c4a2-44e2-ab9f-bb413563efb2" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ccf5f8be-87c6-4779-8d89-838dee93b54a" name="ownedConjugator" visibility="public" type="d8fbc0dd-ef0f-45c5-a080-d79d10517d09" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 6191d353-5d59-4470-a725-58c20f8c845f" association="400431c9-3459-455c-a02b-e1f35e0ffd3a">
          <ownedComment xmi:id="c9c7c7ce-679c-4a70-9d90-6bc4e894df8c" annotatedElement="ccf5f8be-87c6-4779-8d89-838dee93b54a">
            <body>&lt;p>A &lt;code>Conjugation&lt;/code> owned by this &lt;code>Type&lt;/code> for which the &lt;code>Type&lt;/code> is the &lt;code>originalType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="df0edea6-4a20-4c31-892d-da454f7d8e31" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="4115c180-ef27-4917-8416-e6b9d9e448f0" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d7e747db-632d-4f33-bf30-d5598b4bd5ba" name="isConjugated" visibility="public" isDerived="true">
          <ownedComment xmi:id="bebe6cd3-28bd-4e88-bf25-09f71ddc496c" annotatedElement="d7e747db-632d-4f33-bf30-d5598b4bd5ba">
            <body>&lt;p>Indicates whether this &lt;code>Type&lt;/code> has an &lt;code>ownedConjugator&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="9bd843d3-b458-49a8-a591-7423e0d79935" name="inheritedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="42941304-02d9-4962-b118-95860c17236a" association="abb17f0e-c5c9-433c-958b-cc48a38b74c0">
          <ownedComment xmi:id="535073ce-7894-46de-bc36-487268c03a31" annotatedElement="9bd843d3-b458-49a8-a591-7423e0d79935">
            <body>&lt;p>All the &lt;code>memberFeatures&lt;/code> of the &lt;code>inheritedMemberships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>FeatureMemberships&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="39f1ec1a-c1ed-42b3-a4d8-2f864994b936" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0e1827d3-227d-4d01-bed8-87c9942a5c1b" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="63fd5eb9-e073-41d0-9eb1-6a1a003047a9" name="multiplicity" visibility="public" type="4628a1d9-ef9d-48c5-bbe7-18d432c51596" isDerived="true" subsettedProperty="e77d17fa-39f5-4493-b101-5630bea6df70" association="0a5a6716-28ab-4499-b986-845496e19c86">
          <ownedComment xmi:id="5a4c0105-19ef-4835-8cce-1cd94e5620be" annotatedElement="63fd5eb9-e073-41d0-9eb1-6a1a003047a9">
            <body>&lt;p>An &lt;code>ownedMember&lt;/code> of this &lt;code>Type&lt;/code> that is a &lt;code>Multiplicity&lt;/code>, which constraints the cardinality of the &lt;code>Type&lt;/code>. If there is no such &lt;code>ownedMember&lt;/code>, then the cardinality of this &lt;code>Type&lt;/code> is constrained by all the &lt;code>Multiplicity&lt;/code> constraints applicable to any direct supertypes.&lt;/p>

&lt;p>&amp;nbsp;&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0d0d812f-450f-4121-83e1-c0afe1e3f475" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3929c736-0a1b-4fd4-8e83-588bea48a07e" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="1ff97b5a-c841-498a-a4a0-b72de63e73e4" name="unioningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isOrdered="true" isDerived="true" association="106ace6f-4098-40ce-b552-390f7aaf8258">
          <ownedComment xmi:id="1b982848-ee38-4672-9bfa-020e76ad17ff" annotatedElement="1ff97b5a-c841-498a-a4a0-b72de63e73e4">
            <body>&lt;p>The interpretations of a &lt;code>Type&lt;/code> with &lt;code>unioningTypes&lt;/code> are asserted to be the same as those of all the &lt;code>unioningTypes&lt;/code> together, which are the &lt;code>Types&lt;/code> derived from the &lt;code>unioningType&lt;/code> of the &lt;code>ownedUnionings&lt;/code> of this &lt;code>Type&lt;/code>. For example, a &lt;code>Classifier&lt;/code> for people might be the union of &lt;code>Classifiers&lt;/code> for all the sexes. Similarly, a feature for people&amp;#39;s children might be the union of features dividing them in the same ways as people in general.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="07431d4c-fcf6-4be2-8187-170de89fe11a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ca03d95a-77a0-4ba6-927e-4c0adb2958da" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="24d357f9-3e15-4f53-90b2-f3a2c4b79039" name="ownedIntersecting" visibility="public" type="1acbf4dd-1ebb-429f-882c-9b2928bb02d2" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 fd194ed0-9544-4215-b3df-64c5423ec874" association="e9c1a9f6-490a-49b5-8260-979a084bd430">
          <ownedComment xmi:id="46920543-a3b3-463f-b634-81c8f89e6aae" annotatedElement="24d357f9-3e15-4f53-90b2-f3a2c4b79039">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>Intersectings&lt;/code>, have the &lt;code>Type&lt;/code> as their &lt;code>typeIntersected&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="16a3927d-a347-404b-b21e-65ab6cf7d213" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ad19df5b-a5f5-4b5d-8ccc-f15e65577b4f" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="602fbd6c-9469-4f48-b529-907195ecb74b" name="intersectingType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isOrdered="true" isDerived="true" association="de884301-db05-4d33-a522-8c5106ca5633">
          <ownedComment xmi:id="59e60117-a115-4736-bfe9-95cb11f2208f" annotatedElement="602fbd6c-9469-4f48-b529-907195ecb74b">
            <body>&lt;p>The interpretations of a &lt;code>Type&lt;/code> with &lt;code>intersectingTypes&lt;/code> are asserted to be those in common among the &lt;code>intersectingTypes&lt;/code>, which are the &lt;code>Types&lt;/code> derived from the &lt;code>intersectingType&lt;/code> of the &lt;code>ownedIntersectings&lt;/code> of this &lt;code>Type&lt;/code>. For example, a &lt;code>Classifier&lt;/code> might be an intersection of &lt;code>Classifiers&lt;/code> for people of a particular sex and of a particular nationality. Similarly, a feature for people&amp;#39;s children of a particular sex might be the intersection of a &lt;code>Feature&lt;/code> for their children and a &lt;code>Classifier&lt;/code> for people of that sex (because the interpretations of the children &lt;code>Feature&lt;/code> that identify those of that sex are also interpretations of the Classifier for that sex).&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3a7e5b68-3267-49d7-9e0a-81aefbb8d028" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="95549809-cca3-460f-926d-cee2cc6e0501" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="eccbd0e6-244e-4264-9654-eb72d0a0c1c3" name="ownedUnioning" visibility="public" type="e24c811d-8a70-448d-95b7-58a7d97aaae2" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 fd194ed0-9544-4215-b3df-64c5423ec874" association="f36e2c9d-0d87-4931-b4c4-56ee58d12f26">
          <ownedComment xmi:id="c4c91386-1892-4075-bcfc-6509670f1300" annotatedElement="eccbd0e6-244e-4264-9654-eb72d0a0c1c3">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>Unionings&lt;/code>, having the &lt;code>Type&lt;/code> as their &lt;code>typeUnioned&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a27ac7a2-2336-49e9-ab15-849b8f61c104" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ae0c759c-88fd-4d3a-b8e6-3f3a97146c7e" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="37d00410-6821-48b3-a834-6183305addae" name="ownedDisjoining" visibility="public" type="a5e249bc-a9dd-482e-9430-33c95d80247d" aggregation="composite" isDerived="true" subsettedProperty="9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9 b8d8888f-330c-4b04-ba03-6902de88586e" association="a7a03b50-b4e6-4367-8005-a1e20c668882">
          <ownedComment xmi:id="a13187bf-69db-48fe-98d5-7fcb831e1672" annotatedElement="37d00410-6821-48b3-a834-6183305addae">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>Disjoinings&lt;/code>, for which the &lt;code>Type&lt;/code> is the &lt;code>typeDisjoined&lt;/code> &lt;code>Type&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="35ce0af3-21ff-4d47-8eff-e90debdbebbe" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2118f538-b52c-448f-aac1-f3807699797a" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="c7ddb5de-07c8-4a60-ae17-11b745959f98" name="featureMembership" visibility="public" type="10189040-993c-4d64-aacf-0d99b558af68" isOrdered="true" isDerived="true" association="50a7eac5-caf4-4830-a808-0db4664c9fb1">
          <ownedComment xmi:id="b493eee4-cc66-4518-b784-e1228561d27c" annotatedElement="c7ddb5de-07c8-4a60-ae17-11b745959f98">
            <body>&lt;p>The &lt;code>FeatureMemberships&lt;/code> for &lt;code>features&lt;/code> of this &lt;code>Type&lt;/code>, which include all &lt;code>ownedFeatureMemberships&lt;/code> and those &lt;code>inheritedMemberships&lt;/code> that are &lt;code>FeatureMemberships&lt;/code> (but does &lt;em>not&lt;/em> include any &lt;code>importedMemberships&lt;/code>).&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="21163b0b-1dd1-4ead-be6a-82a565f0cf29" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a05a088c-6a9e-4316-b86a-b737367e6506" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="7ffecf7a-110c-4ebe-a455-7d93bb939d2c" name="differencingType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isOrdered="true" isDerived="true" association="b8b47f7b-d446-460c-8015-6c184057611f">
          <ownedComment xmi:id="912178a5-2a31-485a-b9df-7afd771bcd01" annotatedElement="7ffecf7a-110c-4ebe-a455-7d93bb939d2c">
            <body>&lt;p>The interpretations of a &lt;code>Type&lt;/code> with &lt;code>differencingTypes&lt;/code> are asserted to be those of the first of those &lt;code>Types&lt;/code>, but not including those of the remaining &lt;code>Types&lt;/code>. For example, a &lt;code>Classifier&lt;/code> might be the difference of a &lt;code>Classifier&lt;/code> for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a &lt;code>Classifier&lt;/code> for people of a particular sex, identifying their children not of that sex (because the interpretations of the children &lt;code>Feature&lt;/code> that identify those of that sex are also interpretations of the &lt;code>Classifier&lt;/code> for that sex).&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2768a5b2-c4f9-443b-a21b-a9c64021f54d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="95cd0214-6930-4c2d-97ae-767ad8825548" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="6de3e4fa-d030-4056-a604-5a08af796fe4" name="ownedDifferencing" visibility="public" type="887c3ec8-ed8f-434a-a993-2eff824ef796" isOrdered="true" aggregation="composite" isDerived="true" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874 9a0cb697-5a6b-4fa8-806e-ea6c79d5ada9" association="1918594c-c53f-4f79-b8d6-7f7fcc193a04">
          <ownedComment xmi:id="f86d4009-cddd-40b0-a87b-d5559dce1970" annotatedElement="6de3e4fa-d030-4056-a604-5a08af796fe4">
            <body>&lt;p>The &lt;code>ownedRelationships&lt;/code> of this &lt;code>Type&lt;/code> that are &lt;code>Differencings&lt;/code>, having this &lt;code>Type&lt;/code> as their &lt;code>typeDifferenced&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4a12643e-4268-4702-87b9-ce60473b95cc" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="126cf03f-77f8-4576-a274-2f1662e7362b" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5b298b23-243e-4a34-afc9-15236eca08a8" name="directedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="42941304-02d9-4962-b118-95860c17236a" association="922a0f0b-71e7-4de6-b752-18c8937c6fc4">
          <ownedComment xmi:id="b58622a2-a40c-43e6-857f-e944acb0409a" annotatedElement="5b298b23-243e-4a34-afc9-15236eca08a8">
            <body>&lt;p>The &lt;code>features&lt;/code> of this &lt;code>Type&lt;/code> that have a non-null &lt;code>direction&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e4d989e4-2285-472c-a74c-2ca6b43f21f0" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7de57906-6a8f-4077-aa1a-e90ab25e0c65" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedOperation xmi:id="06e461b1-c14c-4bd8-8505-202a81ac2b9a" name="visibleMemberships" visibility="public" bodyCondition="613ace4c-51d4-4b8e-b332-5f8ccb761401" redefinedOperation="00b0ab66-7abb-4d9c-aa6b-deedefd969d1">
          <ownedComment xmi:id="d568137a-8947-4aaf-a433-d84a4ca21d7e" annotatedElement="06e461b1-c14c-4bd8-8505-202a81ac2b9a">
            <body>&lt;p>The visible &lt;code>Memberships&lt;/code> of a &lt;code>Type&lt;/code> include &lt;code>inheritedMemberships&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="613ace4c-51d4-4b8e-b332-5f8ccb761401" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="f6f80512-0d0b-4567-9886-a0aad2858ab0" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let visibleInheritedMemberships : Sequence(Membership) = 
    inheritedMemberships(excluded)->
        select(includeAll or visibility = VisibilityKind::public) in
self.oclAsType(Namespace).visibleMemberships(excluded, isRecursive, includeAll)->
    union(visibleInheritedMemberships)</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="470dca19-ad2d-454d-bd00-13c062984e72" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="47e7c19f-949c-4831-9e99-c1293df5d71d" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="4ca4c41d-9ee6-4b7c-a3a7-8a081fdad12f" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="bdc9ddd0-887c-4e59-a212-81472d3df01c" name="isRecursive" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="13b35c2e-3cb8-4f3d-ad93-dfb8d80ab623" name="includeAll" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="69c590bf-5fb7-4e2a-ade4-81c272851795" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e5caeb3d-96b2-4235-be55-d58a7b2bfa92" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="51e726e5-d6d1-446c-803c-49fee210f8cc" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="3b59c7e3-821a-43d7-bbcc-cd59b54182d8" name="inheritedMemberships" visibility="public">
          <ownedComment xmi:id="35da27a2-c811-4a6a-a00c-33a3a93d1e79" annotatedElement="3b59c7e3-821a-43d7-bbcc-cd59b54182d8">
            <body>&lt;p>Return the inherited &lt;code>Memberships&lt;/code> of this &lt;code>Type&lt;/code>, excluding those supertypes in the &lt;code>excluded&lt;/code> set.&lt;/p>
</body>
          </ownedComment>
          <ownedParameter xmi:id="689e3e54-864c-47da-8c0e-3900bbea4ed3" name="excluded" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0c8411d1-8259-49cf-bad0-f311edbed346" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d7334f39-5238-40f0-8a68-9d53d5f21ea2" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="86ef976a-7628-42fc-8cc3-de80c8c06be6" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" isOrdered="true" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3fc29f36-a6f9-4d23-8d6d-b6ab830f1df1" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="132bc0a7-d6ce-4470-880b-6f71bcd1790e" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="d9bdf041-6f98-42c3-8031-811e7bbf0c3c" name="directionOf" visibility="public" bodyCondition="da5aca1d-ffd6-4944-80da-821813ff64eb">
          <ownedComment xmi:id="b101e273-2b18-4cc0-95b3-59ccdc51291b" annotatedElement="d9bdf041-6f98-42c3-8031-811e7bbf0c3c">
            <body>&lt;p>If the given &lt;code>feature&lt;/code> is a &lt;code>feature&lt;/code> of this &lt;code>Type&lt;/code>, then return its direction relative to this &lt;code>Type&lt;/code>, taking conjugation into account.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="da5aca1d-ffd6-4944-80da-821813ff64eb" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="d96d234c-fbf1-4ef3-a224-6ff5cb714d35" name="" visibility="public">
              <language>OCL2.0</language>
              <body>directionOfExcluding(f, Set{})</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="8e0082f2-b27b-4dbd-83bd-bf8f950a156c" name="feature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
          <ownedParameter xmi:id="237b7c07-99f0-4d94-9872-1556ee855a88" name="" visibility="public" type="7afbde11-a8e1-455f-bbec-22a4e1f5b814" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a172cd9e-2871-437a-9333-834634b07afe" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b5a6542f-ed15-4eb1-bb97-54b0c439a6dc" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="aa380999-d659-4f32-8cf5-2e1dcf9d8125" name="directionOfExcluding" visibility="public" bodyCondition="77abe6c5-5e07-4d11-b463-7e1516002cc8">
          <ownedComment xmi:id="7b403790-8953-45be-983e-ef4a7defa7fe" annotatedElement="aa380999-d659-4f32-8cf5-2e1dcf9d8125">
            <body>&lt;p>Return the direction of the given &lt;code>feature&lt;/code> relative to this &lt;code>Type&lt;/code>, excluding a given set of &lt;code>Types&lt;/code> from the search of supertypes of this &lt;code>Type&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="77abe6c5-5e07-4d11-b463-7e1516002cc8" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="6221ac84-952f-4117-8d00-a5e1a74df6fd" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let excludedSelf : Set(Type) = excluded->including(self) in
if feature.owningType = self then feature.direction
else if ownedConjugator &lt;> null then
    if excludedSelf->includes(ownedConjugator.originalType) then null
    else
        let originalDirection: FeatureDirectionKind = 
            ownedConjugator.originalType.directionOfExcluding(feature, excludedSelf) in
        if originalDirection = FeatureDirectionKind::_'in' then FeatureDirectionKind::out
        else if originalDirection = FeatureDirectionKind::out then FeatureDirectionKind::_'in'
        else originalDirection
        endif endif
    endif
else
    let directions: Sequence(FeatureDirectionKind) = 
        ownedSpecialization.general->
            excluding(excludedSelf).
            directionOfExcluding(feature, excludedSelf)->
            select(d | d &lt;> null) in
    if directions->isEmpty() then null
    else directions->at(1)
    endif
endif endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="191b62dd-7aeb-4bc2-ba68-64c945b83fc7" name="feature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
          <ownedParameter xmi:id="514b2f90-ba60-47df-86a5-b8decccf4276" name="excluded" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="60194ece-3e66-41fb-b71d-a4cc72b90c1f" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="81fd1bfa-7459-4104-a204-912b4c9a8c8a" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="61218c24-60cd-4e9b-bac9-fd5757c2b1fa" name="" visibility="public" type="7afbde11-a8e1-455f-bbec-22a4e1f5b814" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e57eee1a-a365-40e6-bc41-3029117a2fc1" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0a65b40b-b41a-477e-b624-e35b31b66bf0" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="a25ee5ac-763f-48a4-82ed-f8a21608b733" name="allSupertypes" visibility="public" bodyCondition="557277e2-6c1b-4bbe-a1b1-673a944ffc50">
          <ownedComment xmi:id="0636046f-9985-4db8-b397-e4a580bac220" annotatedElement="a25ee5ac-763f-48a4-82ed-f8a21608b733">
            <body>&lt;p>Return all &lt;code>Types&lt;/code> related to this &lt;code>Type&lt;/code> as supertypes directly or transitively by &lt;code>Specialization&lt;/code> &lt;code>Relationships&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="557277e2-6c1b-4bbe-a1b1-673a944ffc50" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="bd022d8c-fb91-47ce-bc69-f57f15f03e7d" name="" visibility="public">
              <language>OCL2.0</language>
              <body>ownedSpecialization->
    closure(general.ownedSpecialization).general->
    including(self)</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="f2544e6f-ec32-4748-b0cd-157489e09f4d" name="result" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6bd45fe4-0ac7-40c2-8656-d93a62d157b6" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7e767ed5-e149-468d-9e53-ef37237eb16e" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="e6d2958e-e191-4056-88ca-2a627b9d736e" name="specializes" visibility="public" bodyCondition="083d1aef-78ac-4a02-8d35-58e5d9548d96">
          <ownedComment xmi:id="7ab13ac7-8588-451a-bb23-ea9376b5413c" annotatedElement="e6d2958e-e191-4056-88ca-2a627b9d736e">
            <body>&lt;p>Check whether this &lt;code>Type&lt;/code> is a direct or indirect specialization of the given &lt;code>supertype&lt;code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="083d1aef-78ac-4a02-8d35-58e5d9548d96" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="e37858cc-5a2c-4e48-a958-55a851564a5e" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if isConjugated then 
    ownedConjugator.originalType.specializes(supertype)
else
    allSupertypes()->includes(supertype)
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="e72e444b-baad-4160-a1cd-eeab07d7a28b" name="supertype" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7"/>
          <ownedParameter xmi:id="d1ddd0db-0656-4aeb-a5c7-c5b95400fc34" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="1c1981e7-79ea-41ca-bb7e-d16febea2134" name="specializesFromLibrary" visibility="public" bodyCondition="9b63d4e5-ee32-400f-993f-4ea35288c87e">
          <ownedComment xmi:id="d4f15d84-9734-4a5b-ad31-80b7ee272084" annotatedElement="1c1981e7-79ea-41ca-bb7e-d16febea2134">
            <body>&lt;p>Check whether this &lt;code>Type&lt;/code> is a direct or indirect specialization of the named library &lt;code>Type&lt;/code>. &lt;code>libraryTypeName&lt;/code> must conform to the syntax of a KerML qualified name and must resolve to a &lt;code>Type&lt;/code> in global scope.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="9b63d4e5-ee32-400f-993f-4ea35288c87e" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="5c24a7e0-e4b8-4e11-8c1f-681921dc3a60" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let mem : Membership = resolveGlobal(libraryTypeName) in
mem &lt;> null and mem.memberElement.oclIsKindOf(Type) and
specializes(mem.memberElement.oclAsType(Type))</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="a86630bf-03df-4318-af7b-d1495c23b647" name="libraryTypeName" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="5b219177-32de-4e48-8c56-79554c965634" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="5c8479ce-ac64-4d2e-bbfd-bb4aa7625864" name="A_typeWithFeature_feature" visibility="public" memberEnd="a73b8151-30bf-4f8d-9283-34cdea4ac29b 42941304-02d9-4962-b118-95860c17236a">
        <ownedEnd xmi:id="a73b8151-30bf-4f8d-9283-34cdea4ac29b" name="typeWithFeature" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2" association="5c8479ce-ac64-4d2e-bbfd-bb4aa7625864">
          <ownedComment xmi:id="1d474895-9bb5-4e06-9ee7-5cdef6cd8abf" annotatedElement="a73b8151-30bf-4f8d-9283-34cdea4ac29b">
            <body>&lt;p>A Type that owns or inherits a FeatureMembership Relationship with the &lt;code>feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="fc202434-89b5-4f7b-8b24-16626696d5d3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7c1d5c65-6766-48b9-bff6-cb3effc5c597" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="10189040-993c-4d64-aacf-0d99b558af68" name="FeatureMembership" visibility="public">
        <ownedComment xmi:id="c3281923-be3c-492f-bb6d-f0a6f41bcd47" annotatedElement="10189040-993c-4d64-aacf-0d99b558af68">
          <body>&lt;p>A &lt;code>FeatureMembership&lt;/code> is an &lt;code>OwningMembership&lt;/code> between a &lt;code>Feature&lt;/code> in an &lt;code>owningType&lt;/code> that is also a &lt;code>Featuring&lt;/code> &lt;code>Relationship&lt;/code> between the &lt;code>Feature&lt;/code> and the &lt;code>Type&lt;/code>, in which the &lt;code>featuringType&lt;/code> is the &lt;code>source&lt;/code> and the &lt;code>featureOfType&lt;/code> is the &lt;code>target&lt;/code>. A &lt;code>FeatureMembership&lt;/code> is always owned by its &lt;code>owningType&lt;/code>, which is the &lt;code>featuringType&lt;/code> for the &lt;code>FeatureMembership&lt;/code> considered as a &lt;code>Featuring&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="6bede445-1ebe-4b41-8a84-798f676e2ac6" general="0ac69c8b-1bab-45e9-82df-d840307444f7"/>
        <generalization xmi:id="74709159-eef7-4d3f-bd50-d260647f5c42" general="6b39d50b-0fa2-46c4-88e1-14ea53f05f8b"/>
        <ownedAttribute xmi:id="b698b27c-2d6a-4cc5-a202-ab3d3cb5ec2a" name="owningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" redefinedProperty="67aded9a-ae8a-4191-8053-2df04cce9c8c 35ddd42a-b8a5-4ea6-b2d1-ab7d0a827a00" subsettedProperty="2ef320b9-d900-484f-ab11-5aa59e441577" association="40e74d8d-9b1e-4e29-9918-2f5a02df411a">
          <ownedComment xmi:id="71090db3-d8a1-4a91-ba78-82b1f92339b7" annotatedElement="b698b27c-2d6a-4cc5-a202-ab3d3cb5ec2a">
            <body>&lt;p>The &lt;code>Type&lt;/code> that owns this &lt;code>FeatureMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6299c2ac-774d-420f-8d02-7a5a0056cab1" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d219f867-905c-44d6-b44a-ab1dff1c77aa" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="6bf83eae-2d89-4ea9-8c7b-92d8ef26bfaa" name="ownedMemberFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" aggregation="composite" isDerived="true" redefinedProperty="c23da327-2bed-4f05-9fa2-9749097c6eca e3585351-105e-4e50-9547-2974f25f09a4" association="2b5fa6a3-5aa7-453a-a026-7934e87e5711">
          <ownedComment xmi:id="01dc68a5-4620-43a0-8e5b-1a4967d20a08" annotatedElement="6bf83eae-2d89-4ea9-8c7b-92d8ef26bfaa">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that this &lt;code>FeatureMembership&lt;/code> relates to its &lt;code>owningType&lt;/code>, making it an &lt;code>ownedFeature&lt;/code> of the &lt;code>owningType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="51bba55b-2ef7-4e07-bd1a-0504efcdc082" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ad06331c-68c8-4f2e-a96c-af728026b9aa" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="5d35ff04-357b-48ef-b48f-1894e255639b" name="A_inheritedMembership_inheritingType" visibility="public" memberEnd="743ca62c-f40b-47f9-8b18-1c0219ba96a1 72ca5c5a-0342-4b44-871a-90b0297e5c5e">
        <ownedEnd xmi:id="72ca5c5a-0342-4b44-871a-90b0297e5c5e" name="inheritingType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="84afb4bc-eed8-491b-bcf4-169870b700a8" association="5d35ff04-357b-48ef-b48f-1894e255639b">
          <ownedComment xmi:id="a67fc0d2-06ef-4019-b53e-94a3dedd8982" annotatedElement="72ca5c5a-0342-4b44-871a-90b0297e5c5e">
            <body>&lt;p>The Type that inherits the &lt;code>inheritedMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="90b66197-04d9-4bfc-a309-83529e6feedd" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7538e3bd-d69c-4805-a4a0-0cc980ab4589" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="80acb01e-92c0-408c-8b9d-78a1a1c6899e" name="A_ownedEndFeature_endOwningType" visibility="public" memberEnd="c4743769-27b0-4bec-a7ef-b187bc40ea4f da436a76-d30f-483b-94e9-da9e631dcf18"/>
      <packagedElement xmi:type="uml:Association" xmi:id="abb17f0e-c5c9-433c-958b-cc48a38b74c0" name="A_inheritedFeature_inheritingType" visibility="public" memberEnd="9bd843d3-b458-49a8-a591-7423e0d79935 3c2f9045-efc7-4c59-9ddd-9ac7ed0b41e0">
        <ownedEnd xmi:id="3c2f9045-efc7-4c59-9ddd-9ac7ed0b41e0" name="inheritingType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="abb17f0e-c5c9-433c-958b-cc48a38b74c0">
          <ownedComment xmi:id="903c125e-2662-4972-b1b4-eecaede0dc92" annotatedElement="3c2f9045-efc7-4c59-9ddd-9ac7ed0b41e0">
            <body>&lt;p>A Type that has an &lt;code>inheritedMembership&lt;/code> with the &lt;code>inheritedFeature&lt;/code> as its &lt;code>memberFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="49fa15e1-1317-4611-97dd-15f826235794" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e9d41a33-a48c-4434-b2c5-135eb3b659ba" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="400431c9-3459-455c-a02b-e1f35e0ffd3a" name="A_ownedConjugator_owningType" visibility="public" memberEnd="ccf5f8be-87c6-4779-8d89-838dee93b54a ac96d8b3-4339-4e70-964b-d4be9f0fcc81"/>
      <packagedElement xmi:type="uml:Association" xmi:id="eac6bb6c-b904-49c9-87c8-ac55f45e3b85" name="A_originalType_conjugation" visibility="public" memberEnd="25a6f648-493b-4a49-bebd-401e893df0f3 9e884744-9656-4ac5-944c-1ace76368cd9">
        <ownedEnd xmi:id="9e884744-9656-4ac5-944c-1ace76368cd9" name="conjugation" visibility="public" type="d8fbc0dd-ef0f-45c5-a080-d79d10517d09" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="eac6bb6c-b904-49c9-87c8-ac55f45e3b85">
          <ownedComment xmi:id="ffbf0be2-9c92-49db-a4b7-3a0d14a3b9f1" annotatedElement="9e884744-9656-4ac5-944c-1ace76368cd9">
            <body>&lt;p>The Conjugations with a certain Type as the &lt;code>originalType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="40cf7250-d9d6-494b-8383-fa2a401e9bec" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2518195d-0602-410a-acfb-42ccaef0f3ac" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="d8fbc0dd-ef0f-45c5-a080-d79d10517d09" name="Conjugation" visibility="public">
        <ownedComment xmi:id="597b19bd-ea28-47a1-927e-fb974c41524d" annotatedElement="d8fbc0dd-ef0f-45c5-a080-d79d10517d09">
          <body>&lt;p>&lt;code>Conjugation&lt;/code> is a &lt;code>Relationship&lt;/code> between two types in which the &lt;code>conjugatedType&lt;/code> inherits all the &lt;code>Features&lt;/code> of the &lt;code>originalType&lt;/code>, but with all &lt;code>input&lt;/code> and &lt;code>output&lt;/code> &lt;code>Features&lt;/code> reversed. That is, any &lt;code>Features&lt;/code> with a &lt;code>direction&lt;/code> &lt;em>in&lt;/em> relative to the &lt;code>originalType&lt;/code> are considered to have an effective &lt;code>direction&lt;/code> of &lt;em>out&lt;/em> relative to the &lt;code>conjugatedType&lt;/code> and, similarly, &lt;code>Features&lt;/code> with &lt;code>direction&lt;/code> &lt;em>out&lt;/em> in the &lt;code>originalType&lt;/code> are considered to have an effective &lt;code>direction&lt;/code> of &lt;em>in&lt;/em> in the &lt;code>conjugatedType&lt;/code>. &lt;code>Features&lt;/code> with &lt;code>direction&lt;/code> &lt;em>inout&lt;/em>, or with no &lt;code>direction&lt;/code>, in the &lt;code>originalType&lt;/code>, are inherited without change.&lt;/p>

&lt;p>A &lt;code>Type&lt;/code> may participate as a &lt;code>conjugatedType&lt;/code> in at most one &lt;code>Conjugation&lt;/code> relationship, and such a &lt;code>Type&lt;/code> may not also be the &lt;code>specific&lt;/code> &lt;code>Type&lt;/code> in any &lt;code>Specialization&lt;/code> relationship.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="86c2e0df-d94c-4f3c-b1de-0f6273e3505c" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="25a6f648-493b-4a49-bebd-401e893df0f3" name="originalType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="eac6bb6c-b904-49c9-87c8-ac55f45e3b85">
          <ownedComment xmi:id="464a0b17-f80d-4906-83cd-428a80fc1f16" annotatedElement="25a6f648-493b-4a49-bebd-401e893df0f3">
            <body>&lt;p>The &lt;code>Type&lt;/code> to be conjugated.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ad95e05a-2073-48d5-a2a4-916da4fdffd2" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="dc530f00-8043-4130-88db-47b07c43c5c6" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="416f9595-3386-4e1b-b01e-57e62a6b49a4" name="conjugatedType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" association="77cce6d7-de9a-4861-b421-e049cabef367">
          <ownedComment xmi:id="cb8bcf95-2105-44aa-a668-38a044c9da36" annotatedElement="416f9595-3386-4e1b-b01e-57e62a6b49a4">
            <body>&lt;p>The &lt;code>Type&lt;/code> that is the result of applying &lt;code>Conjugation&lt;/code> to the &lt;code>originalType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3674ad04-65dd-4ba1-a470-0e0bdb051870" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="4e8247ce-2e51-4a24-9384-25a07d9b33ee" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ac96d8b3-4339-4e70-964b-d4be9f0fcc81" name="owningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="416f9595-3386-4e1b-b01e-57e62a6b49a4 c81d146c-d738-40a0-ab80-8526beac3673" association="400431c9-3459-455c-a02b-e1f35e0ffd3a">
          <ownedComment xmi:id="245bf012-7834-4800-8bf9-6b844058a3c8" annotatedElement="ac96d8b3-4339-4e70-964b-d4be9f0fcc81">
            <body>&lt;p>The &lt;code>conjugatedType&lt;/code> of this &lt;code>Conjugation&lt;/code> that is also its &lt;code>owningRelatedElement&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="de82461d-53a7-42cc-9334-c5f96086bf58" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="daa8da87-8cc8-4a8f-8d84-05bfb1d6b3b4" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="77cce6d7-de9a-4861-b421-e049cabef367" name="A_conjugatedType_conjugator" visibility="public" memberEnd="416f9595-3386-4e1b-b01e-57e62a6b49a4 6191d353-5d59-4470-a725-58c20f8c845f">
        <ownedEnd xmi:id="6191d353-5d59-4470-a725-58c20f8c845f" name="conjugator" visibility="public" type="d8fbc0dd-ef0f-45c5-a080-d79d10517d09" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874" association="77cce6d7-de9a-4861-b421-e049cabef367">
          <ownedComment xmi:id="005baf53-9d23-4154-9266-971548eca9fb" annotatedElement="6191d353-5d59-4470-a725-58c20f8c845f">
            <body>&lt;p>The Conjugation corresponding to the &lt;code>conjugatedType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="fcd78cef-dcbf-40a9-96bc-e3fd430c9aa2" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9b817218-9d4e-4359-be0a-16dfee2b9d27" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="4628a1d9-ef9d-48c5-bbe7-18d432c51596" name="Multiplicity" visibility="public">
        <ownedComment xmi:id="c71cbb60-803b-4fdc-8d30-316d24b252c8" annotatedElement="4628a1d9-ef9d-48c5-bbe7-18d432c51596">
          <body>&lt;p>A &lt;code>Multiplicity&lt;/code> is a &lt;code>Feature&lt;/code> whose co-domain is a set of natural numbers giving the allowed cardinalities of each &lt;code>typeWithMultiplicity&lt;/code>. The &lt;em>cardinality&lt;/em> of a &lt;code>Type&lt;/code> is defined as follows, depending on whether the &lt;code>Type&lt;/code> is a &lt;code>Classifier&lt;/code> or &lt;code>Feature&lt;/code>.
&lt;ul>
&lt;li>&lt;code>Classifier&lt;/code> – The number of basic instances of the &lt;code>Classifier&lt;/code>, that is, those instances representing things, which are not instances of any subtypes of the &lt;code>Classifier&lt;/code> that are &lt;code>Features&lt;/code>.
&lt;li>&lt;code>Features&lt;/code> – The number of instances with the same featuring instances. In the case of a &lt;code>Feature&lt;/code> with a &lt;code>Classifier&lt;/code> as its &lt;code>featuringType&lt;/code>, this is the number of values of &lt;code>Feature&lt;/code> for each basic instance of the &lt;code>Classifier&lt;/code>. Note that, for non-unique &lt;code>Features&lt;/code>, all duplicate values are included in this count.&lt;/li>
&lt;/ul>

&lt;p>&lt;code>Multiplicity&lt;/code> co-domains (in models) can be specified by &lt;code>Expression&lt;/code> that might vary in their results. If the &lt;code>typeWithMultiplicity&lt;/code> is a &lt;code>Classifier&lt;/code>, the domain of the &lt;code>Multiplicity&lt;/code> shall be &lt;em>&lt;code>Base::Anything&lt;/code>&lt;/em>.  If the &lt;code>typeWithMultiplicity&lt;/code> is a &lt;code>Feature&lt;/code>,  the &lt;code>Multiplicity&lt;/code> shall have the same domain as the &lt;code>typeWithMultiplicity&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="b965dd40-1520-4640-92bd-15322438195d" name="checkMultiplicityTypeFeaturing" visibility="public" constrainedElement="4628a1d9-ef9d-48c5-bbe7-18d432c51596">
          <ownedComment xmi:id="7729fe4d-5bfe-4070-a09b-019f0870b189" annotatedElement="b965dd40-1520-4640-92bd-15322438195d">
            <body>&lt;p>If the &lt;code>owningType&lt;/code> of a &lt;code>Multiplicity&lt;/code> is a &lt;code>Feature&lt;/code>, then the &lt;code>Multiplicity&lt;/code> must have the same &lt;code>featuringTypes&lt;/code> as that &lt;code>Feature&lt;/code>. Otherwise, it must have no &lt;code>featuringTypes&lt;/code> (meaning that it is implicitly featured by the base &lt;code>Classifier&lt;/code> &lt;em>&lt;code>Anything&lt;/code>&lt;/em>).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ce90275b-7730-47d5-8be7-9a283109d1b5" name="" visibility="public">
            <language>OCL2.0</language>
            <body>if owningType &lt;> null and owningType.oclIsKindOf(Feature) then
    featuringType = 
        owningType.oclAsType(Feature).featuringType
else
    featuringType->isEmpty()
endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="818fe372-19e1-4988-aa99-0fb88d0d2ed3" name="checkMultiplicitySpecialization" visibility="public" constrainedElement="4628a1d9-ef9d-48c5-bbe7-18d432c51596">
          <ownedComment xmi:id="ab54cc5b-d45d-487c-85d8-063311502146" annotatedElement="818fe372-19e1-4988-aa99-0fb88d0d2ed3">
            <body>&lt;p>A &lt;code>Multiplicity&lt;/code> must directly or indirectly specialize the &lt;code>Feature&lt;/code> &lt;code>&lt;em>Base::naturals&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d9b944cc-4a3e-434a-ada7-222263c67c1a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Base::naturals')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="7e7865ab-d696-4e02-ab21-664b60161ce2" general="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="2ce1e1af-8413-403e-9e71-0ebfab2aea9b" name="A_disjoiningType_disjoinedTypeDisjoining" visibility="public" memberEnd="70acb736-8e2e-4d5e-a8c4-ba326a62859c 662ad345-64c0-4769-9109-281231fda1c2">
        <ownedEnd xmi:id="662ad345-64c0-4769-9109-281231fda1c2" name="disjoinedTypeDisjoining" visibility="public" type="a5e249bc-a9dd-482e-9430-33c95d80247d" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="2ce1e1af-8413-403e-9e71-0ebfab2aea9b">
          <ownedComment xmi:id="ba281e02-ff63-4b2d-a324-35af3f58e808" annotatedElement="662ad345-64c0-4769-9109-281231fda1c2">
            <body>&lt;p>The Disjoinings that identify this Type as their &lt;code>disjoiningType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1ea2bb30-703a-4b72-8885-8539670e80c8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f8da6aaa-860c-42a6-bf35-bb8630ec6110" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="a5e249bc-a9dd-482e-9430-33c95d80247d" name="Disjoining" visibility="public">
        <ownedComment xmi:id="12d31abd-3d5a-4839-85fb-1fde135a0933" annotatedElement="a5e249bc-a9dd-482e-9430-33c95d80247d">
          <body>&lt;p>A &lt;code>Disjoining&lt;/code> is a &lt;code>Relationship&lt;/code> between &lt;code>Types&lt;/code> asserted to have interpretations that are not shared (disjoint) between them, identified as &lt;code>typeDisjoined&lt;/code> and &lt;code>disjoiningType&lt;/code>. For example, a &lt;code>Classifier&lt;/code> for mammals is disjoint from a &lt;code>Classifier&lt;/code> for minerals, and a &lt;code>Feature&lt;/code> for people&amp;#39;s parents is disjoint from a &lt;code>Feature&lt;/code> for their children.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="10505fb1-935f-4974-9fc7-0886ee49701c" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="f0a587d0-f650-4482-8f65-c1ff8512d614" name="typeDisjoined" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" association="eba3eeb3-8acf-4adc-8fb5-61d29b4eaf29">
          <ownedComment xmi:id="91719818-41fa-412b-afa0-005916925b96" annotatedElement="f0a587d0-f650-4482-8f65-c1ff8512d614">
            <body>&lt;p>&lt;code>Type&lt;/code> asserted to be disjoint with the &lt;code>disjoiningType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="80479208-4d63-4540-8645-301577276bf4" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="649fcac4-0081-488a-ad7c-0a1a629da8aa" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="70acb736-8e2e-4d5e-a8c4-ba326a62859c" name="disjoiningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="2ce1e1af-8413-403e-9e71-0ebfab2aea9b">
          <ownedComment xmi:id="182d4374-d084-4a84-8868-77c5a517bbf4" annotatedElement="70acb736-8e2e-4d5e-a8c4-ba326a62859c">
            <body>&lt;p>&lt;code>Type&lt;/code> asserted to be disjoint with the &lt;code>typeDisjoined&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="21fce473-edce-4712-accb-1bc0615a049e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0878a000-c325-4af2-aea3-7cc3f36aca0a" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="3b784da1-5a29-451c-83a0-fea18d2b9292" name="owningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="f0a587d0-f650-4482-8f65-c1ff8512d614 c81d146c-d738-40a0-ab80-8526beac3673" association="a7a03b50-b4e6-4367-8005-a1e20c668882">
          <ownedComment xmi:id="058d415b-bbf5-4194-9fa1-4ea9eab2a3fe" annotatedElement="3b784da1-5a29-451c-83a0-fea18d2b9292">
            <body>&lt;p>A &lt;code>typeDisjoined&lt;/code> that is also an &lt;code>owningRelatedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0e8aa1ff-d99c-4957-b89e-31c373f7e1e3" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="13d464d7-d7e5-4f80-abda-f03cffc3a7fc" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="922a0f0b-71e7-4de6-b752-18c8937c6fc4" name="A_directedFeature_typeWithDirectedFeature" visibility="public" memberEnd="5b298b23-243e-4a34-afc9-15236eca08a8 2c830d1e-9ea3-40f2-a73e-2303557522f8">
        <ownedEnd xmi:id="2c830d1e-9ea3-40f2-a73e-2303557522f8" name="typeWithDirectedFeature" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="922a0f0b-71e7-4de6-b752-18c8937c6fc4">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2613423d-c709-4edc-8adc-ee278d2e2fa9" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5c782ea7-18c5-41c8-b50c-d0a2002f49f2" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="eba3eeb3-8acf-4adc-8fb5-61d29b4eaf29" name="A_disjoiningTypeDisjoining_typeDisjoined" visibility="public" memberEnd="b8d8888f-330c-4b04-ba03-6902de88586e f0a587d0-f650-4482-8f65-c1ff8512d614">
        <ownedEnd xmi:id="b8d8888f-330c-4b04-ba03-6902de88586e" name="disjoiningTypeDisjoining" visibility="public" type="a5e249bc-a9dd-482e-9430-33c95d80247d" subsettedProperty="fd194ed0-9544-4215-b3df-64c5423ec874" association="eba3eeb3-8acf-4adc-8fb5-61d29b4eaf29">
          <ownedComment xmi:id="f3bf0d85-29aa-4010-9e9d-a26c8f557e00" annotatedElement="b8d8888f-330c-4b04-ba03-6902de88586e">
            <body>&lt;p>The Disjoinings that identify this Type as their &lt;code>typeDisjoined&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f994ecf6-fc91-4aaf-8eb0-4452e22bc910" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7869a862-b494-4572-864c-23462504b5e5" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="a7a03b50-b4e6-4367-8005-a1e20c668882" name="A_ownedDisjoining_owningType" visibility="public" memberEnd="37d00410-6821-48b3-a834-6183305addae 3b784da1-5a29-451c-83a0-fea18d2b9292"/>
      <packagedElement xmi:type="uml:Association" xmi:id="50a7eac5-caf4-4830-a808-0db4664c9fb1" name="A_featureMembership_type" visibility="public" memberEnd="c7ddb5de-07c8-4a60-ae17-11b745959f98 2ef320b9-d900-484f-ab11-5aa59e441577">
        <ownedEnd xmi:id="2ef320b9-d900-484f-ab11-5aa59e441577" name="type" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" association="50a7eac5-caf4-4830-a808-0db4664c9fb1">
          <ownedComment xmi:id="ecbd89bf-cb3a-4f0c-8300-fb0861dc0f5e" annotatedElement="2ef320b9-d900-484f-ab11-5aa59e441577">
            <body>&lt;p>A Type that owns or inherits the &lt;code>featureMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ec30e9f4-a3da-47bc-ab58-94d7ddd39392" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="327e3ed0-5a1a-483c-ac7f-87b465e9ad88" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="ac78a6c4-1824-459d-b099-56f95829749b" name="A_differencingType_differencedDifferencing" visibility="public" memberEnd="fdf0f94a-d20b-4597-a464-5c0b1a98b56c 62cd5ac3-0a34-49b1-8f6a-6b9657a9604e">
        <ownedEnd xmi:id="62cd5ac3-0a34-49b1-8f6a-6b9657a9604e" name="differencedDifferencing" visibility="public" type="887c3ec8-ed8f-434a-a993-2eff824ef796" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="ac78a6c4-1824-459d-b099-56f95829749b">
          <ownedComment xmi:id="500a2b91-e644-4998-a026-1645b3b88e27" annotatedElement="62cd5ac3-0a34-49b1-8f6a-6b9657a9604e">
            <body>&lt;p>The Differencings that identify this Type as their &lt;code>differencingType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="83db6422-f588-4f29-803b-a1e4d0fdfd84" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="132a38eb-79cc-41ed-bb0d-e44b0ce44227" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="106ace6f-4098-40ce-b552-390f7aaf8258" name="A_unioningType_unionedType" visibility="public" memberEnd="1ff97b5a-c841-498a-a4a0-b72de63e73e4 63e84520-d7f9-4a41-a894-a9d80cb9ef31">
        <ownedEnd xmi:id="63e84520-d7f9-4a41-a894-a9d80cb9ef31" name="unionedType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" association="106ace6f-4098-40ce-b552-390f7aaf8258">
          <ownedComment xmi:id="32d0f58c-424f-44cf-9baf-03cd4a9004a5" annotatedElement="63e84520-d7f9-4a41-a894-a9d80cb9ef31">
            <body>&lt;p>The Types that include this one among their &lt;code>unioningTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2c1bf2a8-0d23-457d-9b26-60d18a25cf10" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="08f4db0c-a0e3-4e35-ad01-1138e1a55574" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="37fe122c-b4ab-422d-8d87-00f0a2f7cf8f" name="A_unioningType_unionedUnioning" visibility="public" memberEnd="7694665d-aef1-409f-ae50-429a5cfc93c1 21f309d6-67c4-4417-9a92-a30046f0233c">
        <ownedEnd xmi:id="21f309d6-67c4-4417-9a92-a30046f0233c" name="unionedUnioning" visibility="public" type="e24c811d-8a70-448d-95b7-58a7d97aaae2" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="37fe122c-b4ab-422d-8d87-00f0a2f7cf8f">
          <ownedComment xmi:id="80bce0b2-e49e-406a-9f4d-fb7bb673ab37" annotatedElement="21f309d6-67c4-4417-9a92-a30046f0233c">
            <body>&lt;p>The Unionings that identify all these Types as their &lt;code>unioningType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d89c665c-425c-4be8-9680-6c98b2499f51" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f1a11f8f-b0d4-47ed-938d-c8db7e0f0775" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="de884301-db05-4d33-a522-8c5106ca5633" name="A_intersectingType_intersectedType" visibility="public" memberEnd="602fbd6c-9469-4f48-b529-907195ecb74b 4504c468-07e1-4ad8-ae89-9733d73fe27f">
        <ownedEnd xmi:id="4504c468-07e1-4ad8-ae89-9733d73fe27f" name="intersectedType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" association="de884301-db05-4d33-a522-8c5106ca5633">
          <ownedComment xmi:id="55b81641-b8ba-434c-984f-48de21319eae" annotatedElement="4504c468-07e1-4ad8-ae89-9733d73fe27f">
            <body>&lt;p>The Types that include this one among their &lt;code>intersectingTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4b5ae1c9-84b7-4c5b-afe4-fcd14c7da2a6" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5cde9f14-00fd-44f3-8682-b5aa4a8fbaaa" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="f36e2c9d-0d87-4931-b4c4-56ee58d12f26" name="A_typeUnioned_ownedUnioning" visibility="public" memberEnd="a8537072-ef92-4c77-8b4c-503a4bcad6f0 eccbd0e6-244e-4264-9654-eb72d0a0c1c3"/>
      <packagedElement xmi:type="uml:Association" xmi:id="b8b47f7b-d446-460c-8015-6c184057611f" name="A_differencingType_differencedType" visibility="public" memberEnd="7ffecf7a-110c-4ebe-a455-7d93bb939d2c a51b9e33-70a5-46c9-ac8f-c71168f3677b">
        <ownedEnd xmi:id="a51b9e33-70a5-46c9-ac8f-c71168f3677b" name="differencedType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" association="b8b47f7b-d446-460c-8015-6c184057611f">
          <ownedComment xmi:id="25b4b404-fe49-4558-a20c-4aa8e1a09dc6" annotatedElement="a51b9e33-70a5-46c9-ac8f-c71168f3677b">
            <body>&lt;p>The Types that include this one among their &lt;code>differencingTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="97e372c2-69a8-4ceb-ba0c-05f02b30b286" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9ce25b4d-30f9-4c9f-b966-7bc9a66c749b" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="887c3ec8-ed8f-434a-a993-2eff824ef796" name="Differencing" visibility="public">
        <ownedComment xmi:id="35d15fee-4d5a-4027-a581-9bb1101e8a94" annotatedElement="887c3ec8-ed8f-434a-a993-2eff824ef796">
          <body>&lt;p>&lt;code>Differencing&lt;/code> is a &lt;code>Relationship&lt;/code> that makes its &lt;code>differencingType&lt;/code> one of the &lt;code>differencingTypes&lt;/code> of its &lt;code>typeDifferenced&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="f7bc8411-52da-45a4-82fe-3690ae8873ee" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="52af1f1f-e0ab-47c8-8aae-0da34ec51d4f" name="typeDifferenced" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="c81d146c-d738-40a0-ab80-8526beac3673" association="1918594c-c53f-4f79-b8d6-7f7fcc193a04">
          <ownedComment xmi:id="5011c760-002c-43d2-aa36-203dd2bb7031" annotatedElement="52af1f1f-e0ab-47c8-8aae-0da34ec51d4f">
            <body>&lt;p>&lt;code>Type&lt;/code> with interpretations partly determined by &lt;code>differencingType&lt;/code>, as described in &lt;code>Type::differencingType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="68adedad-ea4a-44c7-89a4-a2f07187a3b6" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cd46f402-fe49-4a9e-961b-28ca1ab46eab" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fdf0f94a-d20b-4597-a464-5c0b1a98b56c" name="differencingType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="ac78a6c4-1824-459d-b099-56f95829749b">
          <ownedComment xmi:id="12c0df3e-647c-4833-a092-f4dd000c45c9" annotatedElement="fdf0f94a-d20b-4597-a464-5c0b1a98b56c">
            <body>&lt;p>&lt;code>Type&lt;/code> that partly determines interpretations of &lt;code>typeDifferenced&lt;/code>, as described in &lt;code>Type::differencingType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="37972e35-9940-41a8-9ce4-e887cdc2a4a2" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="10d897b6-e272-4fa9-8d30-335bccdf416e" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="1918594c-c53f-4f79-b8d6-7f7fcc193a04" name="A_typeDifferenced_ownedDifferencing" visibility="public" memberEnd="52af1f1f-e0ab-47c8-8aae-0da34ec51d4f 6de3e4fa-d030-4056-a604-5a08af796fe4"/>
      <packagedElement xmi:type="uml:Association" xmi:id="ba33ccdb-e820-4ea5-a8a9-5bf5eae0b661" name="A_intersectingType_intersectedIntersecting" visibility="public" memberEnd="fd763102-8889-4081-9ac6-9e9598ec557e b5253c69-339c-4f6e-913b-073a562ed886">
        <ownedEnd xmi:id="b5253c69-339c-4f6e-913b-073a562ed886" name="intersectedIntersecting" visibility="public" type="1acbf4dd-1ebb-429f-882c-9b2928bb02d2" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2" association="ba33ccdb-e820-4ea5-a8a9-5bf5eae0b661">
          <ownedComment xmi:id="0ab79ef6-2501-45bb-b0e3-40e68c479e57" annotatedElement="b5253c69-339c-4f6e-913b-073a562ed886">
            <body>&lt;p>The Intersectings that identify this Type as their &lt;code>intersectingType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9a563f38-8672-4e32-a3ac-8b2da23daa3a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0d915925-5435-4c31-ab19-0f32a1829eed" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="e24c811d-8a70-448d-95b7-58a7d97aaae2" name="Unioning" visibility="public">
        <ownedComment xmi:id="94dbb0b2-3bae-4261-9f15-3dc834572b93" annotatedElement="e24c811d-8a70-448d-95b7-58a7d97aaae2">
          <body>&lt;p>&lt;code>Unioning&lt;/code> is a &lt;code>Relationship&lt;/code> that makes its &lt;code>unioningType&lt;/code> one of the &lt;code>unioningTypes&lt;/code> of its &lt;code>typeUnioned&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="47dfd9b6-0a7f-48c5-a063-343acba2fec2" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="a8537072-ef92-4c77-8b4c-503a4bcad6f0" name="typeUnioned" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="c81d146c-d738-40a0-ab80-8526beac3673" association="f36e2c9d-0d87-4931-b4c4-56ee58d12f26">
          <ownedComment xmi:id="3332b3ae-4712-450a-b2e3-8abdb53d2ef6" annotatedElement="a8537072-ef92-4c77-8b4c-503a4bcad6f0">
            <body>&lt;p>&lt;code>Type&lt;/code> with interpretations partly determined by &lt;code>unioningType&lt;/code>, as described in &lt;code>Type::unioningType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="efc6b120-47e2-4fc5-b586-39af78dba86a" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7b427e63-bd7f-4c20-92bd-c519fabe8f71" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="7694665d-aef1-409f-ae50-429a5cfc93c1" name="unioningType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="37fe122c-b4ab-422d-8d87-00f0a2f7cf8f">
          <ownedComment xmi:id="39b6f8bb-6a81-42b6-9f21-b13745c41326" annotatedElement="7694665d-aef1-409f-ae50-429a5cfc93c1">
            <body>&lt;p>&lt;code>Type&lt;/code> that partly determines interpretations of &lt;code>typeUnioned&lt;/code>, as described in &lt;code>Type::unioningType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="678615d2-8b6a-4645-91b1-adaf4062f733" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b60eb14f-4231-41df-b125-acf556d78947" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="e9c1a9f6-490a-49b5-8260-979a084bd430" name="A_ownedIntersecting_typeIntersected" visibility="public" memberEnd="24d357f9-3e15-4f53-90b2-f3a2c4b79039 fabdf9d7-d076-4f01-87cb-9bd0a48effbf"/>
      <packagedElement xmi:type="uml:Class" xmi:id="1acbf4dd-1ebb-429f-882c-9b2928bb02d2" name="Intersecting" visibility="public">
        <ownedComment xmi:id="d67284e5-9625-405c-b9e5-841f7ac6455e" annotatedElement="1acbf4dd-1ebb-429f-882c-9b2928bb02d2">
          <body>&lt;p>&lt;code>Intersecting&lt;/code> is a &lt;code>Relationship&lt;/code> that makes its &lt;code>intersectingType&lt;/code> one of the &lt;code>intersectingTypes&lt;/code> of its &lt;code>typeIntersected&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="187c1443-27ad-4b06-a7c7-08ab7ff0d257" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="fabdf9d7-d076-4f01-87cb-9bd0a48effbf" name="typeIntersected" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="c81d146c-d738-40a0-ab80-8526beac3673" association="e9c1a9f6-490a-49b5-8260-979a084bd430">
          <ownedComment xmi:id="8b554559-9f0f-4f03-8642-58c8d6034821" annotatedElement="fabdf9d7-d076-4f01-87cb-9bd0a48effbf">
            <body>&lt;p>&lt;code>Type&lt;/code> with interpretations partly determined by &lt;code>intersectingType&lt;/code>, as described in &lt;code>Type::intersectingType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3a8a15a4-1a53-42e0-8be8-989fd2208d26" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7568fa34-0c0b-409c-ad71-aa2626c44a48" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fd763102-8889-4081-9ac6-9e9598ec557e" name="intersectingType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" association="ba33ccdb-e820-4ea5-a8a9-5bf5eae0b661">
          <ownedComment xmi:id="3b59f1c1-c36a-4e25-abab-b7cf5ff11ef4" annotatedElement="fd763102-8889-4081-9ac6-9e9598ec557e">
            <body>&lt;p>&lt;code>Type&lt;/code> that partly determines interpretations of &lt;code>typeIntersected&lt;/code>, as described in &lt;code>Type::intersectingType&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f133e288-c8c7-4a83-a5c0-34c0a1a5e6b9" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2fb22f63-968d-49af-8acb-45b440cf5ae2" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
    </packagedElement>
  </packagedElement>
  <packagedElement xmi:type="uml:Package" xmi:id="be3221b4-bef0-4d55-a9c7-cb7ffed86f6c" name="Kernel" visibility="public" URI="">
    <ownedComment xmi:id="1edee7ca-ad03-49fd-896f-95e5b0e2d808" annotatedElement="be3221b4-bef0-4d55-a9c7-cb7ffed86f6c">
      <body>The Kernel layer completes the KerML metamodel.</body>
    </ownedComment>
    <packageImport xmi:id="2016d5d1-ce77-4132-85d8-44404078c62f" importedPackage="d5869ef3-51fe-4056-9fff-0667021ed49b"/>
    <packagedElement xmi:type="uml:Package" xmi:id="50cfa157-5dd5-4f7a-a8bb-717e13e0c77c" name="Expressions" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="ff2b44c2-a329-4158-b27a-b05288eb741f" name="LiteralBoolean" visibility="public">
        <ownedComment xmi:id="e06b8805-ddf2-4ee6-8999-db0117d643c1" annotatedElement="ff2b44c2-a329-4158-b27a-b05288eb741f">
          <body>&lt;p>&lt;code>LiteralBoolean&lt;/code> is a &lt;code>LiteralExpression&lt;/code> that provides a &lt;code>&lt;em>Boolean&lt;/em>&lt;/code> value as a result. Its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> must have type &lt;code>&lt;em>Boolean&lt;/em>&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="3f7e7685-3e6d-45fc-8383-fface70f3c8c" name="checkLiteralBooleanSpecialization" visibility="public" constrainedElement="ff2b44c2-a329-4158-b27a-b05288eb741f">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="c7b4d38d-f048-4a7a-99b9-4bd0d8523283" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::literalBooleanEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="e9848a4f-1f05-4e5b-ae7d-07289e03a46c" general="e23db425-33d7-44f9-9177-b9ab707c74a9"/>
        <ownedAttribute xmi:id="3c4c6fc9-246c-4ab4-8822-494b5b3bc72d" name="value" visibility="public">
          <ownedComment xmi:id="3b67566a-5b14-4543-888f-1eef28ceca65" annotatedElement="3c4c6fc9-246c-4ab4-8822-494b5b3bc72d">
            <body>&lt;p>The &lt;code>&lt;em>Boolean&lt;/em>&lt;/code> value that is the result of evaluating this &lt;code>LiteralBoolean&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedComment xmi:id="50039f9b-3bdf-49f2-991f-16c84b4c39ac" annotatedElement="3c4c6fc9-246c-4ab4-8822-494b5b3bc72d">
            <body>&lt;p>The Boolean value that is the result of evaluating this Expression.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="e23db425-33d7-44f9-9177-b9ab707c74a9" name="LiteralExpression" visibility="public">
        <ownedComment xmi:id="5ec899e0-6070-432e-abb9-9b46e697d90c" annotatedElement="e23db425-33d7-44f9-9177-b9ab707c74a9">
          <body>&lt;p>A &lt;code>LiteralExpression&lt;/code> is an &lt;code>Expression&lt;/code> that provides a basic &lt;code>&lt;em>DataValue&lt;/em>&lt;/code> as a result.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="9d7db51d-b41d-46fd-b728-7cf4a1612fcd" name="deriveLiteralExpressionIsModelLevelEvaluable" visibility="public" constrainedElement="e23db425-33d7-44f9-9177-b9ab707c74a9">
          <ownedComment xmi:id="1f28746c-ab69-4ce0-8a4b-ab51167fbf6f" annotatedElement="9d7db51d-b41d-46fd-b728-7cf4a1612fcd">
            <body>&lt;p>A &lt;code>LiteralExpression&lt;/code> is always model-level evaluable.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="72139a40-3fe3-468b-b576-6b6cf0df932a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isModelLevelEvaluable = true</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="f4be720c-f616-4c5e-a5e9-733d6d2b56df" name="checkLiteralExpressionSpecialization" visibility="public" constrainedElement="e23db425-33d7-44f9-9177-b9ab707c74a9">
          <ownedComment xmi:id="56b75203-7892-4cf8-95b2-e9164db7dcb9" annotatedElement="f4be720c-f616-4c5e-a5e9-733d6d2b56df">
            <body>&lt;p>A &lt;code>LiteralExpression&lt;/code> must directly or indirectly specialize the base &lt;code>LiteralExpression&lt;/code> &lt;code>&lt;em>Performances::literalEvaluations&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="afbecdd0-e26f-4da6-9e76-661d26535a23" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::literalEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="3cedd5a5-d88a-4fb1-b276-71aec3536a9c" general="e8904b17-7bf3-47eb-b907-a6efe22c56b7"/>
        <ownedOperation xmi:id="778a1c21-2421-4467-8844-de2cda8b48ea" name="modelLevelEvaluable" visibility="public" bodyCondition="9922bdcb-caac-446a-a709-0e9b93db6831" redefinedOperation="f485a5f8-785d-460a-9e4a-84835140baad">
          <ownedComment xmi:id="e66cd195-4a39-4d99-9548-88b595abf068" annotatedElement="778a1c21-2421-4467-8844-de2cda8b48ea">
            <body>&lt;p>A &lt;code>LiteralExpression&lt;/code> is always model-level evaluable.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="9922bdcb-caac-446a-a709-0e9b93db6831" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="b46de19a-a6cf-4f6f-addb-b473ef829269" name="" visibility="public">
              <language>OCL2.0</language>
              <body>true</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="a428885e-9430-4119-be30-23cdfc1c07f3" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="ce5a3328-be3e-4845-8090-14e7d64ba991" name="visited" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b9327e26-daa5-44b2-b40a-51c73355d775" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="68b57dfa-c3e0-4f9e-9eca-69f70d8fb74f" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="c384ffb9-a47d-4640-a289-0f6a5747ee0b" name="evaluate" visibility="public" bodyCondition="b98b2a53-d10e-441b-8f76-858649892c1e" redefinedOperation="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
          <ownedComment xmi:id="ed16b870-17bb-4fce-b5d5-a8ee512a4709" annotatedElement="c384ffb9-a47d-4640-a289-0f6a5747ee0b">
            <body>&lt;p>The model-level value of a &lt;code>LiteralExpression&lt;/code> is itself.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="b98b2a53-d10e-441b-8f76-858649892c1e" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="ea5f1ea8-915c-4f8c-8e00-4744aaba8048" name="" visibility="public">
              <language>OCL2.0</language>
              <body>Sequence{self}</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="897e49f2-181c-4717-9828-b56f2e72d260" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="1767d68b-ea8a-4375-acad-3b100cfead0d" name="result" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ecce0be7-57e5-4a17-9767-19a5110afe04" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="eef8c80d-e31f-41b3-812c-b19c02895770" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="1054e43c-134f-4a04-bdb7-a35b10b0fa17" name="LiteralRational" visibility="public">
        <ownedComment xmi:id="83ea8743-34d4-41f5-a9af-7331152abbe4" annotatedElement="1054e43c-134f-4a04-bdb7-a35b10b0fa17">
          <body>&lt;p>A &lt;code>LiteralRational&lt;/code> is a &lt;code>LiteralExpression&lt;/code> that provides a &lt;code>&lt;em>Rational&lt;/em>&lt;/code> value as a result. Its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> must have the type &lt;code>&lt;em>Rational&lt;/em>&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="36d991c0-475b-452a-bd61-fe7ced5152c4" name="checkLiteralRationalSpecialization" visibility="public" constrainedElement="1054e43c-134f-4a04-bdb7-a35b10b0fa17">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="0ac05af4-b5f9-4955-9106-63c48db0a882" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::literalRationalEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="e2e4728c-b9fa-4a1f-a7df-711a6f18b117" general="e23db425-33d7-44f9-9177-b9ab707c74a9"/>
        <ownedAttribute xmi:id="90c4afa5-39a7-4aee-8639-26bb684ba6f5" name="value" visibility="public">
          <ownedComment xmi:id="1a3d309c-a496-404a-9d53-bbeea3759cbe" annotatedElement="90c4afa5-39a7-4aee-8639-26bb684ba6f5">
            <body>&lt;p>The value whose rational approximation is the result of evaluating this &lt;code>LiteralRational&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="cf7d3183-3734-4c27-bfb6-de9dfa242a7a" annotatedElement="90c4afa5-39a7-4aee-8639-26bb684ba6f5">
            <body>&lt;p>The Real value that is the result of evaluating this Expression.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="54b7d67f-dec3-4d85-8221-68fd3be4314d" name="LiteralInfinity" visibility="public">
        <ownedComment xmi:id="8809f09d-9f9f-47ea-b0ad-69c64b4a6e04" annotatedElement="54b7d67f-dec3-4d85-8221-68fd3be4314d">
          <body>&lt;p>A &lt;code>LiteralInfinity&lt;/code> is a &lt;code>LiteralExpression&lt;/code> that provides the positive infinity value (&lt;code>*&lt;/code>). It's &lt;code>result&lt;/code> must have the type &lt;code>&lt;em>Positive&lt;/em>&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="4fa7a6d5-45e9-4b17-9cc9-bd1b30467439" name="checkLiteralInfinitySpecialization" visibility="public" constrainedElement="54b7d67f-dec3-4d85-8221-68fd3be4314d">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b462d0f4-6717-493c-9d7d-9d42360066e5" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::literalIntegerEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="9f896759-f387-4ba2-8743-9b5cbec40786" general="e23db425-33d7-44f9-9177-b9ab707c74a9"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="67fbba78-d763-48c8-9338-2613d8057e99" name="LiteralInteger" visibility="public">
        <ownedComment xmi:id="cd610c53-54ac-43ee-98cc-a406b2e170c1" annotatedElement="67fbba78-d763-48c8-9338-2613d8057e99">
          <body>&lt;p>A &lt;code>LiteralInteger&lt;/code> is a &lt;code>LiteralExpression&lt;/code> that provides an &lt;code>&lt;em>Integer&lt;/em>&lt;/code> value as a result. Its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> must have the type &lt;code>&lt;em>Integer&lt;/em>&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="502fb420-25d9-461e-b9c5-8a50b6be9ee8" name="checkLiteralIntegerSpecialization" visibility="public" constrainedElement="67fbba78-d763-48c8-9338-2613d8057e99">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="2738d597-64a4-4fb4-aa53-c9750b97acf3" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::literalIntegerEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="91ebc88b-5cfb-4592-a40f-f48cce512a9d" general="e23db425-33d7-44f9-9177-b9ab707c74a9"/>
        <ownedAttribute xmi:id="39b0778f-350c-4c1b-ae02-f80b93c13338" name="value" visibility="public">
          <ownedComment xmi:id="c1e1cccc-81da-42ab-b901-7b97ba7a4ab6" annotatedElement="39b0778f-350c-4c1b-ae02-f80b93c13338">
            <body>&lt;p>The &lt;code>&lt;em>Integer&lt;/em>&lt;/code> value that is the result of evaluating this &lt;code>LiteralInteger&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedComment xmi:id="a1c6ae34-d376-4ade-bb0c-faa611083519" annotatedElement="39b0778f-350c-4c1b-ae02-f80b93c13338">
            <body>&lt;p>The Integer value that is the result of evaluating this Expression.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="1cfff014-8153-4eb8-8a95-ef04b2a9545d" name="NullExpression" visibility="public">
        <ownedComment xmi:id="b6409389-a8b3-4824-8b8a-dfc24e1a9948" annotatedElement="1cfff014-8153-4eb8-8a95-ef04b2a9545d">
          <body>&lt;p>A &lt;code>NullExpression&lt;/code> is an &lt;code>Expression&lt;/code> that results in a null value.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="0884ae8a-f056-4611-bd10-822226779f27" name="checkNullExpressionSpecialization" visibility="public" constrainedElement="1cfff014-8153-4eb8-8a95-ef04b2a9545d">
          <ownedComment xmi:id="b1be3f4c-2e5c-48f7-ad2c-d6f076858909" annotatedElement="0884ae8a-f056-4611-bd10-822226779f27">
            <body>&lt;p>A &lt;code>NullExpression&lt;/code> must directly or indirectly specialize the base &lt;code>NullExpression&lt;/code> &lt;code>&lt;em>Performances::nullEvaluations&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f0c0dc09-b2eb-4bb3-9fd2-7445af790f86" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::nullEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="b5bb56d1-80fd-46f3-95ab-80614bbb885d" general="e8904b17-7bf3-47eb-b907-a6efe22c56b7"/>
        <ownedOperation xmi:id="f1295304-1601-40f1-8331-d2fa6cb03681" name="modelLevelEvaluable" visibility="public" bodyCondition="b540aaeb-f603-40ad-b1f8-7e1785947d2f" redefinedOperation="f485a5f8-785d-460a-9e4a-84835140baad">
          <ownedComment xmi:id="c1004225-a6a0-414d-be08-2569a30db6b2" annotatedElement="f1295304-1601-40f1-8331-d2fa6cb03681">
            <body>&lt;p>A &lt;code>NullExpression&lt;/code> is always model-level evaluable.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="b540aaeb-f603-40ad-b1f8-7e1785947d2f" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="df4a74d6-9a4d-47e8-aa19-7e9c00720c54" name="" visibility="public">
              <language>OCL2.0</language>
              <body>true</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="d2b0413b-ae43-4fbe-bb5e-de4d4cb51fab" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="0a208b09-dd5b-4ff3-96c6-7c3625617da8" name="visited" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c32e521d-a4d9-41bb-9694-da5fd509a015" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9cfe4231-79dd-4f8e-95bf-4b9dd29cf27a" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="e634c589-78c9-4161-ad17-2037a7e0f419" name="evaluate" visibility="public" bodyCondition="8f6f4aba-dbf6-4228-b14e-4e390c6a1fea" redefinedOperation="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
          <ownedComment xmi:id="aaf61ed8-91cb-4a33-891e-efd9bb98c2b3" annotatedElement="e634c589-78c9-4161-ad17-2037a7e0f419">
            <body>&lt;p>The model-level value of a &lt;code>NullExpression&lt;/code> is an empty sequence.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="8f6f4aba-dbf6-4228-b14e-4e390c6a1fea" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="97dbee74-4754-4661-a709-f4a9ad0efd86" name="" visibility="public">
              <language>OCL2.0</language>
              <body>Sequence{}</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="1f4788bf-6417-447d-8239-fe92464a28f4" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="3ed420be-4b8f-4bda-b27c-452751579b5f" name="result" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="2c8ffa9e-1ecb-4b7b-9bb8-9f94ba21fafb" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9dfc2e51-8c2c-42ce-80c1-d04ebae47757" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="2abff845-efe6-4a4f-b4fc-53205c6215ea" name="LiteralString" visibility="public">
        <ownedComment xmi:id="84a4c486-25a9-407b-b976-42593a4e1a93" annotatedElement="2abff845-efe6-4a4f-b4fc-53205c6215ea">
          <body>&lt;p>A &lt;code>LiteralString&lt;/code> is a &lt;code>LiteralExpression&lt;/code> that provides a &lt;code>&lt;em>String&lt;/em>&lt;/code> value as a result. Its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> must have the type &lt;code>&lt;em>String&lt;/em>&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="e9d49fe5-c9c8-4bc0-88bf-11cb18aa416a" name="checkLiteralStringSpecialization" visibility="public" constrainedElement="2abff845-efe6-4a4f-b4fc-53205c6215ea">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a08943c4-1cb9-4002-9eba-1e27ed3877fd" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::literalStringEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="87ca4226-c2dd-4f4e-8042-687ff5584ca4" general="e23db425-33d7-44f9-9177-b9ab707c74a9"/>
        <ownedAttribute xmi:id="86d8333d-4a56-4ff3-8a3e-465e7454d52a" name="value" visibility="public">
          <ownedComment xmi:id="c1e4b275-1761-4fa2-b517-82cc788eb6d7" annotatedElement="86d8333d-4a56-4ff3-8a3e-465e7454d52a">
            <body>&lt;p>The &lt;code>&lt;em>String&lt;/em>&lt;/code> value that is the result of evaluating this &lt;code>LiteralString&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="43772b63-5108-4d19-8231-f3c3b4477082" annotatedElement="86d8333d-4a56-4ff3-8a3e-465e7454d52a">
            <body>&lt;p>The String value that is the result of evaluating this Expression.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cc69359c-e435-415a-9365-06a116da9711" name="A_argument_invocation" visibility="public" memberEnd="6e8b8432-4206-42df-992e-3e689d6a0853 38c17301-a451-418d-8070-9f8b5fd4370a">
        <ownedEnd xmi:id="38c17301-a451-418d-8070-9f8b5fd4370a" name="invocation" visibility="public" type="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c" isDerived="true" subsettedProperty="ac96d8b3-4339-4e70-964b-d4be9f0fcc81" association="cc69359c-e435-415a-9365-06a116da9711">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9862f653-f0fe-468f-ba30-a83088e6bb08" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a8e52c0c-76e6-4b84-ad53-3182e3e4a578" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c" name="InvocationExpression" visibility="public">
        <ownedComment xmi:id="7666afd7-d201-4a5a-b887-b83d77505e23" annotatedElement="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c">
          <body>&lt;p>An &lt;code>InvocationExpression&lt;/code> is an &lt;code>Expression&lt;/code> each of whose input &lt;code>parameters&lt;/code> are bound to the &lt;code>result&lt;/code> of an &lt;code>argument&lt;/code> Expression.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="2cdc9055-385e-44cc-8df7-4db20d9adc01" name="checkInvocationExpressionConstructorBindingConnector" visibility="public" constrainedElement="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c">
          <ownedComment xmi:id="742b5a19-0d14-4411-b731-9d372ad48ce2" annotatedElement="2cdc9055-385e-44cc-8df7-4db20d9adc01">
            <body>&lt;p>If an &lt;code>InvocationExpression&lt;/code> does not have an &lt;code>ownedTyping&lt;/code> that is a &lt;code>Behavior&lt;/code> or an &lt;code>ownedSubsetting&lt;/code> of a &lt;code>Feature &lt;/code>that is typed by a &lt;code>Behavior&lt;/code>, then it must own a &lt;code>BindingConnector between itself and its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="33e348ee-ce7b-443d-9dd8-1690d701925e" name="" visibility="public">
            <language>OCL2.0</language>
            <body>not ownedTyping->exists(oclIsKindOf(Behavior)) and
not ownedSubsetting.subsettedFeature.type->exists(oclIsKindOf(Behavior)) implies
    ownedFeature.selectByKind(BindingConnector)->exists(
        relatedFeature->includes(self) and
        relatedFeature->includes(result))
            </body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="f120c4cc-12d9-42e7-8399-7b7e025394ca" name="checkInvocationExpressionDefaultValueBindingConnector" visibility="public" constrainedElement="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c">
          <ownedComment xmi:id="1f898eca-5e83-45e5-9fbe-9bfd8dedfbb4" annotatedElement="f120c4cc-12d9-42e7-8399-7b7e025394ca">
            <body>&lt;p>An &lt;code>InvocationExpression&lt;/code> must own a &lt;code>BindingConnector&lt;/code> between the &lt;code>featureWithValue&lt;/code> and &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> of any &lt;code>FeatureValue&lt;/code> that is the effective default value for a &lt;code>Feature&lt;/code> of the invoked &lt;code>Type&lt;/code> of the &lt;code>InvocationExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a642bc75-99b9-419e-9919-16acf1fff06c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>TBD</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="afab65bd-54ed-4254-a961-d77dadc0dcbd" name="deriveInvocationExpressionArgument" visibility="public" constrainedElement="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c">
          <ownedComment xmi:id="dd3cf0d1-d22b-4633-a518-8a2817e51b3d" annotatedElement="afab65bd-54ed-4254-a961-d77dadc0dcbd">
            <body>&lt;p>The &lt;code>arguments&lt;/code> of an &lt;code>InvocationExpression&lt;/code> are the &lt;code>value&lt;/code> &lt;code>Expressions&lt;/code> of the &lt;code>FeatureValues&lt;/code> of its owned input &lt;code>parameters&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="e4ca5750-ac6d-4c82-a499-150413a74819" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeature->
    select(direction = _'in').valuation->
    select(v | v &lt;> null).value</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="613bf85b-aea7-436f-813c-f1b2e108f284" name="validateInvocationExpressionParameterRedefinition" visibility="public" constrainedElement="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c">
          <ownedComment xmi:id="23924f06-52c8-4eab-ae1e-1b55dcbe034e" annotatedElement="613bf85b-aea7-436f-813c-f1b2e108f284">
            <body>&lt;p>Each input &lt;code>parameter&lt;/code> of an &lt;code>InvocationExpression&lt;/code> must redefine exactly one &lt;code>feature&lt;/code> of a &lt;code>type&lt;/code> of the &lt;code>InvocationExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d3199dca-b938-4c77-be68-51acfc03656a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let features : Set(Feature) = type.feature->asSet() in
input->forAll(inp | 
    inp.ownedRedefinition.redefinedFeature->
        intersection(features)->size() = 1)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="66566ed7-aa2e-4493-ab9c-e080fad129c8" name="validateInvocationExpressionNoDuplicateParameterRedefinition" visibility="public" constrainedElement="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c">
          <ownedComment xmi:id="23a80b3b-aad3-4df6-be0c-b7bc680d4748" annotatedElement="66566ed7-aa2e-4493-ab9c-e080fad129c8">
            <body>&lt;p>Two different input &lt;code>parameters&lt;/code> of an &lt;code>InvocationExpression&lt;/code> must not redefine the same &lt;code>feature&lt;/code> of a &lt;code>type&lt;/code> of the &lt;code>InvocationExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9db22976-d653-4a44-ae6e-ec6ee32a3a19" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let features : Set(Feature) = type.feature->asSet() in
input->forAll(inp1 | input->forAll(inp2 |
    inp1 &lt;> inp2 implies
        inp1.ownedRedefinition.redefinedFeature->
            intersection(inp2.ownedRedefinition.redefinedFeature)->
            intersection(features)->isEmpty()))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="aecf3330-8c4a-4fa3-bcff-ddd8b1cb4ce3" general="e8904b17-7bf3-47eb-b907-a6efe22c56b7"/>
        <ownedAttribute xmi:id="6e8b8432-4206-42df-992e-3e689d6a0853" name="argument" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isOrdered="true" isDerived="true" subsettedProperty="f062fa83-0335-40e0-8652-a22e6a8b3b11" association="cc69359c-e435-415a-9365-06a116da9711">
          <ownedComment xmi:id="4a580bce-731c-45c4-84db-77cd41ffd3a6" annotatedElement="6e8b8432-4206-42df-992e-3e689d6a0853">
            <body>&lt;p>The &lt;code>value&lt;/code> &lt;code>Expressions&lt;/code> of the &lt;code>FeatureValues&lt;/code> of the owned input &lt;code>parameters&lt;/code> of the &lt;code>InvocationExpression&lt;/code>.</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5f798975-29cc-4212-831f-ee8b8bd7ef51" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="476fe947-0bc9-45d6-962b-6caeef08dadd" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedOperation xmi:id="23e4a537-e223-4bc5-a150-62acfedc4f00" name="modelLevelEvaluable" visibility="public" bodyCondition="d5e64cd2-38d6-4a8d-b326-93ea5456f154" redefinedOperation="f485a5f8-785d-460a-9e4a-84835140baad">
          <ownedComment xmi:id="62d5baa3-e94c-47dd-9e45-fa53f972ecb9" annotatedElement="23e4a537-e223-4bc5-a150-62acfedc4f00">
            <body>&lt;p>An &lt;code>InvocationExpression&lt;/code> is model-level evaluable if all its &lt;code>argument&lt;/code> &lt;code>Expressions&lt;/code> are model-level evaluable and its &lt;code>function&lt;/code> is model-level evaluable.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="d5e64cd2-38d6-4a8d-b326-93ea5456f154" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="3279b4bf-2528-46df-bf05-4b676194e672" name="" visibility="public">
              <language>OCL2.0</language>
              <body>argument->forAll(modelLevelEvaluable(visited)) and 
    function.isModelLevelEvaluable</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="88229c77-a968-4927-8986-15a288c4c106" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="cdca93ff-ebe8-46e1-81cc-8f4aa566bf9f" name="visited" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5a3f42cd-c59a-4cfb-9d3f-3c720665d07a" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="13713145-815c-4162-a9df-e41d7954d822" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="d60ec4c8-4334-45dc-9347-5cbf8669907d" name="evaluate" visibility="public" redefinedOperation="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
          <ownedComment xmi:id="aeb77467-f17c-45f5-91f0-fa2357a471bb" annotatedElement="d60ec4c8-4334-45dc-9347-5cbf8669907d">
            <body>&lt;p>Apply the &lt;code>Function&lt;/code> that is the &lt;code>type&lt;/code> of this &lt;code>InvocationExpression&lt;/code> to the argument values resulting from evaluating each of the &lt;code>argument&lt;/code> &lt;code>Expressions&lt;/code> on the given &lt;code>target&lt;/code>. If the application is not possible, then return an empty sequence.&lt;/p>
</body>
          </ownedComment>
          <ownedParameter xmi:id="fdd43b5b-fa39-4d93-9d62-a74cb2350855" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="9986f076-646e-4815-9f0d-adcfea1a0271" name="result" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="96f8b718-c3c9-4deb-b41f-71d6b1c96603" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5d41ada0-a5b9-4a40-bacc-3993d0291b5d" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="d6f8cd8f-4a61-40ce-b17a-9c8dd722fb57" name="FeatureReferenceExpression" visibility="public">
        <ownedComment xmi:id="49a7babc-ddbd-4c1e-b972-b03df4588811" annotatedElement="d6f8cd8f-4a61-40ce-b17a-9c8dd722fb57">
          <body>&lt;p>A &lt;code>FeatureReferenceExpression&lt;/code> is an &lt;code>Expression&lt;/code> whose &lt;code>result&lt;/code> is bound to a &lt;code>referent&lt;/code> &lt;code>Feature&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="54eb461e-73c4-4478-8e1d-63ae91be66fc" name="deriveFeatureReferenceExpressionReferent" visibility="public" constrainedElement="d6f8cd8f-4a61-40ce-b17a-9c8dd722fb57">
          <ownedComment xmi:id="3f1e5fc4-7ae0-4c0d-9237-2ad629ff6005" annotatedElement="54eb461e-73c4-4478-8e1d-63ae91be66fc">
            <body>&lt;p>The &lt;code>referent&lt;/code> of a &lt;code>FeatureReferenceExpression&lt;/code> is the &lt;code>memberElement&lt;/code> of its first &lt;code>ownedMembership&lt;/code> that is not a &lt;code>ParameterMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="de51724c-f4c8-467c-a9d0-3516109e7ed2" name="" visibility="public">
            <language>OCL2.0</language>
            <body>referent =
    let nonParameterMemberships : Sequence(Membership) = ownedMembership->
        reject(oclIsKindOf(ParameterMembership)) in
    if nonParameterMemberships->isEmpty() or
       not nonParameterMemberships->first().memberElement.oclIsKindOf(Feature)
    then null
    else nonParameterMemberships->first().memberElement.oclAsType(Feature)
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="cbcfbaec-8f95-47be-98af-a570e371d36d" name="checkFeatureReferenceExpressionBindingConnector" visibility="public" constrainedElement="d6f8cd8f-4a61-40ce-b17a-9c8dd722fb57">
          <ownedComment xmi:id="a8c9f6d6-a14b-4086-990b-a5aed0afd3bc" annotatedElement="cbcfbaec-8f95-47be-98af-a570e371d36d">
            <body>&lt;p>A &lt;code>FeatureReferenceExpression&lt;/code> must have an &lt;code>ownedMember&lt;/code> that is a &lt;code>BindingConnector&lt;/code> between the &lt;code>referent&lt;/code> and &lt;code>result&lt;/code> of the &lt;code>FeatureReferenceExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="626b75b6-ef80-4aa1-b48e-17bb49fa39ea" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMember->selectByKind(BindingConnector)->exists(b |
    b.relatedFeatures->includes(targetFeature) and
    b.relatedFeatures->includes(result))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="74cf3a33-28cc-4afc-a7aa-a0ae157b85f5" name="validateFeatureReferenceExpressionReferentIsFeature" visibility="public" constrainedElement="d6f8cd8f-4a61-40ce-b17a-9c8dd722fb57">
          <ownedComment xmi:id="a82637c8-e711-473e-afdf-c36d5589f342" annotatedElement="74cf3a33-28cc-4afc-a7aa-a0ae157b85f5">
            <body>&lt;p>The first &lt;code>ownedMembership&lt;/code> of a &lt;code>FeatureReferenceExpression&lt;/code> that is not a &lt;code>ParameterMembership&lt;/code> must have a &lt;code>Feature&lt;/code> as its &lt;code>memberElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f1367f8b-00de-4d4b-90d6-a5d0dbdb6c2e" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let membership : Membership = 
    ownedMembership->reject(m | m.oclIsKindOf(ParameterMembership)) in
membership->notEmpty() and
membership->at(1).memberElement.oclIsKindOf(Feature)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="6812b872-280a-4862-981e-8be2b3cbd3c9" general="e8904b17-7bf3-47eb-b907-a6efe22c56b7"/>
        <ownedAttribute xmi:id="042cce2f-3f72-4163-869d-f0dd56bee523" name="referent" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb" association="c9354491-7fa1-4d66-a807-5acc1584ee29">
          <ownedComment xmi:id="542f7181-d161-4eff-875e-3bddf1d71b0b" annotatedElement="042cce2f-3f72-4163-869d-f0dd56bee523">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is referenced by this &lt;code>FeatureReferenceExpression&lt;/code>, which is its first non-&lt;code>parameter&lt;/code> &lt;code>member&lt;/code>.&lt;p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a84bfc87-c5fb-4ba6-beb1-83a5004eaf93" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="14ff90b1-33ac-4a72-a65b-e5ea3e68262d" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="91c0dfc3-f1ee-4e07-9cbe-4071b368f499" name="modelLevelEvaluable" visibility="public" bodyCondition="817bd03f-aa21-41b1-b936-22ad01f20347" redefinedOperation="f485a5f8-785d-460a-9e4a-84835140baad">
          <ownedComment xmi:id="a2b82596-88f5-4c9d-90f0-c4b9dd910f4c" annotatedElement="91c0dfc3-f1ee-4e07-9cbe-4071b368f499">
            <body>&lt;p>A &lt;code>FeatureReferenceExpression&lt;/code> is model-level evaluable if it&amp;#39;s &lt;code>referent&lt;/code>&lt;/p>

&lt;ul>
	&lt;li>conforms to the self-reference feature &lt;code>&lt;em>Anything::self&lt;/em>&lt;/code>;&lt;/li>
	&lt;li>is an &lt;code>Expression&lt;/code> that is model-level evaluable;&lt;/li>
	&lt;li>has an &lt;code>owningType&lt;/code> that is a &lt;code>Metaclass&lt;/code> or &lt;code>MetadataFeature&lt;/code>; or&lt;/li>
	&lt;li>has no &lt;code>featuringTypes&lt;/code> and, if it has a &lt;code>FeatureValue&lt;/code>, the &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> is model-level evaluable.&lt;/li>
&lt;/ul>
</body>
          </ownedComment>
          <ownedRule xmi:id="817bd03f-aa21-41b1-b936-22ad01f20347" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="9898d8a2-bdd1-4955-9b75-fe3723131f4d" name="" visibility="public">
              <language>OCL2.0</language>
              <body>referent.conformsTo('Anything::self') or
visited->excludes(referent) and 
(referent.oclIsKindOf(Expression) and 
    referent.oclAsType(Expression).modelLevelEvaluable(visited->including(referent)) or
referent.owningType &lt;> null and 
    (referent.owningType.isOclKindOf(MetaClass) or 
    referent.owningType.isOclKindOf(MetadataFeature)) or
referent.featuringType->isEmpty() and
    (referent.valuation = null or 
    referent.valuation.modelLevelEvaluable(visited->including(referent))))</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="a894a2e7-e402-45a8-9e31-8077ef9f07f7" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="c4f77e8b-3e13-49e3-8cfb-3d57ff3b1fc6" name="visited" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="830700f9-40cd-40f3-99dc-466cbea77000" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e1826338-d309-422d-9e17-775e387e686f" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="11c5bbbc-8ccb-46e9-acc9-c4cd01a0342d" name="evaluate" visibility="public" bodyCondition="bfa252f9-6bcc-4fe6-b0b7-ab25968801ce" redefinedOperation="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
          <ownedComment xmi:id="0d2be125-eaef-47ff-8e50-ca8bd51c925e" annotatedElement="11c5bbbc-8ccb-46e9-acc9-c4cd01a0342d">
            <body>&lt;p>First, determine a &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> for the &lt;code>referent&lt;/code>:&lt;/p>

&lt;ul>
	&lt;li>If the &lt;code>target&lt;/code> &lt;code>Element&lt;/code> is a Type that has a &lt;code>feature&lt;/code> that is the &lt;code>referent&lt;/code> or (directly or indirectly) redefines it, then the &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> of the &lt;code>FeatureValue&lt;/code> for that &lt;code>feature&lt;/code> (if any).&lt;/li>
	&lt;li>Else, if the &lt;code>referent&lt;/code> has no &lt;code>featuringTypes&lt;/code>, the &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> of the &lt;code>FeatureValue&lt;/code> for the &lt;code>referent&lt;/code> (if any).&lt;/li>
&lt;/ul>

&lt;p>Then:&lt;/p>

&lt;ul>
	&lt;li>If such a value &lt;code>Expression&lt;/code> exists, return the result of evaluating that &lt;code>Expression&lt;/code> on the &lt;code>target&lt;/code>.&lt;/li>
	&lt;li>Else, if the &lt;code>referent&lt;/code> is not an &lt;code>Expression&lt;/code>, return the &lt;code>referent&lt;/code>.&lt;/li>
	&lt;li>Else return the empty sequence.&lt;/li>
&lt;/ul>
</body>
          </ownedComment>
          <ownedRule xmi:id="bfa252f9-6bcc-4fe6-b0b7-ab25968801ce" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="bed2bcbe-917e-4317-8aa5-8b906c252b8c" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if not target.oclIsKindOf(Type) then Sequence{}
else
    let feature: Sequence(Feature) = 
        target.oclAsType(Type).feature->select(f |
            f.ownedRedefinition.redefinedFeature->
                includes(referent)) in
        if feature->notEmpty() then 
            feature.valuation.value.evaluate(target)
        else if referent.featuringType->isEmpty() 
            then referent
        else Sequence{} 
        endif endif
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="e669cb0f-9f5d-44c2-b3d5-b195a26de4bb" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="0f20c0e3-b7ce-4026-8aff-de390b864687" name="result" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f3239755-baf4-40c7-872e-3f36278fbbbc" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a667e747-d044-4a91-9edf-6592f92df4ac" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="c9354491-7fa1-4d66-a807-5acc1584ee29" name="A_referent_referenceExpression" visibility="public" memberEnd="042cce2f-3f72-4163-869d-f0dd56bee523 d93b66d9-9ce4-41b2-9f9d-6f9245de85a0">
        <ownedEnd xmi:id="d93b66d9-9ce4-41b2-9f9d-6f9245de85a0" name="referenceExpression" visibility="public" type="d6f8cd8f-4a61-40ce-b17a-9c8dd722fb57" isDerived="true" subsettedProperty="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2" association="c9354491-7fa1-4d66-a807-5acc1584ee29">
          <ownedComment xmi:id="91f1010b-3a70-43ff-8f33-ce49c8accace" annotatedElement="d93b66d9-9ce4-41b2-9f9d-6f9245de85a0">
            <body>&lt;p>A FeatureReferenceExpression that has a certain &lt;code>referent&lt;/code> Feature.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e833f67c-f346-4acb-89b5-e5a1089e56e8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1eb0de33-ec65-47fe-a7f6-19dcfba0a356" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="49166d3b-ea22-4546-b06a-13a88e2f8fa7" name="SelectExpression" visibility="public">
        <ownedComment xmi:id="f54d4198-53c9-4f1c-bd4b-3de66a427b6e" annotatedElement="49166d3b-ea22-4546-b06a-13a88e2f8fa7">
          <body>&lt;p>A &lt;code>SelectExpression&lt;/code> is an &lt;code>OperatorExpression&lt;/code> whose operator is &lt;code>&quot;select&quot;&lt;/code>, which resolves to the &lt;code>Function&lt;/code> &lt;em>&lt;code>ControlFunctions::select&lt;/code>&lt;/em> from the Kernel Functions Library.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="e2c7ad9b-d27a-4557-913b-c91cee724969" name="validateSelectExpressionOperator" visibility="public" constrainedElement="49166d3b-ea22-4546-b06a-13a88e2f8fa7">
          <ownedComment xmi:id="1b8d4e1c-c546-4949-b611-bab9ddbc6773" annotatedElement="e2c7ad9b-d27a-4557-913b-c91cee724969">
            <body>&lt;p>The &lt;code>operator&lt;/code> of a &lt;code>SelectExpression&lt;/code> must be &lt;code>'select'&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d1ff72d1-a454-4974-baab-15c2d3463cc6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>operator = 'select'</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="6d387563-f9f6-43bc-90bd-63d12f789054" general="a48cceff-a8d1-4741-b8d3-ed7ecb8b1f54"/>
        <ownedAttribute xmi:id="d4b8ffd4-7c49-4533-b476-6e1e71951057" name="operator" visibility="public" redefinedProperty="70aa2b17-758f-4426-8b45-52253479ca7c">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="7704c1a5-f3b7-4c53-b488-c657eaf75cc8" name="" visibility="public" value="select"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="a48cceff-a8d1-4741-b8d3-ed7ecb8b1f54" name="OperatorExpression" visibility="public">
        <ownedComment xmi:id="b1788280-52ce-4336-a679-97f9d98da6da" annotatedElement="a48cceff-a8d1-4741-b8d3-ed7ecb8b1f54">
          <body>&lt;p>An &lt;code>OperatorExpression&lt;/code> is an &lt;code>InvocationExpression&lt;/code> whose &lt;code>function&lt;/code> is determined by resolving its &lt;code>operator&lt;/code> in the context of one of the standard packages from the Kernel Function Library.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="b45891fc-1c0e-405b-ac8f-f3a7e2e12b04" name="checkOperatorExpressionSpecialization" visibility="public" constrainedElement="a48cceff-a8d1-4741-b8d3-ed7ecb8b1f54">
          <ownedComment xmi:id="4c3afafb-d4e5-44d6-a39c-3dd566a624ab" annotatedElement="b45891fc-1c0e-405b-ac8f-f3a7e2e12b04">
            <body>&lt;p>The &lt;code>function&lt;/code> of an &lt;code>OperatorExpression&lt;/code> must be the resolution of the &lt;code>operator&lt;/code> from one of the packages &lt;code>&lt;em>BaseFunctions&lt;/em>&lt;/code>, &lt;code>&lt;em>DataFunctions&lt;/em>&lt;/code>, or &lt;code>&lt;em>ControlFunctions&lt;/em>&lt;/code> from the Kernel Function Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="06c57c96-33e6-428e-b4db-f2c63556fe18" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let libFunctions : Sequence(Element) = 
    Sequence{'BaseFunctions', 'DataFunctions', 'ControlFunctions'}->
    collect(ns | resolveGlobal(ns + &quot;::'&quot; + operator + &quot;'&quot;).
    memberElement) in
libFunctions->includes(function)
    
</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="13dee490-5f1f-4780-889e-5f5e5ea0dbd5" general="a9c8beb0-0f8c-4b12-a8dd-cdea2899b27c"/>
        <ownedAttribute xmi:id="70aa2b17-758f-4426-8b45-52253479ca7c" name="operator" visibility="public">
          <ownedComment xmi:id="e1ed9f8a-5bbc-45c5-8b44-d6b21c6181c2" annotatedElement="70aa2b17-758f-4426-8b45-52253479ca7c">
            <body>&lt;p>An &lt;code>operator&lt;/code> symbol that names a corresponding &lt;code>Function&lt;/code> from one of the standard packages from the Kernel Function Library .&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="b7526616-d799-449c-8ded-f6dcd4ac59bc" name="CollectExpression" visibility="public">
        <ownedComment xmi:id="bac7f1e0-f7ab-4033-bb30-8c1de53f992e" annotatedElement="b7526616-d799-449c-8ded-f6dcd4ac59bc">
          <body>&lt;p>A &lt;code>CollectExpression&lt;/code> is an &lt;code>OperatorExpression&lt;/code> whose &lt;code>operator&lt;/code> is &lt;code>&quot;collect&quot;&lt;/code>, which resolves to the &lt;code>Function&lt;/code> &lt;em>&lt;code>ControlFunctions::collect&lt;/code>&lt;/em> from the Kernel Functions Library.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="37511dea-036d-42d2-af4f-b4bb01b6d84b" name="validateCollectExpressionOperator" visibility="public" constrainedElement="b7526616-d799-449c-8ded-f6dcd4ac59bc">
          <ownedComment xmi:id="5fc7ecfb-4901-4e66-9e59-f912c2e77658" annotatedElement="37511dea-036d-42d2-af4f-b4bb01b6d84b">
            <body>&lt;p>The &lt;code>operator&lt;/code> of a &lt;code>CollectExpression&lt;/code> must be &lt;code>&quot;collect&quot;&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="598c8cec-0ac7-4072-a835-31208741fea2" name="" visibility="public">
            <language>OCL2.0</language>
            <body>operator = &quot;collect&quot;</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="1c7ad816-9373-4993-8487-10d624512452" general="a48cceff-a8d1-4741-b8d3-ed7ecb8b1f54"/>
        <ownedAttribute xmi:id="a02dc1aa-69dc-4d58-877b-b49a75221d8f" name="operator" visibility="public" redefinedProperty="70aa2b17-758f-4426-8b45-52253479ca7c">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="b8b1e04b-cabf-4764-b119-c8c726bad014" name="" visibility="public" value="collect"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5" name="FeatureChainExpression" visibility="public">
        <ownedComment xmi:id="c33a5bb4-8676-4831-bf35-d903113de734" annotatedElement="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5">
          <body>&lt;p>A &lt;code>FeatureChainExpression&lt;/code> is an &lt;code>OperatorExpression&lt;/code> whose operator is &lt;code>&quot;.&quot;&lt;/code>, which resolves to the &lt;code>Function&lt;/code> &lt;em>&lt;code>ControlFunctions::'.'&lt;/code>&lt;/em> from the Kernel Functions Library. It evaluates to the result of chaining the &lt;code>result&lt;/code> &lt;code>Feature&lt;/code> of its single &lt;code>argument&lt;/code> &lt;code>Expression&lt;/code> with its &lt;code>targetFeature&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="76ba16c7-5224-4651-99fc-8d75469ed5f8" name="checkFeatureChainExpressionTargetRedefinition" visibility="public" constrainedElement="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5">
          <ownedComment xmi:id="2ab03e29-5951-4fb7-aafa-958144769f9d" annotatedElement="76ba16c7-5224-4651-99fc-8d75469ed5f8">
            <body>&lt;p>The first &lt;code>ownedFeature&lt;/code> of the first owned input &lt;code>parameter&lt;/code> of a &lt;code>FeatureChainExpression&lt;/code> must redefine the &lt;code>Feature&lt;/code> &lt;code>&lt;em>ControlFunctions::'.'::source::target&lt;/em>&lt;/code> from the Kernel Functions Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1a0b335f-6a2a-43f8-93dc-74858de72b7b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let sourceParameter : Feature = sourceTargetFeature() in
sourceTargetFeature &lt;> null and
sourceTargetFeature.redefinesFromLibrary('ControlFunctions::\'.\'::source::target')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="0aa27005-d283-4cc7-ac65-cfba347f306d" name="checkFeatureChainExpressionSourceTargetRedefinition" visibility="public" constrainedElement="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5">
          <ownedComment xmi:id="3ae6ba82-4fad-499b-90d7-cd1c30505a70" annotatedElement="0aa27005-d283-4cc7-ac65-cfba347f306d">
            <body>&lt;p>The first &lt;code>ownedFeature&lt;/code> of the first owned input &lt;code>parameter&lt;/code> of a &lt;code>FeatureChainExpression&lt;/code> must redefine its &lt;code>targetFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="2e2de5e1-5344-44bc-95be-fc3ee1a36ef6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let sourceParameter : Feature = sourceTargetFeature() in
sourceTargetFeature &lt;> null and
sourceTargetFeature.redefines(targetFeature)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="05df0ec9-ad8b-45b6-95fe-fcde54d83a44" name="deriveFeatureChainExpressionTargetFeature" visibility="public" constrainedElement="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5">
          <ownedComment xmi:id="5bc2a3cb-e96e-4b7d-b99f-f7583565211e" annotatedElement="05df0ec9-ad8b-45b6-95fe-fcde54d83a44">
            <body>&lt;p>The &lt;code>targetFeature&lt;/code> of a &lt;code>FeatureChainExpression&lt;/code> is the &lt;code>memberElement&lt;/code> of its first &lt;code>ownedMembership&lt;/code> that is not a &lt;code>ParameterMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="62956af8-f297-469e-9f75-317b51028806" name="" visibility="public">
            <language>OCL2.0</language>
            <body>targetFeature =
    let nonParameterMemberships : Sequence(Membership) = ownedMembership->
        reject(oclIsKindOf(ParameterMembership)) in
    if nonParameterMemberships->isEmpty() or
       not nonParameterMemberships->first().memberElement.oclIsKindOf(Feature)
    then null
    else nonParameterMemberships->first().memberElement.oclAsType(Feature)
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="aa27446b-63e9-4607-95e7-048c39d21dfb" name="validateFeatureChainExpressionConformance" visibility="public" constrainedElement="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5">
          <ownedComment xmi:id="c0815f5d-fc21-44c0-90f2-6a95fe39f54b" annotatedElement="aa27446b-63e9-4607-95e7-048c39d21dfb">
            <body>&lt;p>The &lt;code>featuringTypes&lt;/code> of the &lt;code>targetFeature&lt;/code> of a &lt;code>FeatureChainExpression&lt;/code> must conform to the &lt;code>result&lt;/code> parameter of the &lt;code>argument&lt;/code> &lt;code>Expression&lt;/code> of the &lt;code>FeatureChainExpression&lt;/code>.&lt;/p>

</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="88fec577-74fb-4f75-bf19-da8e7c8a8d3f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>argument->notEmpty() implies
    targetFeature.featuringType->forAll(t | 
        t.specializes(argument->at(1).result))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="2ff6831d-b0c3-4ade-9a7d-4f5ebdb5633a" general="a48cceff-a8d1-4741-b8d3-ed7ecb8b1f54"/>
        <ownedAttribute xmi:id="553a107a-ef1a-475e-a210-a02aa4b4f67c" name="operator" visibility="public" redefinedProperty="70aa2b17-758f-4426-8b45-52253479ca7c">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="afbeb6c4-5528-4530-b90d-bfb78ac42268" name="" visibility="public" value="."/>
        </ownedAttribute>
        <ownedAttribute xmi:id="ac7c4937-8e0b-4f9a-8ba5-f645f90afc49" name="targetFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="9098f21e-06d6-46cd-b1c6-3ccde8f5d8bb" association="8a56f4c3-48aa-4d8a-b63f-b670077c02fb">
          <ownedComment xmi:id="82a337ad-7b91-4336-902b-52a00f3bc3dd" annotatedElement="ac7c4937-8e0b-4f9a-8ba5-f645f90afc49">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is accessed by this &lt;code>FeatureChainExpression&lt;code>, which is its first non-&lt;code>parameter&lt;/code> &lt;code>member&lt;/code>.&lt;p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5fc739f1-ceeb-4d71-bb1c-a44a8786cf33" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="4f9ff105-3ba5-482f-879e-62bbe4b2def8" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="2fe80c06-3ee8-4c73-9b56-084bb472e4ce" name="sourceTargetFeature" visibility="public" bodyCondition="d5b1a18b-a459-4ddf-9149-b7365da31f73">
          <ownedComment xmi:id="293a36ea-f87d-46ae-8ec2-8f195550dbef" annotatedElement="2fe80c06-3ee8-4c73-9b56-084bb472e4ce">
            <body>&lt;p>Return the first &lt;code>ownedFeature&lt;/code> of the first owned input &lt;code>parameter&lt;/code> of this &lt;code>FeatureChainExpression&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="d5b1a18b-a459-4ddf-9149-b7365da31f73" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="b5c8c6fb-0da5-4c4a-8a55-00b018b6713a" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let inputParameters : Feature = ownedFeatures->
    select(direction = _'in') in
if inputParameters->isEmpty() or 
   inputParameters->first().ownedFeature->isEmpty()
then null
else inputParameters->first().ownedFeature->first()
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="74c80e65-bd9c-4404-9fca-de1093bf9a0f" name="" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="44acd9af-3108-4c5b-ab51-be30547f09b4" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d2e0819a-0dcf-4967-ab44-591f16d52a41" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="8a56f4c3-48aa-4d8a-b63f-b670077c02fb" name="A_targetFeature_chainExpression" visibility="public" memberEnd="ac7c4937-8e0b-4f9a-8ba5-f645f90afc49 7eea7a92-afa9-4acd-8ee2-01a221d77509">
        <ownedEnd xmi:id="7eea7a92-afa9-4acd-8ee2-01a221d77509" name="chainExpression" visibility="public" type="40ee2207-a638-4d8d-8ef3-6b9d5deeddd5" isDerived="true" subsettedProperty="1e7fdba0-a195-4da8-a935-bd8e7b72a7d2" association="8a56f4c3-48aa-4d8a-b63f-b670077c02fb">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="30d70666-ef4e-402e-87cd-1288a98ffe37" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="895ad995-3636-4b25-b069-8ef75b9e077d" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="2da2963e-c691-4cc2-b691-36f4f587146f" name="A_referencedElement_accessExpression" visibility="public" memberEnd="fcc25c98-f6f9-476f-9869-ddb9098f45d1 d594fa5d-8c83-4e17-8bfb-39e7b2ee5a1c">
        <ownedEnd xmi:id="d594fa5d-8c83-4e17-8bfb-39e7b2ee5a1c" name="accessExpression" visibility="public" type="952262ce-7687-4374-aca0-3ecfabf2e9e0" association="2da2963e-c691-4cc2-b691-36f4f587146f">
          <ownedComment xmi:id="f94748ef-22f3-4b26-84d0-0c11c2cc561d" annotatedElement="d594fa5d-8c83-4e17-8bfb-39e7b2ee5a1c">
            <body>&lt;p>The MetadataAccessExpressions having a certain Element as their &lt;code>referencedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8f0e2a5e-213c-46a4-9253-3170e8e62156" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="0651c30d-03d1-42d6-a7d6-ae9c06ba40de" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="952262ce-7687-4374-aca0-3ecfabf2e9e0" name="MetadataAccessExpression" visibility="public">
        <ownedComment xmi:id="603a1335-2503-4bee-af3a-e25e87f1185b" annotatedElement="952262ce-7687-4374-aca0-3ecfabf2e9e0">
          <body>&lt;p>A &lt;code>MetadataAccessExpression&lt;/code> is an &lt;code>Expression&lt;/code> whose &lt;code>result&lt;/code> is a sequence of instances of &lt;code>Metaclasses&lt;/code> representing all the &lt;code>MetadataFeature&lt;/code> annotations of the &lt;code>referencedElement&lt;/code>. In addition, the sequence includes an instance of the reflective &lt;code>Metaclass&lt;/code> corresponding to the MOF class of the &lt;code>referencedElement&lt;/code>, with values for all the abstract syntax properties of the &lt;code>referencedElement&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="740bd6a9-11c3-4167-9516-6ec7c5f402eb" name="checkMetadataAccessExpressionSpecialization" visibility="public" constrainedElement="952262ce-7687-4374-aca0-3ecfabf2e9e0">
          <ownedComment xmi:id="d7e2329b-774b-48d4-ba03-9830031a603e" annotatedElement="740bd6a9-11c3-4167-9516-6ec7c5f402eb">
            <body>&lt;p>A &lt;code>MetadataAccessExpression&lt;/code> must directly or indirectly specialize the base &lt;code>MetadataAccessExpression&lt;/code> &lt;code>&lt;em>Performances::metadataAccessEvaluations&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="302506f5-310b-4b22-9591-ea2db88a34ce" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::metadataAccessEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="8636e4f3-a5be-470f-8243-f6c4497607e0" general="e8904b17-7bf3-47eb-b907-a6efe22c56b7"/>
        <ownedAttribute xmi:id="fcc25c98-f6f9-476f-9869-ddb9098f45d1" name="referencedElement" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" association="2da2963e-c691-4cc2-b691-36f4f587146f">
          <ownedComment xmi:id="45a91131-a29e-4fed-b5e4-02ac85d4fad6" annotatedElement="fcc25c98-f6f9-476f-9869-ddb9098f45d1">
            <body>&lt;p> The &lt;code>Element&lt;/code> whose metadata is being accessed.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="de364684-9558-469c-9e2a-94b393d45a3f" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d4de4e4c-ab7e-41bf-8ce6-52a785a1dc89" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="c4623854-0b05-4901-8a9c-51fb4465fc3a" name="modelLevelEvaluable" visibility="public" bodyCondition="bc3a2992-194e-4be7-8630-eb67a1138383" redefinedOperation="f485a5f8-785d-460a-9e4a-84835140baad">
          <ownedComment xmi:id="dc4bdfc9-1603-4f8a-9499-3dce306b9220" annotatedElement="c4623854-0b05-4901-8a9c-51fb4465fc3a">
            <body>&lt;p>A &lt;code>MetadataAccessExpression&lt;/code> is always model-level evaluable.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="bc3a2992-194e-4be7-8630-eb67a1138383" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="1a3267f2-c4b3-41fd-a09e-adf574daf862" name="" visibility="public">
              <language>OCL2.0</language>
              <body>true</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="bf6b06c8-910e-438d-a1e7-6a4d35cfb665" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
          <ownedParameter xmi:id="e7eaff3d-f48b-4895-9240-2ca845ffe3f5" name="visited" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="22aa4828-1517-44d9-8da9-a5bb10157b9c" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="f799bcbb-4802-4b13-aa8c-72cf57bc9857" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="87bc8d1c-6c0a-4713-b9a7-ce6a7f03853d" name="evaluate" visibility="public" bodyCondition="c0509e79-12b2-4c26-bfce-9d3ae632590f" redefinedOperation="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
          <ownedComment xmi:id="3697b22b-979a-4ccf-a5c0-579b4b3b206b" annotatedElement="87bc8d1c-6c0a-4713-b9a7-ce6a7f03853d">
            <body>&lt;p>Return the &lt;code>ownedElements&lt;/code> of the &lt;code>referencedElement&lt;/code> that are &lt;code>MetadataFeatures&lt;/code> and have the &lt;code>referencedElement&lt;/code> as an &lt;code>annotatedElement&lt;/code>, plus a &lt;code>MetadataFeature&lt;/code> whose &lt;code>annotatedElement&lt;/code> is the &lt;code>referencedElement&lt;/code>, whose &lt;code>metaclass&lt;/code> is the reflective &lt;code>Metaclass&lt;/code> corresponding to the MOF class of the &lt;code>referencedElement&lt;/code> and whose &lt;code>ownedFeatures&lt;/code> are bound to the values of the MOF properties of the &lt;code>referencedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="c0509e79-12b2-4c26-bfce-9d3ae632590f" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="424180f2-6388-4006-a414-4a3240ca4df4" name="" visibility="public">
              <language>OCL2.0</language>
              <body>referencedElement.ownedElement->
    select(oclIsKindOf(MetadataFeature) 
        and annotatedElement->includes(referencedElement))->
    including(metaclassFeature())</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="ba126634-ae36-4f00-b815-11e555d6921a" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="d037393e-28b7-481d-9dc0-b27444d244f9" name="result" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0ad63860-1736-404c-a00f-e75f3e7877cd" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="add74caa-267d-4826-903a-91ad89bada77" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="ee45c15b-e54b-40a6-a3a5-412c37ab9435" name="metaclassFeature" visibility="public">
          <ownedComment xmi:id="99b8bb17-aee3-43d1-b354-dea42e8cfd87" annotatedElement="ee45c15b-e54b-40a6-a3a5-412c37ab9435">
            <body>&lt;p>Return a &lt;code>MetadataFeature&lt;/code> whose &lt;code>annotatedElement&lt;/code> is the &lt;code>referencedElement&lt;/code>, whose &lt;code>metaclass&lt;/code> is the reflective &lt;code>Metaclass&lt;/code> corresponding to the MOF class of the &lt;code>referencedElement&lt;/code> and whose &lt;code>ownedFeatures&lt;/code> are bound to the MOF properties of the &lt;code>referencedElement&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedParameter xmi:id="b7de9d3e-655d-4f95-b0f2-d5947a69e406" name="" visibility="public" type="4085a1f9-bc5b-4996-abf8-b0e018475fd1" direction="return"/>
        </ownedOperation>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="aac907c6-cac6-44ce-80c5-11abd4f5f9b4" name="Interactions" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="6fb9372c-eb1f-449b-b133-9f737a1e6076" name="A_targetInputFeature_itemFlowToInput" visibility="public" memberEnd="cb963ace-2a41-43b1-bb94-a7a064dc7dcc b57a97e0-02bd-4460-9a23-5c7e9c0528cc">
        <ownedEnd xmi:id="b57a97e0-02bd-4460-9a23-5c7e9c0528cc" name="itemFlowToInput" visibility="public" type="73ae40ef-8916-44d6-a1fd-e1674275b1a3" isDerived="true" association="6fb9372c-eb1f-449b-b133-9f737a1e6076">
          <ownedComment xmi:id="3e1f608c-d3a2-4af9-9458-509c8f15ab17" annotatedElement="b57a97e0-02bd-4460-9a23-5c7e9c0528cc">
            <body>&lt;p>The ItemFlow that has a certain &lt;code>targetInputFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3b3bc35d-3a23-4ec2-8435-e399cf8a37a1" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2484d5b4-8bb9-43f4-9a06-2e73305943a8" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="73ae40ef-8916-44d6-a1fd-e1674275b1a3" name="ItemFlow" visibility="public">
        <ownedComment xmi:id="2aac8498-acc1-44ad-bb17-935ba2c2a579" annotatedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <body>&lt;p>An &lt;code>ItemFlow&lt;/code> is a &lt;code>Step&lt;/code> that represents the transfer of objects or data values from one &lt;code>Feature&lt;/code> to another. &lt;code>ItemFlows&lt;/code> can take non-zero time to complete.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="f5e5e0fe-46cd-4883-96af-ff0edd9a70fe" name="checkItemFlowSpecialization" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="00102fd8-9780-471e-92a7-bb4ba814abb5" annotatedElement="f5e5e0fe-46cd-4883-96af-ff0edd9a70fe">
            <body>&lt;p>An &lt;code>ItemFlow&lt;/code> must directly or indirectly specialize the &lt;code>Step&lt;/code> &lt;code>&lt;em>Transfers::transfers&lt;/em>&lt;/code> from the Kernel Semantic Library. In addition, if the &lt;code>ItemFlow&lt;/code> has &lt;code>ItemFlowEnds&lt;/code>, it must specialize &lt;code>&lt;em>Transfers::flowTransfers&lt;/em>&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d164e67c-e058-447a-9b11-21f03e091630" name="" visibility="public">
            <language>OCL2.0</language>
            <body>if itemFlowEnds->isEmpty() then
    specializesFromLibrary('Transfers::transfers')
else
    specializesFromLibrary('Transfers::flowTransfers')
endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="54e60d81-021e-4aa1-b7a8-14a74ab11aed" name="deriveItemFlowItemType" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="efe77487-4617-4829-8352-27125966a49f" annotatedElement="54e60d81-021e-4aa1-b7a8-14a74ab11aed">
            <body>&lt;p>The &lt;code>itemTypes&lt;/code> of an &lt;code>ItemFlow&lt;/code> are the &lt;code>types&lt;/code> of the &lt;code>itemFeature&lt;/code> of the &lt;code>ItemFlow&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="eceba302-f486-4f22-a1aa-5baa0f8fd94e" name="" visibility="public">
            <language>OCL2.0</language>
            <body>itemType =
    if itemFeature = null then Sequence{}
    else itemFeature.type
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="2293f9a5-b6b5-4550-a383-d2f6c079240f" name="deriveItemFlowSourceOutputFeature" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="e14a067e-a8b6-4fd9-a60d-217b089fb9bb" annotatedElement="2293f9a5-b6b5-4550-a383-d2f6c079240f">
            <body>&lt;p>The &lt;code>sourceOutputFeature&lt;/code> of a &lt;code>ItemFlow&lt;/code> is the first &lt;code>ownedFeature&lt;/code> of the first &lt;code>connectorEnd&lt;/code> of the &lt;code>ItemFlow&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1f49e600-414d-41d1-bd80-2dc87e17a543" name="" visibility="public">
            <language>OCL2.0</language>
            <body>sourceOutputFeature =
    if connectorEnd->isEmpty() or 
        connectorEnd.ownedFeature->isEmpty()
    then null
    else connectorEnd.ownedFeature->first()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="359ab145-e87d-4158-a766-fae5337351de" name="deriveItemFlowTargetInputFeature" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="139bec24-9115-42e2-bb83-75fb63dc03ce" annotatedElement="359ab145-e87d-4158-a766-fae5337351de">
            <body>&lt;p>The &lt;code>targetInputFeature&lt;/code> of a &lt;code>ItemFlow&lt;/code> is the first &lt;code>ownedFeature&lt;/code> of the second &lt;code>connectorEnd&lt;/code> of the &lt;code>ItemFlow&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ae4bf1c2-1e8d-4063-b8c7-f95e8460931c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>targetInputFeature =
    if connectorEnd->size() &lt; 2 or 
        connectorEnd->at(2).ownedFeature->isEmpty()
    then null
    else connectorEnd->at(2).ownedFeature->first()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="6f0031d8-b506-4bd0-9fa2-f0358e468e0e" name="deriveItemFlowItemFlowEnd" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="ae79ca35-4138-447c-bfac-b9122a9aa692" annotatedElement="6f0031d8-b506-4bd0-9fa2-f0358e468e0e">
            <body>&lt;p>The &lt;code>itemFlowEnds&lt;/code> of a &lt;code>ItemFlow&lt;/code> are all its &lt;code>connectorEnds&lt;/code> that are &lt;code>ItemFlowEnds&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="4a59ab06-adcd-40cc-b93d-046e97ead2fe" name="" visibility="public">
            <language>OCL2.0</language>
            <body>itemFlowEnd = connectorEnd->selectByKind(ItemFlowEnd)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="af8e2357-b247-4663-98ad-e7972090d9d4" name="deriveItemFlowItemFeature" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="c9eb31e9-c0ee-4c9f-abeb-bdd3938de0c7" annotatedElement="af8e2357-b247-4663-98ad-e7972090d9d4">
            <body>&lt;p>The &lt;code>itemFeature&lt;/code> of an &lt;code>ItemFlow&lt;/code> is the single one of its &lt;code>ownedFeatures&lt;/code> that is an &lt;code>ItemFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1b14c644-96f4-4522-ae58-519f807eecd2" name="" visibility="public">
            <language>OCL2.0</language>
            <body>itemFeature =
    let itemFeatures : Sequence(ItemFeature) = 
        ownedFeature->selectByKind(ItemFeature) in
    if itemFeatures->isEmpty() then null
    else itemFeatures->first()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="bedf2843-9bcf-4191-b99f-767e17b343c8" name="validateItemFlowItemFeature" visibility="public" constrainedElement="73ae40ef-8916-44d6-a1fd-e1674275b1a3">
          <ownedComment xmi:id="bef6d157-ca04-4d86-8659-7d2abed1570d" annotatedElement="bedf2843-9bcf-4191-b99f-767e17b343c8">
            <body>&lt;p>An &lt;code>ItemFlow&lt;/code> must have at most one &lt;code>ownedFeature&lt;/code> that is an &lt;code>ItemFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="47f93dce-5c7b-4c8e-b1a2-86fec59cfdd3" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeature->selectByKind(ItemFeature)->size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="f46764c7-aef1-4662-a033-6cfa4cf4501e" general="f9615571-b95b-49e4-a007-0ce847e62696"/>
        <generalization xmi:id="1685e5ac-1b48-44e5-9232-61ae18602554" general="c81e263a-340a-4264-b5a9-ee441741919d"/>
        <ownedAttribute xmi:id="a0cbf746-f328-4d57-9954-465e4117e979" name="itemType" visibility="public" type="d0a45a28-7af9-4bb2-9fc9-ac3e79928263" isOrdered="true" isUnique="false" isDerived="true" association="aebf8d0c-8d73-4f44-af01-ca673982c1fa">
          <ownedComment xmi:id="8807548d-6bd7-4535-a1e2-3f5040ab03a9" annotatedElement="a0cbf746-f328-4d57-9954-465e4117e979">
            <body>&lt;p>The type of values transferred, which is the &lt;code>type&lt;/code> of the &lt;code>itemFeature&lt;/code> of the &lt;code>ItemFlow&lt;/code>.&lt;/p>

</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="bb8d9cbe-5e88-4a34-8d68-1334ca36d60d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="875e5994-afae-4b2a-9e39-72c6bd374bd2" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="cb963ace-2a41-43b1-bb94-a7a064dc7dcc" name="targetInputFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isUnique="false" isDerived="true" association="6fb9372c-eb1f-449b-b133-9f737a1e6076">
          <ownedComment xmi:id="71ee5cd2-cadb-4b7f-82fe-125cf39ffd0a" annotatedElement="cb963ace-2a41-43b1-bb94-a7a064dc7dcc">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that receives the values carried by the &lt;code>ItemFlow&lt;/code>. It must be an owned &lt;code>output&lt;/code> of the target participant of the &lt;code>ItemFlow&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ba975252-70c6-408d-90b2-6ff402007231" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e94d8008-2caf-42fc-b66c-d0d5ddf0da3d" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="26d0e34b-1431-4a1a-922f-e6d597167761" name="sourceOutputFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isUnique="false" isDerived="true" association="5a0b55f5-30b3-47f7-b93c-d7a4fecd2b2a">
          <ownedComment xmi:id="696e70c1-8841-4e46-b906-549af1384745" annotatedElement="26d0e34b-1431-4a1a-922f-e6d597167761">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that provides the items carried by the &lt;code>ItemFlow&lt;/code>. It must be an owned &lt;code>output&lt;/code> of the &lt;code>source&lt;/code> of the &lt;code>ItemFlow&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d293c2b7-6ee0-4fd3-9884-aa6dde85794b" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="232cc6bf-0802-4676-a192-32d916d23ef2" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="a488bc40-85cc-48ca-aee8-f11f79165221" name="itemFlowEnd" visibility="public" type="d6568efe-49f8-45d4-8463-6b8e20ff9966" isOrdered="true" isDerived="true" subsettedProperty="cf2b6440-1987-451c-b676-389e1aaa7122" association="a62ef893-b7a0-4351-84d4-0134a8cc6939">
          <ownedComment xmi:id="8ba0bdd6-056c-480d-a8e9-e347b997fd7d" annotatedElement="a488bc40-85cc-48ca-aee8-f11f79165221">
            <body>&lt;p>The &lt;code>connectorEnds&lt;/code> of this &lt;code>ItemFlow&lt;/code> that are &lt;code>ItemFlowEnds&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1b6f2541-78c6-4e73-a6c8-1b23646e2682" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="505baece-cf92-4821-9064-b98f202b5d1a" name="" visibility="public" value="2"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="a240b4b6-ff8d-4dd1-b9ae-a62d63d3f4fd" name="itemFeature" visibility="public" type="97959ade-1b78-4d79-a2d8-00f6a04bc749" isDerived="true" subsettedProperty="f062fa83-0335-40e0-8652-a22e6a8b3b11" association="889ae49e-98a1-44fc-a5d8-cab49b8bfdb8">
          <ownedComment xmi:id="ca178dc8-9448-49d4-be09-7412caf08302" annotatedElement="a240b4b6-ff8d-4dd1-b9ae-a62d63d3f4fd">
            <body>&lt;p>The &lt;code>ownedFeature&lt;/code> of the &lt;code>ItemFlow&lt;/code> that is an &lt;code>ItemFeature&lt;/code> (if any).&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="54810d25-2add-4983-bed1-156992f2d8e6" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="61d2c2d2-88d9-483f-a3ce-72e10384ee21" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="c7286954-bc9f-4c14-b1f8-33819e60a964" name="interaction" visibility="public" type="b92c89dc-cc86-4005-9867-fb8977b73e10" isOrdered="true" isDerived="true" redefinedProperty="e15018cb-6a4b-48b2-b818-d21f0622c267 4f6477ef-2deb-4f17-a41e-e2aa01f6bb7e" association="576f0e19-ec93-4519-9a44-76a27eeaa055">
          <ownedComment xmi:id="6751a0e8-a042-4a05-b6c2-1b26c4bcf1ad" annotatedElement="c7286954-bc9f-4c14-b1f8-33819e60a964">
            <body>&lt;p>The &lt;code>Interactions&lt;/code> that type this &lt;code>ItemFlow&lt;/code>. &lt;code>Interactions&lt;/code> are both &lt;code>Associations&lt;/code> and &lt;code>Behaviors&lt;/code>, which can type &lt;code>Connectors&lt;/code> and &lt;code>Steps&lt;/code>, respectively.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9ef97ffb-83c4-47d3-a16b-d6d1898eacce" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a90b07c0-2aca-4775-b9ba-80b4f1a8378f" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="aebf8d0c-8d73-4f44-af01-ca673982c1fa" name="A_itemType_itemFlowForType" visibility="public" memberEnd="a0cbf746-f328-4d57-9954-465e4117e979 b58f90b1-09fc-4774-ab9a-425153f59ac5">
        <ownedComment xmi:id="a6593120-18f8-43b0-ab11-2a6123cc3910" annotatedElement="aebf8d0c-8d73-4f44-af01-ca673982c1fa">
          <body>&lt;p>The ItemFlow that has a certain &lt;code>itemType&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedEnd xmi:id="b58f90b1-09fc-4774-ab9a-425153f59ac5" name="itemFlowForType" visibility="public" type="73ae40ef-8916-44d6-a1fd-e1674275b1a3" isDerived="true" association="aebf8d0c-8d73-4f44-af01-ca673982c1fa">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="bef88d22-e4ea-4ccd-9dd7-2d416d0bb266" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8db28e9b-6f75-4e52-8c50-db16385d27bb" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="f4eeb486-bfc2-49b9-bf76-654a9c1a28dd" name="SuccessionItemFlow" visibility="public">
        <ownedComment xmi:id="fa534c29-49e8-44ca-9948-13f80766b31a" annotatedElement="f4eeb486-bfc2-49b9-bf76-654a9c1a28dd">
          <body>&lt;p>A &lt;code>SuccessionItemFlow&lt;/code> is an &lt;code>ItemFlow&lt;/code> that also provides temporal ordering. It classifies &lt;code>&lt;em>Transfers&lt;/em>&lt;/code> that cannot start until the source &lt;code>&lt;em>Occurrence&lt;/em>&lt;/code> has completed and that must complete before the target &lt;code>&lt;em>Occurrence&lt;/em>&lt;/code> can start.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="9a7dffd5-7890-4234-af29-ae77a43bcb3e" name="checkSuccessionItemFlowSpecialization" visibility="public" constrainedElement="f4eeb486-bfc2-49b9-bf76-654a9c1a28dd">
          <ownedComment xmi:id="7f06a77b-1ef1-4312-9b39-0edd38e48a11" annotatedElement="9a7dffd5-7890-4234-af29-ae77a43bcb3e">
            <body>&lt;p>A &lt;code>SuccessionItemFlow&lt;/code> must directly or indirectly specialize the &lt;code>Step&lt;/code> &lt;code>&lt;em>Transfers::flowTransfersBefore&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6041f7d1-644a-4c9f-85e4-c7d68511c652" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Transfers::flowTransfersBefore')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="354d1512-5197-436f-a188-e5311a11e46d" general="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae"/>
        <generalization xmi:id="4b538aa9-f303-4201-aa4d-a86f8feb916b" general="73ae40ef-8916-44d6-a1fd-e1674275b1a3"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="5a0b55f5-30b3-47f7-b93c-d7a4fecd2b2a" name="A_sourceOutputFeature_itemFlowFromOutput" visibility="public" memberEnd="26d0e34b-1431-4a1a-922f-e6d597167761 215c8bc0-1330-4c31-961d-091ec4c54920">
        <ownedEnd xmi:id="215c8bc0-1330-4c31-961d-091ec4c54920" name="itemFlowFromOutput" visibility="public" type="73ae40ef-8916-44d6-a1fd-e1674275b1a3" isDerived="true" association="5a0b55f5-30b3-47f7-b93c-d7a4fecd2b2a">
          <ownedComment xmi:id="e7a508b2-d4ed-47bf-a7d0-089bb5140baf" annotatedElement="215c8bc0-1330-4c31-961d-091ec4c54920">
            <body>&lt;p>The ItemFlow that has a certain &lt;code>sourceOutputFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f70304b6-4871-40dc-820b-1b824acc3d17" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="958c9ee7-fdf0-41b4-a7ab-ce9f04938dfb" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="29a7b6e6-05fb-4703-ae56-1950fe297cb9" name="A_participantFeature_" visibility="public" memberEnd="e92ad2d8-fdf3-426e-8f8b-07c91a552558 ab63e14a-f966-4c7b-b6e2-de9345d4a26a" navigableOwnedEnd="e92ad2d8-fdf3-426e-8f8b-07c91a552558">
        <generalization xmi:id="f577d122-19bd-4b55-81f4-fd712b8ba4d1" general="1c78cfe5-fc6f-4b8b-89cf-a58b1f4b972a"/>
        <ownedEnd xmi:id="ab63e14a-f966-4c7b-b6e2-de9345d4a26a" name="" visibility="public" type="b92c89dc-cc86-4005-9867-fb8977b73e10" association="29a7b6e6-05fb-4703-ae56-1950fe297cb9"/>
        <ownedEnd xmi:id="e92ad2d8-fdf3-426e-8f8b-07c91a552558" name="participantFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" redefinedProperty="5667d0c5-b35e-41f0-984d-e1902f301e25" subsettedProperty="d235fd74-1378-4f42-9fdb-2d1d78763edb" association="29a7b6e6-05fb-4703-ae56-1950fe297cb9">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="57a36529-412f-487b-b594-7abdccc2b0eb" name="" visibility="public" value="2"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="43c3b03f-a370-479e-99aa-7734d8de7510" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="a62ef893-b7a0-4351-84d4-0134a8cc6939" name="A_itemFlowEnd_" visibility="public" memberEnd="a488bc40-85cc-48ca-aee8-f11f79165221 bd0de7f5-e260-4cf6-b5bc-1105589e1144">
        <ownedEnd xmi:id="bd0de7f5-e260-4cf6-b5bc-1105589e1144" name="" visibility="public" type="73ae40ef-8916-44d6-a1fd-e1674275b1a3" association="a62ef893-b7a0-4351-84d4-0134a8cc6939"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="889ae49e-98a1-44fc-a5d8-cab49b8bfdb8" name="A_itemFeature_" visibility="public" memberEnd="a240b4b6-ff8d-4dd1-b9ae-a62d63d3f4fd 03be4700-df9f-40d3-a534-6864295fef00">
        <ownedEnd xmi:id="03be4700-df9f-40d3-a534-6864295fef00" name="" visibility="public" type="73ae40ef-8916-44d6-a1fd-e1674275b1a3" association="889ae49e-98a1-44fc-a5d8-cab49b8bfdb8"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="b92c89dc-cc86-4005-9867-fb8977b73e10" name="Interaction" visibility="public">
        <ownedComment xmi:id="b5a75432-d0c3-4445-bcfa-13dab62679ac" annotatedElement="b92c89dc-cc86-4005-9867-fb8977b73e10">
          <body>&lt;p>An &lt;code>Interaction&lt;/code> is a &lt;code>Behavior&lt;/code> that is also an &lt;code>Association&lt;/code>, providing a context for multiple objects that have behaviors that impact one another.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="676555be-7539-41b7-aa15-3a20b934231b" general="f527e941-2809-4d8d-a977-453060c3db74"/>
        <generalization xmi:id="5b62e4c2-6aee-475c-8f38-b0ac9935eb62" general="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="576f0e19-ec93-4519-9a44-76a27eeaa055" name="A_interaction_" visibility="public" memberEnd="c7286954-bc9f-4c14-b1f8-33819e60a964 8a5f3e42-bc6f-4e80-8096-bca0b94c8cc2">
        <ownedEnd xmi:id="8a5f3e42-bc6f-4e80-8096-bca0b94c8cc2" name="" visibility="public" type="73ae40ef-8916-44d6-a1fd-e1674275b1a3" association="576f0e19-ec93-4519-9a44-76a27eeaa055"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="97959ade-1b78-4d79-a2d8-00f6a04bc749" name="ItemFeature" visibility="public">
        <ownedComment xmi:id="dbe907f1-e54e-444e-9d34-262bbcd7ca00" annotatedElement="97959ade-1b78-4d79-a2d8-00f6a04bc749">
          <body>&lt;p>An &lt;code>ItemFeature&lt;/code> is the &lt;code>ownedFeature&lt;/code> of an &lt;code>ItemFlow&lt;/code> that identifies the things carried by the kinds of transfers that are instances of the &lt;code>ItemFlow&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="c7e1adfd-a5d9-4adb-85e5-65324926bccc" name="checkItemFeatureRedefinition" visibility="public" constrainedElement="97959ade-1b78-4d79-a2d8-00f6a04bc749">
          <ownedComment xmi:id="7325f0a2-8bda-417b-a835-1ad8f985906d" annotatedElement="c7e1adfd-a5d9-4adb-85e5-65324926bccc">
            <body>&lt;p>An &lt;code>ItemFeature&lt;/code> must redefine the &lt;code>Feature&lt;/code> &lt;code>&lt;em>Transfers::Transfer::item&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1dc8ad39-7d9b-4fc7-87db-330b4c436e42" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedRedefinition.redefinedFeature->
    redefinesFromLibrary('Transfers::Transfer::item')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="47225ea8-0be5-43ab-b6ef-8dbadbd18f03" general="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="d6568efe-49f8-45d4-8463-6b8e20ff9966" name="ItemFlowEnd" visibility="public">
        <ownedComment xmi:id="81250fc9-fcf9-4573-9590-5c95f9926b99" annotatedElement="d6568efe-49f8-45d4-8463-6b8e20ff9966">
          <body>&lt;p>An &lt;code>ItemFlowEnd&lt;/code> is a &lt;code>Feature&lt;/code> that is one of the &lt;code>connectorEnds&lt;/code> giving the &lt;code>&lt;em>source&lt;/em>&lt;/code> or &lt;code>&lt;em>target&lt;/em>&lt;/code> of an &lt;code>ItemFlow&lt;/code>. For &lt;code>ItemFlows&lt;/code> typed by &lt;code>&lt;em>FlowTransfer&lt;/em>&lt;/code> or its specializations, &lt;code>ItemFlowEnds&lt;/code> must have exactly one &lt;code>ownedFeature&lt;/code>, which redefines &lt;code>&lt;em>Transfer::source::sourceOutput&lt;/em>&lt;/code> or &lt;code>&lt;em>Transfer::target::targetInput&lt;/em>&lt;/code> and redefines the corresponding feature of the &lt;code>relatedElement&lt;/code> for its end.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="3b901db9-e7ac-4708-865e-82e3b03ce081" name="validateItemFlowEndIsEnd" visibility="public" constrainedElement="d6568efe-49f8-45d4-8463-6b8e20ff9966">
          <ownedComment xmi:id="0196d042-ef8f-473f-9f80-292dcd7ffd78" annotatedElement="3b901db9-e7ac-4708-865e-82e3b03ce081">
            <body>&lt;p>An &lt;code>ItemFlowEnd&lt;/code> must be an end &lt;code>Feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="55b8b87c-ad16-4748-be08-ba87b7e9ad4d" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isEnd</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="71660a62-8b97-47d4-9f38-e0fa9c4b28d8" name="validateItemFlowEndNestedFeature" visibility="public" constrainedElement="d6568efe-49f8-45d4-8463-6b8e20ff9966">
          <ownedComment xmi:id="d81cc5d1-dfe3-42f1-a219-7e4122f6aa4b" annotatedElement="71660a62-8b97-47d4-9f38-e0fa9c4b28d8">
            <body>&lt;p>An &lt;code>ItemFlowEnd&lt;/code> must have exactly one &lt;code>ownedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="91bb07c4-4da0-4638-b624-3ce308ae6749" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeature->size() = 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="cda84cc9-49ef-4264-a62f-e730aa7f4181" name="validateItemFlowEndOwningType" visibility="public" constrainedElement="d6568efe-49f8-45d4-8463-6b8e20ff9966">
          <ownedComment xmi:id="12526681-c079-4a1c-998b-49308eaf1f72" annotatedElement="cda84cc9-49ef-4264-a62f-e730aa7f4181">
            <body>&lt;p>The &lt;code>owningType&lt;/code> of an &lt;code>ItemFlow&lt;/code> must be an &lt;code>ItemFlow&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d8ad5350-c62f-4f2c-91a7-8053e4ff52ba" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and owningType.oclIsKindOf(ItemFlow)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="3ca54c77-e64b-4adb-a699-0b88c4e29155" general="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="6536d918-a27c-4952-b7af-43fb6ce2fbc7" name="Behaviors" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="40cdaf49-08ee-4597-b211-b1735b5eff45" name="A_step_featuringBehavior" visibility="public" memberEnd="2c467a8c-0933-4cd4-a26d-43970229f665 e7d06841-0806-41b9-b331-7066aa385b51">
        <ownedEnd xmi:id="e7d06841-0806-41b9-b331-7066aa385b51" name="featuringBehavior" visibility="public" type="f527e941-2809-4d8d-a977-453060c3db74" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="40cdaf49-08ee-4597-b211-b1735b5eff45">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9aafcfbb-42bb-4009-a89a-5bad63734502" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="507d8b33-be4c-4542-a5ce-6e426586ef8b" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="ee607c39-99b2-49f4-9a81-24f0510e1ab1" name="A_parameter_parameteredBehavior" visibility="public" memberEnd="d425d748-88fa-4431-8ae7-760c6945a9d0 7ba992b9-43e0-432b-9be4-d9fd40c4592b">
        <ownedEnd xmi:id="7ba992b9-43e0-432b-9be4-d9fd40c4592b" name="parameteredBehavior" visibility="public" type="f527e941-2809-4d8d-a977-453060c3db74" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="ee607c39-99b2-49f4-9a81-24f0510e1ab1">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d59d7e50-40b5-4f36-a19b-3585a63ca066" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e78d049f-7546-4565-b4de-7d86c5a6c557" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="c81e263a-340a-4264-b5a9-ee441741919d" name="Step" visibility="public">
        <ownedComment xmi:id="c333d412-5c28-4676-aee7-df28596fd8dc" annotatedElement="c81e263a-340a-4264-b5a9-ee441741919d">
          <body>&lt;p>A &lt;code>Step&lt;/code> is a &lt;code>Feature&lt;/code> that is typed by one or more &lt;code>Behaviors&lt;/code>. &lt;code>Steps&lt;/code> may be used by one &lt;code>Behavior&lt;/code> to coordinate the performance of other &lt;code>Behaviors&lt;/code>, supporting a steady refinement of behavioral descriptions. &lt;code>Steps&lt;/code> can be ordered in time and can be connected using &lt;code>ItemFlows&lt;/code> to specify things flowing between their &lt;code>parameters&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="836f2376-6898-4445-9d3f-be7e8987340c" name="checkStepSpecialization" visibility="public" constrainedElement="c81e263a-340a-4264-b5a9-ee441741919d">
          <ownedComment xmi:id="4354a362-ccef-4330-b5f5-10b296ceb3be" annotatedElement="836f2376-6898-4445-9d3f-be7e8987340c">
            <body>&lt;p>A Step must directly or indirectly specialize the base Step &lt;code>&lt;em>Performances::performances&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6f5bbf93-b00a-4d76-b515-7194ae76cf79" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::performances')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="2cd372bf-d0f3-42d5-b377-6f15f3ce9e47" name="checkStepEnclosedPerformanceSpecialization" visibility="public" constrainedElement="c81e263a-340a-4264-b5a9-ee441741919d">
          <ownedComment xmi:id="cdc26824-f8ce-4343-a708-79f1786d6ac7" annotatedElement="2cd372bf-d0f3-42d5-b377-6f15f3ce9e47">
            <body>&lt;p>A&lt;code>Step&lt;/code> whose &lt;code>owningType&lt;/code> is a &lt;code>Behavior&lt;/code> or another &lt;code>Step&lt;/code> must directly or indirectly specialize the &lt;code>Step&lt;/code> &lt;code>&lt;em>Performances::Performance::enclosedPerformance&lt;/em>&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="29172d3a-a322-4711-b03d-5691f675c317" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and
    (owningType.oclIsKindOf(Behavior) or
     owningType.oclIsKindOf(Step)) implies
    specializesFromLibrary('Performances::Performance::enclosedPerformance')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="38127705-390f-4c54-9f77-a4b450da011d" name="checkStepOwnedPerformanceSpecialization" visibility="public" constrainedElement="c81e263a-340a-4264-b5a9-ee441741919d">
          <ownedComment xmi:id="27d37967-db0d-46b2-ab73-5ebb1e00f978" annotatedElement="38127705-390f-4c54-9f77-a4b450da011d">
            <body>&lt;p>A composite &lt;code>Step&lt;/code> whose &lt;code>owningType&lt;/code> is a &lt;code>Structure&lt;/code> or a &lt;code>Feature&lt;/code> typed by a &lt;code>Structure&lt;/code> must directly or indirectly specialize the &lt;code>Step&lt;/code> &lt;code>&lt;em>Objects::Object::ownedPerformance&lt;/em>&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="e31a734e-16f3-4736-a1bb-907b1c706d73" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isComposite and owningType &lt;> null and
(owningType.oclIsKindOf(Structure) or
 owningType.oclIsKindOf(Feature) and
 owningType.oclAsType(Feature).type->
    exists(oclIsKindOf(Structure)) implies
    specializesFromLibrary('Objects::Object::ownedPerformance')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="09867d6f-e116-4b34-b038-a274edace59f" name="checkStepSubperformanceSpecialization" visibility="public" constrainedElement="c81e263a-340a-4264-b5a9-ee441741919d">
          <ownedComment xmi:id="6f327dc9-1078-4f46-94a7-f9f1b5a48172" annotatedElement="09867d6f-e116-4b34-b038-a274edace59f">
            <body>&lt;p>A&lt;code>Step&lt;/code> whose &lt;code>owningType&lt;/code> is a &lt;code>Behavior&lt;/code> or another &lt;code>Step&lt;/code>, and which is composite, must directly or indirectly specialize the &lt;code>Step&lt;/code> &lt;code>&lt;em>Performances::Performance::subperformance&lt;/em>&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d221f10b-1493-4af2-936e-acd41ec46d95" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType &lt;> null and
    (owningType.oclIsKindOf(Behavior) or
     owningType.oclIsKindOf(Step)) and
    self.isComposite implies
    specializesFromLibrary('Performances::Performance::subperformance')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="799bc095-488c-4db3-88e5-54ba10134f29" name="deriveStepBehavior" visibility="public" constrainedElement="c81e263a-340a-4264-b5a9-ee441741919d">
          <ownedComment xmi:id="a1e7ad52-70d1-42ef-9e14-29c85934c09d" annotatedElement="799bc095-488c-4db3-88e5-54ba10134f29">
            <body>&lt;p>The &lt;code>behaviors&lt;/code> of a &lt;code>Step&lt;/code> are all its &lt;code>types&lt;/code> that are &lt;code>Behaviors&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="0f26ded9-a8aa-42c0-b116-3f4047826488" name="" visibility="public">
            <language>OCL2.0</language>
            <body>behavior = type->selectByKind(Behavior)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="0adc091c-11d1-447f-9561-cc43bfaeba9a" general="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
        <ownedAttribute xmi:id="4f6477ef-2deb-4f17-a41e-e2aa01f6bb7e" name="behavior" visibility="public" type="f527e941-2809-4d8d-a977-453060c3db74" isOrdered="true" isDerived="true" subsettedProperty="2dd9a8a5-bc46-421d-bc22-89f91e4b6ffe" association="662f64b5-3283-421c-961e-418ce6cfa7aa">
          <ownedComment xmi:id="2768d6e8-6d1d-43a4-a858-fd254bf09bf4" annotatedElement="4f6477ef-2deb-4f17-a41e-e2aa01f6bb7e">
            <body>&lt;p>The &lt;code>Behaviors&lt;/code> that type this &lt;code>Step&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f79631ff-fec9-47d4-8d6a-800dc492da5f" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9a8e8518-2002-4b55-85bb-a75174846372" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5568f668-7e98-4b99-a40f-7c2eecde3db2" name="parameter" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" redefinedProperty="5b298b23-243e-4a34-afc9-15236eca08a8" association="3f0c8f42-cd46-4a63-8df8-e8898c4c240c">
          <ownedComment xmi:id="7b0a2ba1-0efa-4fce-b4c1-4bee8fef9aa7" annotatedElement="5568f668-7e98-4b99-a40f-7c2eecde3db2">
            <body>&lt;p>The &lt;code>parameters&lt;/code> of this &lt;code>Step&lt;/code>, which are defined as its &lt;code>directedFeatures&lt;/code>, whose values are passed into and/or out of a performance of the &lt;code>Step&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a9ca57ca-bee3-4506-b4a3-97ac3641aa14" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="caeb75c0-7f2a-4144-baf9-50968e768560" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="662f64b5-3283-421c-961e-418ce6cfa7aa" name="A_behavior_typedStep" visibility="public" memberEnd="4f6477ef-2deb-4f17-a41e-e2aa01f6bb7e c993e98e-bff7-47e3-a653-bfa31708f9d3">
        <ownedEnd xmi:id="c993e98e-bff7-47e3-a653-bfa31708f9d3" name="typedStep" visibility="public" type="c81e263a-340a-4264-b5a9-ee441741919d" isDerived="true" subsettedProperty="08f343cc-a4b3-4b7b-ac32-2b752135ca37" association="662f64b5-3283-421c-961e-418ce6cfa7aa">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e13fd127-c80c-4693-8f37-103fc6a75137" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5de66199-3626-4106-8cc8-231e55249641" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="f527e941-2809-4d8d-a977-453060c3db74" name="Behavior" visibility="public">
        <ownedComment xmi:id="635223ff-fcbe-4adb-be6e-b9b3fb72f76a" annotatedElement="f527e941-2809-4d8d-a977-453060c3db74">
          <body>&lt;p>A &lt;code>Behavior &lt;/code>coordinates occurrences of other &lt;code>Behaviors&lt;/code>, as well as changes in objects. &lt;code>Behaviors&lt;/code> can be decomposed into &lt;code>Steps&lt;/code> and be characterized by &lt;code>parameters&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="e2f23d7b-4cbd-4c12-a99f-012ad75255a5" name="checkBehaviorSpecialization" visibility="public" constrainedElement="f527e941-2809-4d8d-a977-453060c3db74">
          <ownedComment xmi:id="df14690b-ec3f-464e-b305-ea97a8f2a443" annotatedElement="e2f23d7b-4cbd-4c12-a99f-012ad75255a5">
            <body>&lt;p>A &lt;code>Behavior&lt;/code> must directly or indirectly specialize the base &lt;code>Behavior&lt;/code> &lt;code>&lt;em>Performances::Performance&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="116c481a-88ba-4985-9eea-973bc2c53cbb" name="" visibility="public">
            <language>English</language>
            <body>specializesFromLibrary('Performances::Performance')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="6a943049-1acc-4796-b525-d1f1dc85437b" name="deriveBehaviorStep" visibility="public" constrainedElement="f527e941-2809-4d8d-a977-453060c3db74">
          <ownedComment xmi:id="f81a02d2-9056-454e-86bd-6450a7620248" annotatedElement="6a943049-1acc-4796-b525-d1f1dc85437b">
            <body>&lt;p>The &lt;code>steps&lt;/code> of a &lt;code>Behavior&lt;/code> are its &lt;code>features&lt;/code> that are &lt;code>Steps&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f19f39d5-bb83-4ce0-9842-d64442f263dc" name="" visibility="public">
            <language>OCL2.0</language>
            <body>step = feature->selectByKind(Step)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="a372d888-a848-45cc-a7dd-6509c9785f6f" name="validateBehaviorSpecialization" visibility="public" constrainedElement="f527e941-2809-4d8d-a977-453060c3db74">
          <ownedComment xmi:id="2f3fb6cd-1e9b-49e1-9a08-aef00c6310f6" annotatedElement="a372d888-a848-45cc-a7dd-6509c9785f6f">
            <body>&lt;p>A &lt;code>Behavior&lt;/code> must not specialize a &lt;code>Structure&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="258a1c5d-c6df-465b-8e57-96b7dcab9edd" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSpecialization.general->forAll(not oclIsKindOf(Structure))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="695139d6-e7cf-4f7a-b25e-5c48b025ae71" general="d956e5c3-9d04-4c1d-9494-2b8d7f33e196"/>
        <ownedAttribute xmi:id="2c467a8c-0933-4cd4-a26d-43970229f665" name="step" visibility="public" type="c81e263a-340a-4264-b5a9-ee441741919d" isDerived="true" subsettedProperty="42941304-02d9-4962-b118-95860c17236a" association="40cdaf49-08ee-4597-b211-b1735b5eff45">
          <ownedComment xmi:id="36f1fc35-97d9-4c34-a7b6-1c36bdd06696" annotatedElement="2c467a8c-0933-4cd4-a26d-43970229f665">
            <body>&lt;p>The &lt;code>Steps&lt;/code> that make up this &lt;code>Behavior&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="75e52545-d993-4c79-a06f-81680eb2d093" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="41d5069f-6fd6-4de3-9b30-7ef767ffbaf0" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d425d748-88fa-4431-8ae7-760c6945a9d0" name="parameter" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" redefinedProperty="5b298b23-243e-4a34-afc9-15236eca08a8" association="ee607c39-99b2-49f4-9a81-24f0510e1ab1">
          <ownedComment xmi:id="5e1dbbe1-5aa3-4c65-98ad-8a4d0551dbe2" annotatedElement="d425d748-88fa-4431-8ae7-760c6945a9d0">
            <body>&lt;p>The parameters of this &lt;code>Behavior&lt;/code>, which are defined as its &lt;code>directedFeatures&lt;/code>, whose values are passed into and/or out of a performance of the &lt;code>Behavior&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="19fcdef7-b794-42ec-8205-71f5a13e8439" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ad0c6269-3e05-48bb-b298-eaa4d4f7f168" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="2097bb44-014f-4fae-aa21-75f8eb7ea8bf" name="A_involvesFeature_" visibility="public" memberEnd="d235fd74-1378-4f42-9fdb-2d1d78763edb 9eeff367-858e-40fb-a3ff-027bd8d057cb" navigableOwnedEnd="d235fd74-1378-4f42-9fdb-2d1d78763edb">
        <ownedEnd xmi:id="9eeff367-858e-40fb-a3ff-027bd8d057cb" name="" visibility="public" type="f527e941-2809-4d8d-a977-453060c3db74" association="2097bb44-014f-4fae-aa21-75f8eb7ea8bf"/>
        <ownedEnd xmi:id="d235fd74-1378-4f42-9fdb-2d1d78763edb" name="involvesFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" association="2097bb44-014f-4fae-aa21-75f8eb7ea8bf">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="737faf1a-31e0-4710-a07a-c14fee825449" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cfe3957a-2de4-4218-ba70-bef7c5cb37d7" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="eb1dad4c-855f-4154-b5f3-bd7d07932a0c" name="ParameterMembership" visibility="public">
        <ownedComment xmi:id="25c150eb-59d2-488b-8909-c337dea2660d" annotatedElement="eb1dad4c-855f-4154-b5f3-bd7d07932a0c">
          <body>&lt;p>A &lt;code>ParameterMembership&lt;/code> is a &lt;code>FeatureMembership&lt;/code> that identifies its &lt;code>memberFeature&lt;/code> as a parameter, which is always owned, and must have a &lt;code>direction&lt;/code>. A &lt;code>ParameterMembership&lt;/code> must be owned by a &lt;code>Behavior&lt;/code> or a &lt;code>Step&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="59de919c-615a-4454-9d6a-05342d150082" name="validateParameterMembershipParameterDirection" visibility="public" constrainedElement="eb1dad4c-855f-4154-b5f3-bd7d07932a0c">
          <ownedComment xmi:id="cc84fd8e-a245-4e88-8485-4e4a504f97c0" annotatedElement="59de919c-615a-4454-9d6a-05342d150082">
            <body>&lt;p>The &lt;code>ownedMemberParameter&lt;/code> of a &lt;code>ParameterMembership&lt;/code> must have a  &lt;code>direction&lt;/code> equal to the result of the &lt;code>parameterDirection()&lt;/code> operation.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="68ae0c5e-5b60-488b-8724-e8c6a212aae9" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMemberParameter.direction = parameterDirection()</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="38cd1a3c-34fd-4a32-a0a2-fc106564f3c2" name="validateParameterMembershipOwningType" visibility="public" constrainedElement="eb1dad4c-855f-4154-b5f3-bd7d07932a0c">
          <ownedComment xmi:id="335f031d-b674-4698-a71c-6e425e39caf0" annotatedElement="38cd1a3c-34fd-4a32-a0a2-fc106564f3c2">
            <body>&lt;p>A &lt;code>ParameterMembership&lt;/code> must be owned by a &lt;code>Behavior&lt;/code> or a &lt;code>Step&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="56363263-39db-4fea-b0bf-fb6805bb1e47" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="69b7db1b-8c70-483d-b99a-daa4687594e8" general="10189040-993c-4d64-aacf-0d99b558af68"/>
        <ownedAttribute xmi:id="0a469064-fb44-493a-94be-d3a43d23f5f8" name="ownedMemberParameter" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" aggregation="composite" isDerived="true" redefinedProperty="6bf83eae-2d89-4ea9-8c7b-92d8ef26bfaa" association="72b999f9-39d6-4564-b53d-dee96cad4a10">
          <ownedComment xmi:id="9707e639-4637-447f-a3fd-24e9c0d2a44a" annotatedElement="0a469064-fb44-493a-94be-d3a43d23f5f8">
            <body>&lt;p>The &lt;code>Feature&lt;/code> that is identified as a &lt;code>parameter&lt;/code> by this &lt;code>ParameterMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a70726c8-d066-49f3-bce5-498d79b8e9ac" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8297388c-93f4-41eb-a92f-2ef6a27a77df" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="87ca6ab6-9fe5-4383-95ef-0542aafd685d" name="parameterDirection" visibility="public" bodyCondition="30986b13-8890-4221-a1c4-947ce80a2568">
          <ownedComment xmi:id="7024e26b-ec93-46ba-b8f9-1c064ad2ea85" annotatedElement="87ca6ab6-9fe5-4383-95ef-0542aafd685d">
            <body>&lt;p>Return the required value of the &lt;code>direction&lt;/code> of the &lt;code>ownedMemberParameter&lt;/code>. By default, this is &lt;code>in&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="30986b13-8890-4221-a1c4-947ce80a2568" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="378dcebd-c760-42a6-9b53-1c1a985f8fe2" name="" visibility="public">
              <language>OCL2.0</language>
              <body>FeatureDirectionKind::_'in'</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="3aa43a23-fd35-4946-8a84-b0db567c605d" name="" visibility="public" type="7afbde11-a8e1-455f-bbec-22a4e1f5b814" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cd3f9fec-27ee-42e9-8dfc-8865fcd1905d" name="" visibility="public" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3d0451b4-48f2-4d79-abee-954cc3e24435" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="72b999f9-39d6-4564-b53d-dee96cad4a10" name="A_ownedMemberParameter_owningParameterMembership" visibility="public" memberEnd="0a469064-fb44-493a-94be-d3a43d23f5f8 ffef094b-9cf3-40e8-98ee-1c3bba2c77cb">
        <ownedEnd xmi:id="ffef094b-9cf3-40e8-98ee-1c3bba2c77cb" name="owningParameterMembership" visibility="public" type="eb1dad4c-855f-4154-b5f3-bd7d07932a0c" isDerived="true" subsettedProperty="b79a7d91-99ab-4372-8103-af57f85ad3a1" association="72b999f9-39d6-4564-b53d-dee96cad4a10">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="64902ecc-9900-4000-ad1b-29ce303ed7e2" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c5233297-5369-48ce-970a-f04996f427b6" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="3f0c8f42-cd46-4a63-8df8-e8898c4c240c" name="A_parameter_parameteredStep" visibility="public" memberEnd="5568f668-7e98-4b99-a40f-7c2eecde3db2 de5274d1-087e-4467-8b93-3cab6400bdce">
        <ownedEnd xmi:id="de5274d1-087e-4467-8b93-3cab6400bdce" name="parameteredStep" visibility="public" type="c81e263a-340a-4264-b5a9-ee441741919d" isDerived="true" subsettedProperty="a73b8151-30bf-4f8d-9283-34cdea4ac29b" association="3f0c8f42-cd46-4a63-8df8-e8898c4c240c">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3d9a5c15-165f-4de3-955e-6581bc18767f" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cd29410d-6135-488f-80b0-59834247531d" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="6f34b34a-e52a-42ec-8403-6735ab0c0f3c" name="Connectors" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="f9615571-b95b-49e4-a007-0ce847e62696" name="Connector" visibility="public">
        <ownedComment xmi:id="aee7000a-f52c-4d1b-98b3-27330e7f3755" annotatedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <body>&lt;p>A &lt;code>Connector&lt;/code> is a usage of &lt;code>Associations&lt;/code>, with links restricted according to instances of the &lt;code>Type&lt;/code> in which they are used (domain of the &lt;code>Connector&lt;/code>). The &lt;code>associations&lt;/code> of the &lt;code>Connector&lt;/code> restrict what kinds of things might be linked. The &lt;code>Connector&lt;/code> further restricts these links to be between values of &lt;code>Features&lt;/code> on instances of its domain.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="fcf3ec3f-3018-4c80-8dee-d1ef7c3dbdc3" name="deriveConnectorRelatedFeature" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="96990374-2b8d-43b0-ae22-0307578ae7d9" annotatedElement="fcf3ec3f-3018-4c80-8dee-d1ef7c3dbdc3">
            <body>&lt;p>The &lt;code>relatedFeatures&lt;/code> of a &lt;code>Connector&lt;/code> are the referenced &lt;code>Features&lt;/code> of its &lt;code>connectorEnds&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9a9295f3-eef9-46bc-92a1-7e7bd7bf8f91" name="" visibility="public">
            <language>OCL2.0</language>
            <body>relatedFeature = connectorEnd.ownedReferenceSubsetting->
    select(s | s &lt;> null).subsettedFeature</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="554e08ad-da50-44c4-a6c1-ab67a40e1e45" name="checkConnectorTypeFeaturing" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="0f25387c-6455-4939-92b0-d7cfc162ba72" annotatedElement="554e08ad-da50-44c4-a6c1-ab67a40e1e45">
            <body>&lt;p>Each &lt;code>relatedFeature&lt;/code> of a &lt;code>Connector&lt;/code> must have each &lt;code>featuringType&lt;/code> of the &lt;code>Connector&lt;/code> as a direct or indirect &lt;code>featuringType&lt;/code> (where a &lt;code>Feature&lt;/code> with no &lt;code>featuringType&lt;/code> is treated as if the &lt;code>Classifier&lt;/code> &lt;code>&lt;em>Base::Anything&lt;/em>&lt;/code> was its &lt;code>featuringType&lt;/code>).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1058d5fe-7e20-48d1-b2db-559e35e7f3c3" name="" visibility="public">
            <language>OCL2.0</language>
            <body>relatedFeature->forAll(f | 
    if featuringType->isEmpty() then f.isFeaturedWithin(null)
    else featuringType->forAll(t | f.isFeaturedWithin(t))
    endif)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="fdcafbfe-8d2d-4777-846d-1606fabdb0f8" name="deriveConnectorSourceFeature" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="713dd5f7-d43f-4fa6-bd6f-abd3af72e4b1" annotatedElement="fdcafbfe-8d2d-4777-846d-1606fabdb0f8">
            <body>&lt;p>The &lt;code>sourceFeature&lt;/code> of a &lt;code>Connector&lt;/code> is its first &lt;code>relatedFeature&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="28500c51-c652-4c5d-83c9-18ebddff985a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>sourceFeature = 
    if relatedFeature->isEmpty() then null 
    else relatedFeature->first() 
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="bc6e5d64-d60b-44b9-9c75-9d0a8904ba61" name="deriveConnectorTargetFeature" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="974577d6-3ccf-4957-88fa-1ca8e4799d51" annotatedElement="bc6e5d64-d60b-44b9-9c75-9d0a8904ba61">
            <body>&lt;p>The &lt;code>targetFeatures&lt;/code> of a Connector are the &lt;code>relatedFeatures&lt;/code> other than the &lt;code>sourceFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="72fc35d8-b8e3-46a5-a902-f0d7bf133591" name="" visibility="public">
            <language>OCL2.0</language>
            <body>targetFeature =
    if relatedFeature->size() &lt; 2 then OrderedSet{}
    else 
        relatedFeature->
            subSequence(2, relatedFeature->size())->
            asOrderedSet()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="e71ffd4a-7c68-4792-bcc3-ceefff8b6efc" name="validateConnectorRelatedFeatures" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="3fdd3058-dc65-40a9-bfbb-f975e55659b4" annotatedElement="e71ffd4a-7c68-4792-bcc3-ceefff8b6efc">
            <body>&lt;p>If a &lt;code>Connector&lt;/code> is concrete (not abstract), then it must have at least two &lt;code>relatedFeatures&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="e54e8456-71b4-4fd8-a849-fc7fccb76309" name="" visibility="public">
            <language>OCL2.0</language>
            <body>not isAbstract implies relatedFeature->size() >= 2</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="8c666875-3ce2-414e-ac3a-9676df274f60" name="checkConnectorSpecialization" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="98ecb1b4-171e-49e8-b54e-4c08b12487e5" annotatedElement="8c666875-3ce2-414e-ac3a-9676df274f60">
            <body>&lt;p>A &lt;code>Connector&lt;/code> must directly or indirectly specialize the base &lt;code>Connector&lt;/code> &lt;code>&lt;em>Links::links&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a37faba9-16ee-4116-a2bd-1e5916ca0c57" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Links::links')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="3ddc46ce-6fe0-4dfc-a763-b048bb8ad84c" name="checkConnectorObjectSpecialization" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="3d5db2ef-662f-49f6-a351-48eb25b6effd" annotatedElement="3ddc46ce-6fe0-4dfc-a763-b048bb8ad84c">
            <body>&lt;p>A &lt;code>Connector&lt;/code> for an &lt;code>AssociationStructure&lt;/code> must directly or indirectly specialize the base &lt;code>Connector&lt;/code> &lt;code>&lt;em>Objects::linkObjects&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1322fecd-7ceb-4621-82c5-c917dd5d7c75" name="" visibility="public">
            <language>OCL2.0</language>
            <body>association->exists(oclIsKindOf(AssociationStructure)) implies
    specializesFromLibrary('Objects::linkObjects')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="9ec81892-fb1d-4f42-ac3a-75963c20a5ae" name="checkConnectorBinaryObjectSpecialization" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="6189fb31-bbd7-4256-829a-9f04dabdb27a" annotatedElement="9ec81892-fb1d-4f42-ac3a-75963c20a5ae">
            <body>&lt;p>A binary &lt;code>Connector&lt;/code> for an &lt;code>AssociationStructure&lt;/code>  must directly or indirectly specialize the base &lt;code>Connector&lt;/code> &lt;code>&lt;em>Objects::binaryLinkObjects&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="4a8fee5a-7311-4ce5-84b8-a610ce058589" name="" visibility="public">
            <language>OCL2.0</language>
            <body>connectorEnds->size() = 2 and
association->exists(oclIsKindOf(AssocationStructure)) implies
    specializesFromLibrary('Objects::binaryLinkObjects')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="32c23c3f-16f4-4585-9a03-9624ac620726" name="checkConnectorBinarySpecialization" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="894ff1e9-f7f8-4f5c-9dc2-7ba7eba70df4" annotatedElement="32c23c3f-16f4-4585-9a03-9624ac620726">
            <body>&lt;p>A binary &lt;code>Connector&lt;/code> must directly or indirectly specialize the base &lt;code>Connector&lt;/code> &lt;code>&lt;em>Links::binaryLinks&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="53b21d47-a4f0-42b1-b416-01105d6c88c1" name="" visibility="public">
            <language>OCL2.0</language>
            <body>connectorEnd->size() = 2 implies
    specializesFromLibrary('Links::binaryLinks')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="d89aa953-1a6a-443f-8c39-754bf713a18d" name="validateConnectorBinarySpecialization" visibility="public" constrainedElement="f9615571-b95b-49e4-a007-0ce847e62696">
          <ownedComment xmi:id="6b2650d8-3f90-4db6-8dc6-1f208911c94f" annotatedElement="d89aa953-1a6a-443f-8c39-754bf713a18d">
            <body>&lt;p>If a &lt;code>Connector&lt;/code> has more than two &lt;code>connectorEnds&lt;/code>, then it must &lt;em>not&lt;/em> specialize, directly or indirectly, the &lt;code>Association&lt;/code> &lt;em>&lt;code>BinaryLink&lt;/code>&lt;/em> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="64241270-b6c7-40ce-96ce-a056ba16bb4b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>connectorEnds->size() > 2 implies
    not specializesFromLibrary('Links::BinaryLink')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="b54bc32d-7e3b-4516-b5e8-d6118c0ec633" general="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
        <generalization xmi:id="632605d7-f4c3-4ee7-bc57-60663ad953fd" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="5d81451f-480e-49d7-953a-4b441caf76d4" name="relatedFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isUnique="false" isDerived="true" redefinedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="759936f5-a6ba-40ba-a832-18f396890bb8">
          <ownedComment xmi:id="e8c040bb-87cc-4bd1-9512-5485fcf5112c" annotatedElement="5d81451f-480e-49d7-953a-4b441caf76d4">
            <body>&lt;p>The &lt;code>Features&lt;/code> that are related by this &lt;code>Connector&lt;/code> considered as a &lt;code>Relationship&lt;/code> and that restrict the links it identifies, given by the referenced &lt;code>Features&lt;/code> of the &lt;code>connectorEnds&lt;/code> of the &lt;code>Connector&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="89e8796f-52c6-4be9-b97a-1e4e1b9baeb1" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="51bcc272-8bf1-4266-af77-09f6b47cd336" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e15018cb-6a4b-48b2-b818-d21f0622c267" name="association" visibility="public" type="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" isOrdered="true" isDerived="true" redefinedProperty="2dd9a8a5-bc46-421d-bc22-89f91e4b6ffe" association="d52a6196-3bc8-4dfa-b495-54967e532533">
          <ownedComment xmi:id="af634b43-fbd6-4371-80ce-920ba63610b7" annotatedElement="e15018cb-6a4b-48b2-b818-d21f0622c267">
            <body>&lt;p>The &lt;code>Associations&lt;/code> that type the &lt;code>Connector&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f610fddb-e958-4a63-ab5e-2a4346025ed0" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8598e7be-fcad-41f0-a8d6-28a5076e66ab" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="cf2b6440-1987-451c-b676-389e1aaa7122" name="connectorEnd" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" redefinedProperty="5979d447-4d72-4ffb-a569-ddbe6aacc8dd" association="c8b02c1b-f9f8-4fdf-90d3-e53e0fb5b4af">
          <ownedComment xmi:id="06cdb7e8-0d80-4e07-a029-6a4d9fcf7afe" annotatedElement="cf2b6440-1987-451c-b676-389e1aaa7122">
            <body>&lt;p>The &lt;code>endFeatures&lt;/code> of a &lt;code>Connector&lt;/code>, which redefine the &lt;code>endFeatures&lt;/code> of the &lt;code>associations&lt;/code> of the &lt;code>Connector&lt;/code>. The &lt;code>connectorEnds&lt;/code> determine via &lt;code>ReferenceSubsetting&lt;/code> &lt;code>Relationships&lt;/code> which &lt;code>Features&lt;/code> are related by the &lt;code>Connector&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="48f92d1c-a239-4443-95fd-12a8f3cd0eaa" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9a4bac29-2665-4dd7-98b8-5a585430786b" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="0cad7969-0d12-4a35-8473-1b1da503eaf0" name="sourceFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="5d81451f-480e-49d7-953a-4b441caf76d4" association="61afcf9d-3b14-45a3-9830-6cc559a26ed9">
          <ownedComment xmi:id="89f08b53-4e8a-4d34-bc80-922805878fe1" annotatedElement="0cad7969-0d12-4a35-8473-1b1da503eaf0">
            <body>&lt;p>The source &lt;code>relatedFeature&lt;/code> for this &lt;code>Connector&lt;/code>. It is the first &lt;code>relatedFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="af6f1a02-165e-4e15-bd55-9ac990fc3d04" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b38682bd-b57e-4d73-9127-70c354ff8932" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="fc72dff0-56b8-4406-9d40-1bd319e54ce1" name="targetFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" subsettedProperty="5d81451f-480e-49d7-953a-4b441caf76d4" association="0071b39b-fec6-40b7-9d58-b06b6ec51fbd">
          <ownedComment xmi:id="81cb640b-f07d-44ba-8650-780f59212d96" annotatedElement="fc72dff0-56b8-4406-9d40-1bd319e54ce1">
            <body>&lt;p>The target &lt;code>relatedFeatures&lt;/code> for this &lt;code>Connector&lt;/code>. This includes all the &lt;code>relatedFeatures&lt;/code> other than the &lt;code>sourceFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="09ddb4a1-e260-485d-b37a-b83154584849" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e5b9ff5f-02c4-4309-8743-536e8cbc7349" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="d52a6196-3bc8-4dfa-b495-54967e532533" name="A_association_typedConnector" visibility="public" memberEnd="e15018cb-6a4b-48b2-b818-d21f0622c267 301928d3-9e32-4e25-bd27-268388873299">
        <ownedEnd xmi:id="301928d3-9e32-4e25-bd27-268388873299" name="typedConnector" visibility="public" type="f9615571-b95b-49e4-a007-0ce847e62696" isDerived="true" subsettedProperty="08f343cc-a4b3-4b7b-ac32-2b752135ca37" association="d52a6196-3bc8-4dfa-b495-54967e532533">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6b78727d-3a21-4d9e-8ae5-44eb97b97d44" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1da5a17d-6656-4d7e-9990-e21d901326f9" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="759936f5-a6ba-40ba-a832-18f396890bb8" name="A_relatedFeature_connector" visibility="public" memberEnd="5d81451f-480e-49d7-953a-4b441caf76d4 0e5b990d-53a4-475f-b529-ffac0d186b65">
        <ownedEnd xmi:id="0e5b990d-53a4-475f-b529-ffac0d186b65" name="connector" visibility="public" type="f9615571-b95b-49e4-a007-0ce847e62696" isDerived="true" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="759936f5-a6ba-40ba-a832-18f396890bb8">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0998924d-8516-42d7-8643-783611abc1bb" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="06d35521-e46a-473b-b954-2cd76d1338de" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="1c78cfe5-fc6f-4b8b-89cf-a58b1f4b972a" name="A_participantFeature_" visibility="public" memberEnd="5667d0c5-b35e-41f0-984d-e1902f301e25 91197025-d5a4-4a1a-a87f-de34379a68ce" navigableOwnedEnd="5667d0c5-b35e-41f0-984d-e1902f301e25">
        <ownedEnd xmi:id="91197025-d5a4-4a1a-a87f-de34379a68ce" name="" visibility="public" type="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" association="1c78cfe5-fc6f-4b8b-89cf-a58b1f4b972a"/>
        <ownedEnd xmi:id="5667d0c5-b35e-41f0-984d-e1902f301e25" name="participantFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isOrdered="true" isDerived="true" subsettedProperty="f062fa83-0335-40e0-8652-a22e6a8b3b11" association="1c78cfe5-fc6f-4b8b-89cf-a58b1f4b972a">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cc8edda8-f435-4aec-bf5b-0016ed4dda51" name="" visibility="public" value="2"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="52ab82dd-7973-450e-a4a7-1d891ff04390" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="382ae0dc-aad3-4859-ae2f-718dafa76cb1" name="BindingConnector" visibility="public">
        <ownedComment xmi:id="e3d83a80-5bd9-4760-9c0c-5cc6f05db8f8" annotatedElement="382ae0dc-aad3-4859-ae2f-718dafa76cb1">
          <body>&lt;p>A &lt;code>BindingConnector&lt;/code> is a binary &lt;code>Connector&lt;/code> that requires its &lt;code>relatedFeatures&lt;/code> to identify the same things (have the same values).&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="4a4e4ee0-239a-4841-835c-7946b34665e5" name="checkBindingConnectorSpecialization" visibility="public" constrainedElement="382ae0dc-aad3-4859-ae2f-718dafa76cb1">
          <ownedComment xmi:id="b64a807e-2787-4af6-b4a0-2b9e1a4a1d46" annotatedElement="4a4e4ee0-239a-4841-835c-7946b34665e5">
            <body>&lt;p>A BindingConnector must directly or indirectly specialize the base BindingConnector &lt;code>&lt;em>Links::selfLinks&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="148de73e-f588-4ca9-aec6-d068e82e1cb1" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Links::selfLinks')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="850ca1be-2458-4f44-a25a-37733908c087" name="validateBindingConnectorIsBinary" visibility="public" constrainedElement="382ae0dc-aad3-4859-ae2f-718dafa76cb1">
          <ownedComment xmi:id="ec0624b6-8a19-4809-987d-cc9a0696a5a4" annotatedElement="850ca1be-2458-4f44-a25a-37733908c087">
            <body>&lt;p>A &lt;code>BindingConnector&lt;/code> must be binary.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8a5db078-947f-463f-818e-9a37fefbb762" name="" visibility="public">
            <language>OCL2.0</language>
            <body>relatedFeature->size() = 2</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="65060f2b-66f6-475b-a00a-42862aa02da6" general="f9615571-b95b-49e4-a007-0ce847e62696"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="c8b02c1b-f9f8-4fdf-90d3-e53e0fb5b4af" name="A_connectorEnd_featuringConnector" visibility="public" memberEnd="cf2b6440-1987-451c-b676-389e1aaa7122 829637c3-f7e1-4864-8d9c-83adc03a9df7">
        <ownedEnd xmi:id="829637c3-f7e1-4864-8d9c-83adc03a9df7" name="featuringConnector" visibility="public" type="f9615571-b95b-49e4-a007-0ce847e62696" isDerived="true" subsettedProperty="f685dfe3-4bd5-4bd3-a995-151ae1143ba7" association="c8b02c1b-f9f8-4fdf-90d3-e53e0fb5b4af">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0253f9eb-dc41-455f-a720-a48d01a5895e" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8e5a17b9-1af2-4573-a385-2fe95b17bccb" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="081c2968-e1db-4ecb-9f1c-78145f96bf55" name="A_triggerStep_succession" visibility="public" memberEnd="b9cac2ff-307f-40d6-8340-901d3e2af1ca 6b8eb702-569b-4a87-848d-afa74d1b50e5">
        <ownedEnd xmi:id="6b8eb702-569b-4a87-848d-afa74d1b50e5" name="succession" visibility="public" type="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae" association="081c2968-e1db-4ecb-9f1c-78145f96bf55">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b4bc48de-ec2a-4cd2-b89b-365371097035" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5d385529-c4f6-4cd9-8dd3-609a235edebc" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="b336a12d-4f9f-4810-b317-849195e84bf6" name="A_transitionStep_succession" visibility="public" memberEnd="e338aa69-6d9d-4159-8de9-a46e3ab98cfd 5727c0b3-92de-48b6-8e4b-099a71269e07">
        <ownedEnd xmi:id="5727c0b3-92de-48b6-8e4b-099a71269e07" name="succession" visibility="public" type="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae" association="b336a12d-4f9f-4810-b317-849195e84bf6">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d157fe77-f9e3-43c9-bacd-68c8fcddae5f" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cfcc71ca-b52a-4f13-9177-b3ab2c5d8df0" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="17deb6bd-e808-49ca-abdd-c4520e35565a" name="A_guardExpression_succession" visibility="public" memberEnd="e92a9775-4ff0-42f9-b08e-72d5dcc5935d a0f1b7e8-77f4-451c-a050-ec8fb479005b">
        <ownedEnd xmi:id="a0f1b7e8-77f4-451c-a050-ec8fb479005b" name="succession" visibility="public" type="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae" association="17deb6bd-e808-49ca-abdd-c4520e35565a">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="6d994b24-d783-4e98-a97d-c8d5abdf2419" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c0ccfeef-9316-460d-a3c6-25a178c1e0d1" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="d022c746-d106-4a5b-91cc-f0e1cac6b35e" name="A_effectStep_succession" visibility="public" memberEnd="d65132c3-ec1f-4255-aece-84e82c352f74 e55f89d4-c4ed-4f9f-a05d-e3b3ad74e6e7">
        <ownedEnd xmi:id="e55f89d4-c4ed-4f9f-a05d-e3b3ad74e6e7" name="succession" visibility="public" type="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae" association="d022c746-d106-4a5b-91cc-f0e1cac6b35e">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="8ae3b011-86ab-4cec-a160-699b2fbbc8e5" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="420c552f-f7ac-4b3f-8118-13f62dcb4361" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae" name="Succession" visibility="public">
        <ownedComment xmi:id="da378d35-4125-48a0-a44f-7078e28e6970" annotatedElement="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae">
          <body>&lt;p>A &lt;code>Succession&lt;/code> is a binary &lt;code>Connector&lt;/code> that requires its &lt;code>relatedFeatures&lt;/code> to happen separately in time.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="b0bb94d6-7118-4e5a-b532-38b669ce0d12" name="checkSuccessionSpecialization" visibility="public" constrainedElement="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae">
          <ownedComment xmi:id="679f38a6-8cab-44c2-8413-6940ce49d6b8" annotatedElement="b0bb94d6-7118-4e5a-b532-38b669ce0d12">
            <body>&lt;p>A Succession must directly or indirectly specialize the Feature &lt;code>&lt;em>Occurrences::happensBeforeLinks&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8eb8477e-9f13-4ee8-9fd2-65d9508256b5" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Occurences::happensBeforeLinks')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="6151763a-0941-47e7-8f3f-ff6fe12fe7b5" name="deriveSuccessionTransitionStep" visibility="public" constrainedElement="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae">
          <ownedComment xmi:id="87e667c4-5b13-49ff-99ad-f13d8903ee71" annotatedElement="6151763a-0941-47e7-8f3f-ff6fe12fe7b5">
            <body>&lt;p>If the &lt;code>owningNamespace&lt;/code> of a &lt;code>Succession&lt;/code> is a &lt;code>Step&lt;/code> that specializes &lt;em>&lt;code>TransitionPerformances::TransitionPerformance&lt;/code>&lt;/em>, then this is presumed to be the &lt;code>transitionStep&lt;/code> for the &lt;code>Succession&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="433a609f-fbb3-4142-b960-c12f2921a0c6" name="" visibility="public">
            <language>OCL2.0</language>
            <body>transitionStep =
    if owningNamespace.oclIsKindOf(Step) and 
        owningNamespace.oclAsType(Step).
            specializesFromLibrary('TransitionPerformances::TransitionPerformance') then
        owningNamespace.oclAsType(Step)
    else null
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="882c941c-5f55-464d-9359-19d0cfe9d399" name="deriveSuccessionTriggerStep" visibility="public" constrainedElement="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae">
          <ownedComment xmi:id="9c3200fa-e76f-42c3-89bb-cf213433dc1a" annotatedElement="882c941c-5f55-464d-9359-19d0cfe9d399">
            <body>&lt;p>The &lt;code>triggerStep&lt;/code> of a &lt;code>Succession&lt;/code> is the second &lt;code>ownedFeature&lt;/code> of its &lt;code>transitionStep&lt;/code>, which must be a &lt;code>Step&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ed10773c-9272-4bb1-a7d5-dacdbd01dc69" name="" visibility="public">
            <language>OCL2.0</language>
            <body>triggerStep =
    if transitionStep = null or 
       transitionStep.ownedFeature.size() &lt; 2 or
       not transitionStep.ownedFeature->at(2).oclIsKindOf(Step) 
    then Set{}
    else Set{transitionStep.ownedFeature->at(2).oclAsType(Step)}
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="1a2a1d5d-5974-4a70-82bd-de92fcde8f99" name="deriveSuccessionEffectStep" visibility="public" constrainedElement="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae">
          <ownedComment xmi:id="3e73171a-a23a-462a-bfe3-48becb9e59e0" annotatedElement="1a2a1d5d-5974-4a70-82bd-de92fcde8f99">
            <body>&lt;p>The &lt;code>effectStep&lt;/code> of a &lt;code>Succession&lt;/code> is the fourth &lt;code>ownedFeature&lt;/code> of its &lt;code>transitionStep&lt;/code>, which must be a &lt;code>Step&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="3812c9f5-6fb2-4553-95d7-0cdd2ccb8a6a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>effectStep =
    if transitionStep = null or 
       transitionStep.ownedFeature.size() &lt; 4 or
       not transitionStep.ownedFeature->at(4).oclIsKindOf(Step) 
    then Set{}
    else Set{transitionStep.ownedFeature->at(4).oclAsType(Step)}
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="1ba06bda-38e9-4380-8015-c956a729610a" name="deriveSuccessionGuardExpression" visibility="public" constrainedElement="1c11fcd6-7d2e-4326-8913-6b6ad5e1f4ae">
          <ownedComment xmi:id="7a0abbab-0b47-4ce1-af62-945e62155fb3" annotatedElement="1ba06bda-38e9-4380-8015-c956a729610a">
            <body>&lt;p>The &lt;code>guardExpression&lt;/code> of a &lt;code>Succession&lt;/code> is the third &lt;code>ownedFeature&lt;/code> of its &lt;code>transitionStep&lt;/code>, which must be an &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="1725785a-5edd-4576-9b9a-aeec06789ae9" name="" visibility="public">
            <language>OCL2.0</language>
            <body>guardExpression =
    if transitionStep = null or 
       transitionStep.ownedFeature.size() &lt; 3 or
       not transitionStep.ownedFeature->at(3).oclIsKindOf(Expression) 
    then Set{}
    else Set{transitionStep.ownedFeature->at(3).oclAsType(Expression)}
    endif</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="5f282133-5ead-4970-bef9-f90ade5190a8" general="f9615571-b95b-49e4-a007-0ce847e62696"/>
        <ownedAttribute xmi:id="e338aa69-6d9d-4159-8de9-a46e3ab98cfd" name="transitionStep" visibility="public" type="c81e263a-340a-4264-b5a9-ee441741919d" isDerived="true" association="b336a12d-4f9f-4810-b317-849195e84bf6">
          <ownedComment xmi:id="c84fa0f7-4cc4-476f-8d1f-c3348ca27b1d" annotatedElement="e338aa69-6d9d-4159-8de9-a46e3ab98cfd">
            <body>&lt;p>A &lt;code>Step&lt;/code> that is typed by the &lt;code>Behavior&lt;/code> &lt;code>&lt;em>TransitionPerformances::TransitionPerformance&lt;/em>&lt;/code> (from the Kernel Semantic Library) that has this &lt;code>Succession&lt;/code> as its &lt;em>&lt;code>transitionLink&lt;/code>&lt;/em>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="58b71df3-43c2-4c36-b3b5-a5afeae936d9" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e9b8aa23-64cb-4829-855c-a7842bd285f0" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b9cac2ff-307f-40d6-8340-901d3e2af1ca" name="triggerStep" visibility="public" type="c81e263a-340a-4264-b5a9-ee441741919d" isDerived="true" association="081c2968-e1db-4ecb-9f1c-78145f96bf55">
          <ownedComment xmi:id="958c150e-c138-4a00-a38f-e1c4fdb9b1cf" annotatedElement="b9cac2ff-307f-40d6-8340-901d3e2af1ca">
            <body>&lt;p>&lt;code>Steps&lt;/code> that map incoming events to the timing of occurrences of the &lt;code>transitionStep&lt;/code>. The values of &lt;code>triggerStep&lt;/code> subset the list of acceptable events to be received by a &lt;code>Behavior&lt;/code> or the object that performs it.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1fac5135-2c0d-4d59-9384-a5613f48141b" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8f739af6-b584-4706-9a1a-b25ab634b02a" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d65132c3-ec1f-4255-aece-84e82c352f74" name="effectStep" visibility="public" type="c81e263a-340a-4264-b5a9-ee441741919d" isDerived="true" association="d022c746-d106-4a5b-91cc-f0e1cac6b35e">
          <ownedComment xmi:id="4e386c35-a202-499a-8aec-1de36c295dd2" annotatedElement="d65132c3-ec1f-4255-aece-84e82c352f74">
            <body>&lt;p>&lt;code>Steps&lt;/code> that represent occurrences that are side effects of the &lt;code>transitionStep&lt;/code> occurring.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="51411523-edca-4c37-a57a-595b3f7bb3ad" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9f8e9d7f-f155-4508-99ed-8af9d167739a" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="e92a9775-4ff0-42f9-b08e-72d5dcc5935d" name="guardExpression" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isDerived="true" association="17deb6bd-e808-49ca-abdd-c4520e35565a">
          <ownedComment xmi:id="c6027d7b-9043-4227-bb0f-e756688eb01c" annotatedElement="e92a9775-4ff0-42f9-b08e-72d5dcc5935d">
            <body>&lt;p>&lt;code>Expressions&lt;/code> that must evaluate to true before the &lt;code>transitionStep&lt;/code> can occur.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0b30812a-06ec-4998-acca-a3c05d3d3dc5" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="298c39d0-94a5-4dba-aabb-654a9fb7a131" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="61afcf9d-3b14-45a3-9830-6cc559a26ed9" name="A_sourceFeature_sourceConnector" visibility="public" memberEnd="0cad7969-0d12-4a35-8473-1b1da503eaf0 7f6eeaf4-e8f9-418b-af5f-be6f0753282a">
        <ownedEnd xmi:id="7f6eeaf4-e8f9-418b-af5f-be6f0753282a" name="sourceConnector" visibility="public" type="f9615571-b95b-49e4-a007-0ce847e62696" isDerived="true" subsettedProperty="0e5b990d-53a4-475f-b529-ffac0d186b65 fd194ed0-9544-4215-b3df-64c5423ec874" association="61afcf9d-3b14-45a3-9830-6cc559a26ed9">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d71d8410-cb44-4450-a2ba-ebbb2f0f22b2" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b521edff-73e7-44d4-b9d8-efd1ea09dbde" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="0071b39b-fec6-40b7-9d58-b06b6ec51fbd" name="A_targetFeature_targetConnector" visibility="public" memberEnd="fc72dff0-56b8-4406-9d40-1bd319e54ce1 9ec41b4d-0224-4ee0-9c5d-25ae4fe1e0dd">
        <ownedEnd xmi:id="9ec41b4d-0224-4ee0-9c5d-25ae4fe1e0dd" name="targetConnector" visibility="public" type="f9615571-b95b-49e4-a007-0ce847e62696" isDerived="true" subsettedProperty="ba7252a1-ad71-4f1b-9661-e020d460abd2 0e5b990d-53a4-475f-b529-ffac0d186b65" association="0071b39b-fec6-40b7-9d58-b06b6ec51fbd">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d2103ab9-2d24-4427-8a40-d39a627cd659" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="674441b3-0f15-4b07-980a-583dbeab7bcf" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="9f3299bd-744f-4f6c-b5c3-e5598c7923eb" name="Associations" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="a881acfb-03dd-4f48-b6e1-5c89a7e30c47" name="A_relatedType_association" visibility="public" memberEnd="b578f2b2-1cc1-4ee3-b10e-0fb07bf7f558 a69d9857-83c5-46f3-b1f3-16c62aeb6fd0">
        <ownedEnd xmi:id="a69d9857-83c5-46f3-b1f3-16c62aeb6fd0" name="association" visibility="public" type="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" isDerived="true" subsettedProperty="3e98010e-1179-4758-8c95-8354c83f7fea" association="a881acfb-03dd-4f48-b6e1-5c89a7e30c47">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b9b3fca9-3e80-420b-9a97-ddf9923256c8" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="3618c9c3-0273-4224-b465-5d86aacc0804" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="2c80fb85-a6ca-44ef-829f-73eb766f6ee7" name="A_associationEnd_associationWithEnd" visibility="public" memberEnd="cb5ec957-dd8f-4ab9-b1ae-7768db7bcb93 0dc2e50f-eae6-4ad8-a59b-d097d15ecb7c">
        <ownedEnd xmi:id="0dc2e50f-eae6-4ad8-a59b-d097d15ecb7c" name="associationWithEnd" visibility="public" type="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" isDerived="true" subsettedProperty="f685dfe3-4bd5-4bd3-a995-151ae1143ba7" association="2c80fb85-a6ca-44ef-829f-73eb766f6ee7">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cd2af68a-b4d6-4335-8e4e-50052d5ee4d1" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="41e836ec-6074-4720-ac2c-5579dd7c1c0a" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" name="Association" visibility="public">
        <ownedComment xmi:id="8113ff9a-5932-47c5-9ba3-8af3b50a7ef2" annotatedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <body>&lt;p>An &lt;code>Association&lt;/code> is a &lt;code>Relationship&lt;/code> and a &lt;code>Classifier&lt;/code> to enable classification of links between things (in the universe). The co-domains (&lt;code>types&lt;/code>) of the &lt;code>associationEnd&lt;/code> &lt;code>Features&lt;/code> are the &lt;code>relatedTypes&lt;/code>, as co-domain and participants (linked things) of an &lt;code>Association&lt;/code> identify each other.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="e2ed3d54-bdee-4bcb-9ce3-25b997d61c51" name="deriveAssociationRelatedType" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="8d2c1d9a-1421-45b8-9c14-4ca96b0d6baa" annotatedElement="e2ed3d54-bdee-4bcb-9ce3-25b997d61c51">
            <body>&lt;p>The &lt;code>relatedTypes&lt;/code> of an &lt;code>Association&lt;/code> are the &lt;code>types&lt;/code> of its &lt;code>associationEnds&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d77b9514-2477-46ef-97c8-58f7e77aead5" name="" visibility="public">
            <language>OCL2.0</language>
            <body>relatedType = associationEnd.type</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="0878c82e-594f-4f6a-aa1f-06be14d13c7c" name="checkAssociationSpecialization" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="6e2e345b-424c-4969-a200-f71d4c0301bb" annotatedElement="0878c82e-594f-4f6a-aa1f-06be14d13c7c">
            <body>&lt;p>An &lt;code>Association&lt;/code> must directly or indirectly specialize the base &lt;code>Association&lt;/code> &lt;code>&lt;em>Links::Link&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f9b44278-224f-4184-8392-f4f99e723818" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Links::Link')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="fb5d51d7-c00d-43f0-a1d2-f03c52a7b6bc" name="validateAssociationStructureIntersection" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="bb9da6ca-5d49-46c9-b989-290c822fcf0d" annotatedElement="fb5d51d7-c00d-43f0-a1d2-f03c52a7b6bc">
            <body>&lt;p>If an &lt;code>Association&lt;/code> is also a kind of &lt;code>Structure&lt;/code>, then it must be an &lt;code>AssociationStructure&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a6bc1539-2e98-4880-ad00-17c4171feaa4" name="" visibility="public">
            <language>English</language>
            <body>oclIsKindOf(Structure) = oclIsKindOf(AssociationStructure)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="8f95ac25-6a0a-42bd-8e09-9fe443aff624" name="checkAssociationBinarySpecialization" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="73b5f305-57e4-48be-a73c-9615efe0aa47" annotatedElement="8f95ac25-6a0a-42bd-8e09-9fe443aff624">
            <body>&lt;p>A binary &lt;code>Association&lt;/code> must directly or indirectly specialize the base &lt;code>Association&lt;/code> &lt;code>&lt;em>Links::binaryLink&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d45cf14b-0eab-419c-865f-49e9a8d116ab" name="" visibility="public">
            <language>OCL2.0</language>
            <body>associationEnd->size() = 2 implies
    specializesFromLibrary('Links::BinaryLink')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="c6a4e12a-6367-4334-8164-03ec4dc29770" name="validateAssociationRelatedTypes" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="5a0a0648-1776-4a6a-b3d7-c69da252aa48" annotatedElement="c6a4e12a-6367-4334-8164-03ec4dc29770">
            <body>&lt;p>If an Association is concrete (not abstract), then it must have at least two &lt;code>relatedTypes&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f1340ba6-18cf-46ad-8304-709a695ab89b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>not isAbstract implies relatedType->size() >= 2</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="a74a58ef-26b1-49bb-af1f-716a0bafc2db" name="validateAssociationBinarySpecialization" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="c4315d5a-df9b-4ef2-afa0-feb9f349a0af" annotatedElement="a74a58ef-26b1-49bb-af1f-716a0bafc2db">
            <body>&lt;p>If an &lt;code>Association&lt;/code> has more than two &lt;code>associationEnds&lt;/code>, then it must &lt;em>not&lt;/em> specialize, directly or indirectly, the &lt;code>Association&lt;/code> &lt;em>&lt;code>BinaryLink&lt;/code>&lt;/em> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a674e1c3-1325-492e-9384-354c3e876621" name="" visibility="public">
            <language>OCL2.0</language>
            <body>associationEnds->size() > 2 implies
    not specializesFromLibrary('Links::BinaryLink')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="8d2e2ccd-d831-4aaf-8d1f-03efa3d17178" name="deriveAssociationSourceType" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <ownedComment xmi:id="8c23b326-6bcf-4958-a023-2570e91a5917" annotatedElement="8d2e2ccd-d831-4aaf-8d1f-03efa3d17178">
            <body>&lt;p>The &lt;code>sourceType&lt;/code> of an &lt;code>Association&lt;/code> is its first &lt;code>relatedType&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="04a9a45f-675a-42d5-9368-da012edbcc93" name="" visibility="public">
            <language>OCL2.0</language>
            <body>sourceType =
    if relatedType->isEmpty() then null
    else relatedType->first() endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="052d273e-435a-41a2-8226-eee498876121" name="deriveAssociationTargetType" visibility="public" constrainedElement="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="3ab1b350-c90f-4bc1-b501-a3e72cac1c7f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>targetType =
    if relatedType->size() &lt; 2 then OrderedSet{}
    else 
        relatedType->
            subSequence(2, relatedType->size())->
            asOrderedSet() 
    endif</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="74ff8971-e81b-4f83-bd4d-843385d351e3" general="d0a45a28-7af9-4bb2-9fc9-ac3e79928263"/>
        <generalization xmi:id="27c753e4-fdcb-4a00-9ea5-16667bd5203f" general="f797201d-5a0b-4acf-a63d-c4cf276073d6"/>
        <ownedAttribute xmi:id="b578f2b2-1cc1-4ee3-b10e-0fb07bf7f558" name="relatedType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isOrdered="true" isUnique="false" isDerived="true" redefinedProperty="0d55f45c-0032-4618-9131-61ed58c3b8e2" association="a881acfb-03dd-4f48-b6e1-5c89a7e30c47">
          <ownedComment xmi:id="fa62b315-771b-4034-9a7e-695243ff6a8e" annotatedElement="b578f2b2-1cc1-4ee3-b10e-0fb07bf7f558">
            <body>&lt;p>The &lt;code>types&lt;/code> of the &lt;code>associationEnds&lt;/code> of the &lt;code>Association&lt;/code>, which are the &lt;code>relatedElements&lt;/code> of the &lt;code>Association&lt;/code> considered as a &lt;code>Relationship&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1e06a20c-d2ad-489e-aad7-26b5e5f939ae" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="60d4c0b9-536a-4bd9-850d-7d461bd46269" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d770302d-1f5d-445b-88a4-3029c2c09e83" name="sourceType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" redefinedProperty="cd83f43d-3885-4b41-8f03-f02255e6a5da" subsettedProperty="b578f2b2-1cc1-4ee3-b10e-0fb07bf7f558" association="e7ec0268-a421-49f7-a69d-a33473d8b1ef">
          <ownedComment xmi:id="02a014b5-b8ef-4a26-a202-ad828426eb77" annotatedElement="d770302d-1f5d-445b-88a4-3029c2c09e83">
            <body>&lt;p>The source &lt;code>relatedType&lt;/code> for this &lt;code>Association&lt;/code>. It is the first &lt;code>relatedType&lt;/code> of the &lt;code>Association&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="09359269-45c9-430c-9a00-57bbbde51a8a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d262e447-7b32-4ba8-bc38-d04f71d3722c" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b3337e06-c4a1-4c51-8d4a-f1c9b503ca4a" name="targetType" visibility="public" type="a32ae34b-57c2-4f49-832c-00f8741d55e7" isDerived="true" redefinedProperty="4c7374f5-78f8-42ab-ae42-672ad9c80902" subsettedProperty="b578f2b2-1cc1-4ee3-b10e-0fb07bf7f558" association="71ac5ce5-588d-4182-a7ff-f2717f245c85">
          <ownedComment xmi:id="30296067-957a-4df0-8893-e99132e2b844" annotatedElement="b3337e06-c4a1-4c51-8d4a-f1c9b503ca4a">
            <body>&lt;p>The target &lt;code>relatedTypes&lt;/code> for this &lt;code>Association&lt;/code>. This includes all the &lt;code>relatedTypes&lt;/code> other than the &lt;code>sourceType&lt;/code>.&lt;/p> 
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5b32b9af-f5b1-4f1c-ac31-f6d125d42b5a" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2d716a9d-3195-4aa8-908d-6ee6b2c32e47" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="cb5ec957-dd8f-4ab9-b1ae-7768db7bcb93" name="associationEnd" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" redefinedProperty="5979d447-4d72-4ffb-a569-ddbe6aacc8dd" association="2c80fb85-a6ca-44ef-829f-73eb766f6ee7">
          <ownedComment xmi:id="339d71bc-d8a5-4826-b002-973432d60b30" annotatedElement="cb5ec957-dd8f-4ab9-b1ae-7768db7bcb93">
            <body>&lt;p>The &lt;code>features&lt;/code> of the &lt;code>Association&lt;/code> that identify the things that can be related by it. A concrete &lt;code>Association&lt;/code> must have at least two &lt;code>associationEnds&lt;/code>. When it has exactly two, the &lt;code>Association&lt;/code> is called a &lt;em>binary&lt;/em> &lt;code>Association&lt;/code>.&lt;/p> 
</body>
          </ownedComment>
          <ownedComment xmi:id="946bcc98-27e0-4c98-b49d-efafaccd5219" annotatedElement="cb5ec957-dd8f-4ab9-b1ae-7768db7bcb93">
            <body>&lt;p>The ends of the Association determine which elements are eligible to be related by instances of the Association.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="54325947-66ec-43a2-b182-f532e1b3e4b9" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ecb018b1-e560-42da-a0e8-4cbb5e502053" name="" visibility="public" value="*"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="71ac5ce5-588d-4182-a7ff-f2717f245c85" name="A_targetType_targetAssociation" visibility="public" memberEnd="b3337e06-c4a1-4c51-8d4a-f1c9b503ca4a 31331448-8d54-4003-b751-dfd3c02bb6bf">
        <ownedEnd xmi:id="31331448-8d54-4003-b751-dfd3c02bb6bf" name="targetAssociation" visibility="public" type="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" isDerived="true" subsettedProperty="31331448-8d54-4003-b751-dfd3c02bb6bf a69d9857-83c5-46f3-b1f3-16c62aeb6fd0" association="71ac5ce5-588d-4182-a7ff-f2717f245c85">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e31bc9d3-3ddb-43f1-af86-cb6aae7c3d61" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e95ea3da-fd72-4b8c-8492-6029055e4d5a" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="e7ec0268-a421-49f7-a69d-a33473d8b1ef" name="A_sourceType_sourceAssociation" visibility="public" memberEnd="d770302d-1f5d-445b-88a4-3029c2c09e83 8d6eafb0-adba-4ca1-9436-a4dda0a0c465">
        <ownedEnd xmi:id="8d6eafb0-adba-4ca1-9436-a4dda0a0c465" name="sourceAssociation" visibility="public" type="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7" isDerived="true" subsettedProperty="a69d9857-83c5-46f3-b1f3-16c62aeb6fd0 fd194ed0-9544-4215-b3df-64c5423ec874" association="e7ec0268-a421-49f7-a69d-a33473d8b1ef">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="670bc1bf-f1c5-4c58-ba04-74a9745dbc9c" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="5f0abe4c-5bad-43f9-9a02-b6383bbe95d2" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="003869f1-ba90-4044-9411-0d7ba034d411" name="AssociationStructure" visibility="public">
        <ownedComment xmi:id="9e255389-db78-4052-a98e-fba0b41059f1" annotatedElement="003869f1-ba90-4044-9411-0d7ba034d411">
          <body>&lt;p>An &lt;code>AssociationStructure&lt;/code> is an &lt;code>Association&lt;/code> that is also a &lt;code>Structure&lt;/code>, classifying link objects that are both links and objects. As objects, link objects can be created and destroyed, and their non-end &lt;code>Features&lt;/code> can change over time. However, the values of the end &lt;code>Features&lt;/code> of a link object are fixed and cannot change over its lifetime.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="0fb69085-9b81-403a-8116-ab869afd21f5" name="checkAssociationStructureSpecialization" visibility="public" constrainedElement="003869f1-ba90-4044-9411-0d7ba034d411">
          <ownedComment xmi:id="df1c406d-2835-4b8a-b831-790e26682ebb" annotatedElement="0fb69085-9b81-403a-8116-ab869afd21f5">
            <body>&lt;p>An &lt;code>AssociationStructure&lt;/code> must directly or indirectly specialize the base &lt;code>AssociationStructure&lt;/code> &lt;code>&lt;em>Objects::LinkObject&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="efaf809e-2501-460c-a227-e54514bebffd" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Objects::LinkObject')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="643937d7-a3cb-42ae-8bdf-4e460c2fba64" name="checkAssociationStructureBinarySpecialization" visibility="public" constrainedElement="003869f1-ba90-4044-9411-0d7ba034d411">
          <ownedComment xmi:id="8b0116ec-9c36-47f9-9bed-4ea1bceddc76" annotatedElement="643937d7-a3cb-42ae-8bdf-4e460c2fba64">
            <body>&lt;p>A binary &lt;code>AssociationStructure&lt;/code> must directly or indirectly specialize the base &lt;code>AssociationStructure&lt;/code> &lt;code>&lt;em>Objects::BinaryLinkObject&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="7a7a4d66-8740-45e5-8724-b214dc67fbbb" name="" visibility="public">
            <language>OCL2.0</language>
            <body>endFeature->size() = 2 implies
    specializesFromLibrary('Objects::BinaryLinkObject')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="a062c8f3-454d-40e7-853f-161ad497c8dd" general="6da69e09-f5e9-41b7-b976-5666a81d074d"/>
        <generalization xmi:id="b445add1-7cb1-44c4-a960-9fbe1b5a7b73" general="1a2a531c-fd17-4ba3-a2a3-64198a4dcaa7"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="39cecaaf-825c-4c4e-9426-287cf1b9eeb8" name="DataTypes" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="879fe788-d4f7-4837-b0e0-757b2bc3da30" name="DataType" visibility="public">
        <ownedComment xmi:id="bb044cba-1e73-43d5-a083-04d6c3e5a186" annotatedElement="879fe788-d4f7-4837-b0e0-757b2bc3da30">
          <body>&lt;p>A &lt;code>DataType&lt;/code> is a &lt;code>Classifier&lt;/code> of things (in the universe) that can only be distinguished by how they are related to other things (via Features). This means multiple things classified by the same &lt;code>DataType&lt;/code>&lt;/p>

&lt;ul>
	&lt;li>Cannot be distinguished when they are related to other things in exactly the same way, even when they are intended to be about different things.&lt;/li>
	&lt;li>Can be distinguished when they are related to other things in different ways, even when they are intended to be about the same thing.&lt;/li>
&lt;/ul>
</body>
        </ownedComment>
        <ownedRule xmi:id="fe155f45-e24a-4753-bb90-2c77806453e7" name="checkDataTypeSpecialization" visibility="public" constrainedElement="879fe788-d4f7-4837-b0e0-757b2bc3da30">
          <ownedComment xmi:id="9cfa7a27-7686-40a7-adc5-fe10bbf51dee" annotatedElement="fe155f45-e24a-4753-bb90-2c77806453e7">
            <body>&lt;p>A &lt;code>DataType&lt;/code> must directly or indirectly specialize the base &lt;code>DataType&lt;/code> &lt;code>&lt;em>Base::DataValue&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="36de6a7b-d91c-47a3-a6e1-a2238ad3d52d" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Base::DataValue')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="b0116b26-aa7d-4b09-a398-70556018aae5" name="validateDataTypeSpecialization" visibility="public" constrainedElement="879fe788-d4f7-4837-b0e0-757b2bc3da30">
          <ownedComment xmi:id="d8ccc3ba-4727-4481-a85a-8004a464e8c2" annotatedElement="b0116b26-aa7d-4b09-a398-70556018aae5">
            <body>&lt;p>A &lt;code>DataType&lt;/code> must not specialize a &lt;code>Class&lt;/code> or an &lt;code>Association&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cbaaff03-737f-4bae-b6e2-e318f319a920" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSpecialization.general->
    forAll(not oclIsKindOf(Class) and 
           not oclIsKindOf(Association))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="52f43e2a-3b05-4f6b-999a-c901251b61cc" general="d0a45a28-7af9-4bb2-9fc9-ac3e79928263"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="3d10d4bf-9817-4f32-9837-c4b8a2df0c82" name="FeatureValues" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="56ee4632-c7fd-4f57-b6b4-897f7b9dd712" name="FeatureValue" visibility="public">
        <ownedComment xmi:id="85e68226-abff-494d-81a8-0eeb7d6190f3" annotatedElement="56ee4632-c7fd-4f57-b6b4-897f7b9dd712">
          <body>&lt;p>A &lt;code>FeatureValue&lt;/code> is a &lt;code>Membership&lt;/code> that identifies a particular member &lt;code>Expression&lt;/code> that provides the value of the &lt;code>Feature&lt;/code> that owns the &lt;code>FeatureValue&lt;/code>. The value is specified as either a bound value or an initial value, and as either a concrete or default value. A &lt;code>Feature&lt;/code> can have at most one &lt;code>FeatureValue&lt;/code>.&lt;/p>

&lt;p>The result of the &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> is bound to the &lt;code>featureWithValue&lt;/code> using a &lt;code>BindingConnector&lt;/code>. If &lt;code>isInitial = false&lt;/code>, then the &lt;code>featuringType&lt;/code> of the &lt;code>BindingConnector&lt;/code> is the same as the &lt;code>featuringType&lt;/code> of the &lt;code>featureWithValue&lt;/code>. If &lt;code>isInitial = true&lt;/code>, then the &lt;code>featuringType&lt;/code> of the &lt;code>BindingConnector&lt;/code> is restricted to its &lt;code>startShot&lt;/code>.

&lt;p>If &lt;code>isDefault = false&lt;/code>, then the above semantics of the &lt;code>FeatureValue&lt;/code> are realized for the given &lt;code>featureWithValue&lt;/code>. Otherwise, the semantics are realized for any individual of the &lt;code>featuringType&lt;/code> of the &lt;code>featureWithValue&lt;/code>, unless another value is explicitly given for the &lt;code>featureWithValue&lt;/code> for that individual.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="d4d1db92-9435-449e-9d75-ffe060fdb53d" name="checkFeatureValueBindingConnector" visibility="public" constrainedElement="56ee4632-c7fd-4f57-b6b4-897f7b9dd712">
          <ownedComment xmi:id="78478ec1-c365-4b5a-b475-6d29a4554626" annotatedElement="d4d1db92-9435-449e-9d75-ffe060fdb53d">
            <body>&lt;p>If &lt;code>isDefault = false&lt;/code>, then the &lt;code>featureWithValue&lt;/code> must have an &lt;code>ownedMember&lt;/code> that is a &lt;code>BindingConnector&lt;/code> whose &lt;code>relatedElements&lt;/code> are the &lt;code>featureWithValue&lt;/code> and the &lt;code>result&lt;/code> of the &lt;code>value&lt;/code> &lt;code>Expression&lt;/code>. If &lt;code>isInitial = false&lt;/code>, then this &lt;code>BindingConnector&lt;/code> must have &lt;code>featuringTypes&lt;/code> that are the same as those of the &lt;code>featureWithValue&lt;/code>. If &lt;code>isInitial = true&lt;/code>, then the &lt;code>BindingConnector&lt;/code> must have &lt;code>&lt;em>that.startShot&lt;/em>&lt;code> as its &lt;code>featuringType&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="610edd14-f268-45e5-b9fa-6fe93e7f7485" name="" visibility="public">
            <language>OCL2.0</language>
            <body>not isDefault implies
    featureWithValue.ownedMember->
        selectByKind(BindingConnector)->exists(b |
            b.relatedFeature->includes(featureWithValue) and
            b.relatedFeature->includes(value.result) and
            if not isInitial then 
                b.featuringType = featureWithValue.featuringType
            else 
                b.featuringType->exists(t |
                    t.oclIsKindOf(Feature) and
                    t.oclAsType(Feature).chainingFeature =
                        Sequence{
                            resolveGlobal('Base::things::that').
                                memberElement,
                            resolveGlobal('Occurrences::Occurrence::startShot').
                                memberElement
                        }
                )
            endif)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="156b8c7e-c74e-4f87-8409-6776afd2fb58" name="validateFeatureValueOverriding" visibility="public" constrainedElement="56ee4632-c7fd-4f57-b6b4-897f7b9dd712">
          <ownedComment xmi:id="fb28ae21-a010-411f-8031-d9e69e9f970f" annotatedElement="156b8c7e-c74e-4f87-8409-6776afd2fb58">
            <body>&lt;p>All &lt;code>Features&lt;/code> directly or indirectly redefined by the &lt;code>featureWithValue&lt;/code> of a &lt;code>FeatureValue&lt;/code> must have only default &lt;code>FeatureValues&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cd6643f4-50d1-42ee-bdc8-b92611143ea5" name="" visibility="public">
            <language>OCL2.0</language>
            <body>featureWithValue.redefinition.redefinedFeature->
    closure(redefinition.redefinedFeature).valuation->
    forAll(isDefault)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="9a2a25bf-504a-4308-83dc-51ec37da8b47" general="0ac69c8b-1bab-45e9-82df-d840307444f7"/>
        <ownedAttribute xmi:id="f8d0aa12-273f-4fbb-ab50-efd089908555" name="featureWithValue" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="67aded9a-ae8a-4191-8053-2df04cce9c8c" association="832cd341-d4a6-4a78-b497-50eeb5a1fbcb">
          <ownedComment xmi:id="b2598587-9f90-4724-8891-f7241d6ac73b" annotatedElement="f8d0aa12-273f-4fbb-ab50-efd089908555">
            <body>&lt;p>The &lt;code>Feature&lt;/code> to be provided a value.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="2797b789-bca6-48c3-b967-e91db393e76b" annotatedElement="f8d0aa12-273f-4fbb-ab50-efd089908555">
            <body>&lt;p>The Feature to be provided a value.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="03dde50a-65f9-4ba1-a1e5-a3ab0d37233e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2e9bc3f2-2f43-44c4-a9ec-916975e5a1f2" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="b95fb21e-86ca-41e0-8297-af75480ea849" name="value" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" aggregation="composite" isDerived="true" redefinedProperty="c23da327-2bed-4f05-9fa2-9749097c6eca" association="f2a6515a-ab1d-4a92-9926-45f46fd56254">
          <ownedComment xmi:id="c8b3e2ac-62b7-4b9a-99e1-19977c2dba7b" annotatedElement="b95fb21e-86ca-41e0-8297-af75480ea849">
            <body>&lt;p>The &lt;code>Expression&lt;/code> that provides the value of the &lt;code>featureWithValue&lt;/code> as its &lt;code>result&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="b9693fcd-d895-4a3d-b454-614854d9419c" annotatedElement="b95fb21e-86ca-41e0-8297-af75480ea849">
            <body>&lt;p>The Expression that provides the value as a result.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1c56646a-1761-46a7-9c9b-ea12d7b3378e" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8aa1aa1d-551c-41a4-8c8d-89ff652cd54c" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="5b913b24-a8c1-4b00-8af1-1d87bc5bb67c" name="isInitial" visibility="public">
          <ownedComment xmi:id="0e2b4ded-b7a8-420f-b231-821f94fc368b" annotatedElement="5b913b24-a8c1-4b00-8af1-1d87bc5bb67c">
            <body>&lt;p>Whether this &lt;code>FeatureValue&lt;/code> specifies a bound value or an initial value for the &lt;code>featureWithValue&lt;/code>.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="6188ceb0-0523-4a75-82b3-2a05b970a8df" name="" visibility="public"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="15505862-8264-4ecd-a907-c6646e788f34" name="isDefault" visibility="public">
          <ownedComment xmi:id="3c08d8ea-74f1-4288-8659-521ed1ec71df" annotatedElement="15505862-8264-4ecd-a907-c6646e788f34">
            <body>&lt;p>Whether this &lt;code>FeatureValue&lt;/code> is a concrete specification of the bound or initial value of the &lt;code>featureWithValue&lt;/code>, or just a default value that may be overridden.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="4e219dfa-bf77-4bea-82b2-9a2d7046dfd2" name="" visibility="public"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="f2a6515a-ab1d-4a92-9926-45f46fd56254" name="A_value_expressedValuation" visibility="public" memberEnd="b95fb21e-86ca-41e0-8297-af75480ea849 1917a5d2-b459-4116-8dd7-907251da5ec4">
        <ownedEnd xmi:id="1917a5d2-b459-4116-8dd7-907251da5ec4" name="expressedValuation" visibility="public" type="56ee4632-c7fd-4f57-b6b4-897f7b9dd712" isDerived="true" subsettedProperty="8763ebb8-6a3d-45b3-b628-966dc39fbb40" association="f2a6515a-ab1d-4a92-9926-45f46fd56254">
          <ownedComment xmi:id="bb1d9845-5017-487f-ba01-e35f00d6e6ff" annotatedElement="1917a5d2-b459-4116-8dd7-907251da5ec4">
            <body>&lt;p>The FeatureValue that owns the &lt;code>value&lt;/code> Expression.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="09cc6b89-4d40-4254-99f1-f37596607305" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="c867c074-d5a6-4c5f-944b-131a46ab038e" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="832cd341-d4a6-4a78-b497-50eeb5a1fbcb" name="A_featureWithValue_valuation" visibility="public" memberEnd="f8d0aa12-273f-4fbb-ab50-efd089908555 7b0012ca-b39a-4dd1-acb2-06d09be7386d">
        <ownedEnd xmi:id="7b0012ca-b39a-4dd1-acb2-06d09be7386d" name="valuation" visibility="public" type="56ee4632-c7fd-4f57-b6b4-897f7b9dd712" isDerived="true" subsettedProperty="fad0c25d-2a44-4e7a-9b06-bae16320cb4e" association="832cd341-d4a6-4a78-b497-50eeb5a1fbcb">
          <ownedComment xmi:id="c2857fef-7eaf-4e96-aa1e-d3a9c1f36d9e" annotatedElement="7b0012ca-b39a-4dd1-acb2-06d09be7386d">
            <body>&lt;p>The (at most one) &lt;code>ownedMembership&lt;/code> of this Feature that is the FeatureValue that provides the value of the Feature.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1ae3d230-2d87-4931-966f-af85b331761e" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="6dde6a4c-18cd-4250-aacb-f89f2e5bbe06" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="cd713a14-67c6-4382-9c65-a7a0eb121097" name="Multiplicities" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="6499a781-42d6-4089-9a32-a2b743822f7d" name="A_bound_multiplicity" visibility="public" memberEnd="4bb7d4c4-1d9d-430e-b800-742937b52136 74961bfa-489d-40f3-8790-7ecda134549f">
        <ownedEnd xmi:id="74961bfa-489d-40f3-8790-7ecda134549f" name="multiplicity" visibility="public" type="75a83cbe-61f8-4c24-9197-d56a3b7a75ae" isDerived="true" subsettedProperty="2a12de05-aa4b-4bc9-8eae-467829b67416" association="6499a781-42d6-4089-9a32-a2b743822f7d">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a293ecf6-5dec-4ed4-99ed-31e18dc33099" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e54d71b3-faaa-478a-8137-bdfd960f220e" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="06775b0c-0b61-4d47-8af2-8962a4fc0640" name="A_lowerBound_multiplicity" visibility="public" memberEnd="970548a2-16ef-4558-989c-57ae2e224b0b 7d47fdcb-e6b6-4d95-a450-cdadc8c34004">
        <ownedEnd xmi:id="7d47fdcb-e6b6-4d95-a450-cdadc8c34004" name="multiplicity" visibility="public" type="75a83cbe-61f8-4c24-9197-d56a3b7a75ae" isDerived="true" subsettedProperty="74961bfa-489d-40f3-8790-7ecda134549f" association="06775b0c-0b61-4d47-8af2-8962a4fc0640">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="1a70628c-d159-40f1-8781-1e5d18af46b9" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="400d2785-6e99-4750-aaab-bbb1c645bdfc" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="e817b1a0-2401-413e-80cf-43ecdccc6a86" name="A_upperBound_multiplicity" visibility="public" memberEnd="d447f313-c541-45cd-8171-668f747036dc e667aba0-32f2-47a6-bfa6-e05ff725975a">
        <ownedEnd xmi:id="e667aba0-32f2-47a6-bfa6-e05ff725975a" name="multiplicity" visibility="public" type="75a83cbe-61f8-4c24-9197-d56a3b7a75ae" isDerived="true" subsettedProperty="74961bfa-489d-40f3-8790-7ecda134549f" association="e817b1a0-2401-413e-80cf-43ecdccc6a86">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4b566983-b976-4d87-8c8d-ab804c0b773d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="df0dad5b-4247-4dad-878e-ac136477ca27" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="75a83cbe-61f8-4c24-9197-d56a3b7a75ae" name="MultiplicityRange" visibility="public">
        <ownedComment xmi:id="45a7fc4e-95a9-4d2d-a424-a34bc7bb1879" annotatedElement="75a83cbe-61f8-4c24-9197-d56a3b7a75ae">
          <body>&lt;p>A &lt;code>MultiplicityRange&lt;/code> is a &lt;code>Multiplicity&lt;/code> whose value is defined to be the (inclusive) range of natural numbers given by the result of a &lt;code>lowerBound&lt;/code> &lt;code>Expression&lt;/code> and the result of an &lt;code>upperBound&lt;/code> &lt;code>Expression&lt;/code>. The result of these &lt;code>Expressions&lt;/code> shall be of type &lt;code>&lt;em>Natural&lt;/em>&lt;/code>. If the result of the &lt;code>upperBound&lt;/code> &lt;code>Expression&lt;/code> is the unbounded value &lt;code>*&lt;/code>, then the specified range includes all natural numbers greater than or equal to the &lt;code>lowerBound&lt;/code> value. If no &lt;code>lowerBound&lt;/code> &lt;code>Expression&lt;/code>, then the default is that the lower bound has the same value as the upper bound, except if the &lt;code>upperBound&lt;/code> evaluates to &lt;code>*&lt;/code>, in which case the default for the lower bound is 0.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="b1515696-e202-4e29-abc9-6d48e23e5470" name="checkMultiplicityRangeExpressionTypeFeaturing" visibility="public" constrainedElement="75a83cbe-61f8-4c24-9197-d56a3b7a75ae">
          <ownedComment xmi:id="d7529187-292a-4d55-9ad8-d3508518671d" annotatedElement="b1515696-e202-4e29-abc9-6d48e23e5470">
            <body>&lt;p>The &lt;code>bounds&lt;/code> of a &lt;code>MultiplicityRange&lt;code> must have the same &lt;code>featuringTypes&lt;/code> as the &lt;code>MultiplicityRange&lt;code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="eacad3f7-9a19-4fd3-9fcd-3371cd2405a4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>bound->forAll(b | b.featuringType = self.featuringType)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="7ac5ebea-beba-43fb-8d2d-c09b9f658871" name="validateMultiplicityRangeBoundResultTypes" visibility="public" constrainedElement="75a83cbe-61f8-4c24-9197-d56a3b7a75ae">
          <ownedComment xmi:id="f77316f5-a59d-472c-9398-49a79f75c157" annotatedElement="7ac5ebea-beba-43fb-8d2d-c09b9f658871">
            <body>&lt;p>The &lt;code>results&lt;/code> of the &lt;code>bound&lt;/code> &lt;code>Expression(s)&lt;/code> of a &lt;code>MultiplicityRange&lt;/code> must be typed by &lt;code>&lt;em>ScalarValues::Intger&lt;/em>&lt;/code> from the Kernel Data Types Library. If a &lt;code>bound&lt;/code> is model-level evaluable, then it must evaluate to a non-negative value.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="0fd142ef-142b-42cc-a7e5-c7da2bf41343" name="" visibility="public">
            <language>OCL2.0</language>
            <body>bound->forAll(b |
    b.result.specializesFromLibrary('ScalarValues::Integer') and
    let value : UnlimitedNatural = valueOf(b) in
    value &lt;> null implies value >= 0
)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="2020a9df-0318-40ae-b9d1-ad74cfebfc3e" name="deriveMultiplicityRangeLowerBound" visibility="public" constrainedElement="75a83cbe-61f8-4c24-9197-d56a3b7a75ae">
          <ownedComment xmi:id="2a888784-e673-410e-bce8-bec0a20eaada" annotatedElement="2020a9df-0318-40ae-b9d1-ad74cfebfc3e">
            <body>&lt;p>If a &lt;code>MultiplicityRange&lt;/code> has two &lt;code>ownedMembers&lt;/code>, then the &lt;code>lowerBound&lt;/code> is the first &lt;code>ownedMember&lt;/code>, otherwise it is &lt;code>null&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="3efddcd7-f500-4fe8-992a-45a9973944b4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>lowerBound =
    let ownedMembers : Sequence(Element) = 
        ownedMembership->selectByKind(OwningMembership).ownedMember in
    if ownedMembers->size() &lt; 2 or 
        not ownedMembers->first().oclIsKindOf(Expression) then null
    else ownedMembers->first().oclAsType(Expression)
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="7840e142-28ad-4145-a071-cb8da0a118ff" name="deriveMultiplicityRangeUpperBound" visibility="public" constrainedElement="75a83cbe-61f8-4c24-9197-d56a3b7a75ae">
          <ownedComment xmi:id="971c8652-495e-4205-bd93-38b9b5e6ff38" annotatedElement="7840e142-28ad-4145-a071-cb8da0a118ff">
            <body>&lt;p>If a &lt;code>MultiplicityRange&lt;/code> has &lt;code>ownedMembers&lt;/code> when considered as a &lt;code>Feature&lt;/code>, then &lt;code>upperBound&lt;/code> is the last of those, which must be an &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="03839e4a-ebfd-4990-9caf-3974f8270133" name="" visibility="public">
            <language>OCL2.0</language>
            <body>upperBound =
    let ownedMembers : Sequence(Element) = 
        ownedMembership->selectByKind(OwningMembership).ownedMember in
    if ownedMembers->isEmpty() or 
       not ownedMembers->last().oclIsKindOf(Expression) 
    then null
    else ownedMembers->last().oclAsType(Expression)
    endif </body>
          </specification>
        </ownedRule>
        <generalization xmi:id="9a04507e-6744-4402-8a87-4d04ef887ea2" general="4628a1d9-ef9d-48c5-bbe7-18d432c51596"/>
        <ownedAttribute xmi:id="970548a2-16ef-4558-989c-57ae2e224b0b" name="lowerBound" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isDerived="true" subsettedProperty="4bb7d4c4-1d9d-430e-b800-742937b52136" association="06775b0c-0b61-4d47-8af2-8962a4fc0640">
          <ownedComment xmi:id="f195d9cb-53cd-446b-8cb7-d81ff50caae4" annotatedElement="970548a2-16ef-4558-989c-57ae2e224b0b">
            <body>&lt;p>The &lt;code>Expression&lt;/code> whose result provides the lower bound of the &lt;code>MultiplicityRange&lt;/code>. If no &lt;code>lowerBound&lt;/code> &lt;code>Expression&lt;/code> is given, then the lower bound shall have the same value as the upper bound, unless the upper bound is unbounded (&lt;code>*&lt;/code>), in which case the lower bound shall be 0.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f719af7e-20d0-41b6-8ce4-9bd58583aba6" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="7a3de29e-1f5c-4df3-bd69-5f4e2ad39c59" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="d447f313-c541-45cd-8171-668f747036dc" name="upperBound" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isDerived="true" subsettedProperty="4bb7d4c4-1d9d-430e-b800-742937b52136" association="e817b1a0-2401-413e-80cf-43ecdccc6a86">
          <ownedComment xmi:id="2bedfabd-6aa1-45c5-92e6-b8221f2839e3" annotatedElement="d447f313-c541-45cd-8171-668f747036dc">
            <body>The &lt;code>Expression&lt;/code> whose result is the upper bound of the &lt;code>MultiplicityRange&lt;/code>.</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="c30294f6-7483-40f4-aadf-ffadbe642c74" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="bf226b0e-2710-447c-ba42-3c08bb6557c1" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="4bb7d4c4-1d9d-430e-b800-742937b52136" name="bound" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isOrdered="true" isDerived="true" isDerivedUnion="true" redefinedProperty="e77d17fa-39f5-4493-b101-5630bea6df70" association="6499a781-42d6-4089-9a32-a2b743822f7d">
          <ownedComment xmi:id="7629abc1-8183-449c-835d-9104c84d3371" annotatedElement="4bb7d4c4-1d9d-430e-b800-742937b52136">
            <body>&lt;p>The owned &lt;code>Expressions&lt;/code> of the &lt;code>MultiplicityRange&lt;/code> whose results provide its bounds. These must be the only &lt;code>ownedMembers&lt;/code> of the &lt;code>MultiplicityRange&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="b74ea967-ae09-4ddf-8693-8728b1710e8c" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="21aae008-c47f-4657-bc76-703f2983ca17" name="" visibility="public" value="2"/>
        </ownedAttribute>
        <ownedOperation xmi:id="d3ff4abe-07db-41f7-87c8-a078a7e87a7c" name="hasBounds" visibility="public" bodyCondition="e2cee427-53a6-408d-b200-ccc356155d81">
          <ownedComment xmi:id="b3bf177d-68f1-47ae-b866-70b383d06a35" annotatedElement="d3ff4abe-07db-41f7-87c8-a078a7e87a7c">
            <body>&lt;p>Check whether this &lt;code>MultiplicityRange&lt;/code> represents the range bounded by the given values &lt;code>lower&lt;/code> and &lt;code>upper&lt;/code>, presuming the &lt;code>lowerBound&lt;/code> and &lt;code>upperBound&lt;/code> &lt;code>Expressions&lt;/code> are model-level evaluable.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="e2cee427-53a6-408d-b200-ccc356155d81" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="1bd7caba-b286-43f7-822c-8d1c8e4d4121" name="" visibility="public">
              <language>OCL2.0</language>
              <body>valueOf(upperBound) = upper and
let lowerValue: UnlimitedNatural = valueOf(lowerBound) in
(lowerValue = lower or
 lowerValue = null and 
    (lower = upper or 
     lower = 0 and upper = *))
 </body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="cf2e01c3-4575-438e-948f-4cd6ccbeb647" name="lower" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
          </ownedParameter>
          <ownedParameter xmi:id="cda0e56e-4b66-49ab-b7a0-3295c1932c19" name="upper" visibility="public">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
          </ownedParameter>
          <ownedParameter xmi:id="42a34299-e2cf-4027-a164-da5dd72086a7" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="e4c6e46f-0ce4-4acd-8149-d70450d24487" name="valueOf" visibility="public" bodyCondition="f8b87b1a-07a4-447b-8302-997074308a32">
          <ownedComment xmi:id="8ebef0c5-9126-4b06-9196-eabe6bd62306" annotatedElement="e4c6e46f-0ce4-4acd-8149-d70450d24487">
            <body>&lt;p>Evaluate the given &lt;code>bound&lt;/code> &lt;code>Expression&lt;/code> (at model level) and return the result represented as a MOF &lt;code>UnlimitedNatural&lt;/code> value.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="f8b87b1a-07a4-447b-8302-997074308a32" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="e728c78f-cf16-412a-a22f-436c446a823f" name="" visibility="public">
              <language>OCL2.0</language>
              <body>if bound = null or not bound.isModelLevelEvaluable then 
    null
else
    let boundEval: Sequence(Element) = bound.evaluate(owningType) in
    if boundEval->size() &lt;> 1 then null else
        let valueEval: Element = boundEval->at(1) in
        if valueEval.oclIsKindOf(LiteralInfinity) then *
        else if valueEval.oclIsKindOf(LiteralInteger) then
            let value : Integer = 
                valueEval.oclAsKindOf(LiteralInteger).value in
            if value >= 0 then value else null endif
        else null
        endif endif
    endif
endif </body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="72a34ca2-405c-4379-8513-617d5ddcc861" name="bound" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="22051b79-613e-4b6f-a32f-3a5e7c2951d9" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9f90a525-70c0-4e5f-9c27-7bbe7d72be84" name="" visibility="public" value="1"/>
          </ownedParameter>
          <ownedParameter xmi:id="deec5661-45c9-4020-be5e-9d4537e15aed" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="81b03118-c665-4b19-9d88-bf8012ad86e2" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="1955b334-28e2-4b43-ba1d-d9ce4167877d" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="80feb270-62a1-4a43-8c57-9da88eaddc29" name="Functions" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="6993b54e-1ab7-4c4e-a4c0-d71e5863f252" name="Function" visibility="public">
        <ownedComment xmi:id="5c0f960b-e812-4239-8a46-150b87627757" annotatedElement="6993b54e-1ab7-4c4e-a4c0-d71e5863f252">
          <body>&lt;p>A &lt;code>Function&lt;/code> is a &lt;code>Behavior&lt;/code> that has an &lt;code>out&lt;/code> &lt;code>parameter&lt;/code> that is identified as its &lt;code>result&lt;/code>. A &lt;code>Function&lt;/code> represents the performance of a calculation that produces the values of its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code>. This calculation may be decomposed into &lt;code>Expressions&lt;/code> that are &lt;code>steps&lt;/code> of the &lt;code>Function&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="143f2f79-aef9-4fbd-b2ed-21630e7dcd9c" name="checkFunctionResultBindingConnector" visibility="public" constrainedElement="6993b54e-1ab7-4c4e-a4c0-d71e5863f252">
          <ownedComment xmi:id="ff6d9618-9bb7-4e06-b00a-b80316e7eae8" annotatedElement="143f2f79-aef9-4fbd-b2ed-21630e7dcd9c">
            <body>&lt;p>If a &lt;code>Function&lt;/code> has an &lt;code>Expression&lt;/code> owned via a &lt;code>ResultExpressionMembership&lt;/code>, then the owning &lt;code>Function&lt;/code> must also own a &lt;code>BindingConnector&lt;/code> between its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> and the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of the result &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="01d6fcc1-2a19-4bb1-95a3-a3d280e8fde3" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMembership.selectByKind(ResultExpressionMembership)->
    forAll(mem | ownedFeature.selectByKind(BindingConnector)->
        exists(binding |
            binding.relatedFeature->includes(result) and
            binding.relatedFeature->includes(mem.ownedResultExpression.result)))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="b6f838f2-6669-4ce7-96f7-6e701161b38d" name="checkFunctionSpecialization" visibility="public" constrainedElement="6993b54e-1ab7-4c4e-a4c0-d71e5863f252">
          <ownedComment xmi:id="e59d29b1-049d-49bb-b8b1-fdb82c25d903" annotatedElement="b6f838f2-6669-4ce7-96f7-6e701161b38d">
            <body>&lt;p>A Function must directly or indirectly specialize the base Function &lt;code>&lt;em>Performances::Evaluation&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="84df63e6-ae0d-4386-a5f8-48a8ca1bf996" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::Evaluation')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="68f626b2-b69c-4c7c-831f-4951f429b0bf" name="deriveFunctionResult" visibility="public" constrainedElement="6993b54e-1ab7-4c4e-a4c0-d71e5863f252">
          <ownedComment xmi:id="e23cda03-d48f-42c0-a525-a10b0fca62e8" annotatedElement="68f626b2-b69c-4c7c-831f-4951f429b0bf">
            <body>&lt;p>The &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of a &lt;code>Function&lt;/code> is its &lt;code>parameter&lt;/code> owned via a &lt;code>ReturnParameterMembership&lt;/code> (if any).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f605e06d-4ed5-4905-80cf-789673bedcab" name="" visibility="public">
            <language>OCL2.0</language>
            <body>result =
    let resultParams : Sequence(Feature) =
        ownedFeatureMemberships->
            selectByKind(ReturnParameterMembership).
            ownedParameterMember in
    if resultParams->notEmpty() then resultParams->first()
    else null
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="41903d67-dfaa-4138-a136-99a867d9c107" name="validateFunctionResultParameterMembership" visibility="public" constrainedElement="6993b54e-1ab7-4c4e-a4c0-d71e5863f252">
          <ownedComment xmi:id="161bbf75-f5a9-462d-8b60-5125c7aeae0a" annotatedElement="41903d67-dfaa-4138-a136-99a867d9c107">
            <body>&lt;p>A &lt;code>Function&lt;/code> must own at most one &lt;code>ResultParameterMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="92742726-9591-4b84-9e8f-1c84368e52b4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeatureMembership->
    selectByKind(ReturnParameterMembership)->
    size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="386a65ce-6c61-497c-835e-86eb5ecd2c88" name="validateFunctionResultExpressionMembership" visibility="public" constrainedElement="6993b54e-1ab7-4c4e-a4c0-d71e5863f252">
          <ownedComment xmi:id="7ec2e02d-f30c-4420-b09d-ac0951d1779b" annotatedElement="386a65ce-6c61-497c-835e-86eb5ecd2c88">
            <body>&lt;p>A &lt;code>Function&lt;/code> must have at most one &lt;code>ResultExpressionMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="4f22c65b-cd05-4aa8-a191-394a410ffce8" name="" visibility="public">
            <language>OCL2.0</language>
            <body>membership->selectByKind(ResultExpressionMembership)->size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="ee4acc4b-f2c8-4aaf-8a95-88e8a1be7f78" general="f527e941-2809-4d8d-a977-453060c3db74"/>
        <ownedAttribute xmi:id="3d432c24-7906-4789-8045-e6680f82a73a" name="expression" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isDerived="true" subsettedProperty="2c467a8c-0933-4cd4-a26d-43970229f665" association="9ed43474-a7c5-49ae-913e-a8f7ca20b026">
          <ownedComment xmi:id="247b5a74-ed9b-4f6c-a9b4-b96c378ca972" annotatedElement="3d432c24-7906-4789-8045-e6680f82a73a">
            <body>&lt;p>The &lt;code>Expressions&lt;/code> that are &lt;code>steps&lt;/code> in the calculation of the &lt;code>result&lt;/code> of this &lt;code>Function&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="1211f03d-0c49-4999-8224-5e687d87693d" annotatedElement="3d432c24-7906-4789-8045-e6680f82a73a">
            <body>&lt;p>The set of expressions that represent computational steps or parts of a system of equations within the Function.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3558b210-9ce0-4dcf-8a4a-d6a929e819d0" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9d7ce8f7-7293-45af-a998-8d1c906f1e9d" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="eb936218-1650-422d-a48d-efd692684fc2" name="result" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="d425d748-88fa-4431-8ae7-760c6945a9d0 f33f29d7-3216-4ab5-9298-4fd27cf976f2" association="c46e7bb8-e315-42f4-a9cf-9af827173f27">
          <ownedComment xmi:id="804e9f79-4af6-4995-9394-6165b5139a78" annotatedElement="eb936218-1650-422d-a48d-efd692684fc2">
            <body>&lt;p>The &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of the &lt;code>Function&lt;/code>, which is owned by the &lt;code>Function&lt;/code> via a &lt;code>ReturnParameterMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="730be221-03f9-46c6-b7fb-e01ab6035b8a" annotatedElement="eb936218-1650-422d-a48d-efd692684fc2">
            <body>&lt;p>The object or value that is the result of evaluating the Function.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="988f5502-4d2d-4d85-b4d4-5a1b8b276235" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e21ae3d6-a01d-415a-8357-aeea6410ed90" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="1dd6f94c-218a-43c4-95e5-898ffe7bbd35" name="isModelLevelEvaluable" visibility="public" isDerived="true">
          <ownedComment xmi:id="551dd2e4-7d94-4383-aa01-22a326883d4a" annotatedElement="1dd6f94c-218a-43c4-95e5-898ffe7bbd35">
            <body>&lt;p>Whether this &lt;code>Function&lt;/code> can be used as the &lt;code>function&lt;/code> of a model-level evaluable &lt;code>InvocationExpression&lt;/code>. Certain &lt;code>Functions&lt;/code> from the Kernel Functions Library are considered to have &lt;code>isModelLevelEvaluable = true&lt;/code>. For all other &lt;code>Functions&lt;/code> it is &lt;code>false&lt;/code>.&lt;/p>

&lt;p>&lt;strong>Note:&lt;/strong> See the specification of the KerML concrete syntax notation for &lt;code>Expressions&lt;/code> for an identification of which library &lt;code>Functions&lt;/code> are model-level evaluable.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="e8904b17-7bf3-47eb-b907-a6efe22c56b7" name="Expression" visibility="public">
        <ownedComment xmi:id="f400da7f-8fcf-4032-add4-e6eb813c4d1c" annotatedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <body>&lt;p>An &lt;code>Expression&lt;/code> is a &lt;code>Step&lt;/code> that is typed by a &lt;code>Function&lt;/code>. An &lt;code>Expression&lt;/code> that also has a &lt;code>Function&lt;/code> as its &lt;code>featuringType&lt;/code> is a computational step within that &lt;code>Function&lt;/code>. An &lt;code>Expression&lt;/code> always has a single &lt;code>result&lt;/code> parameter, which redefines the &lt;code>result&lt;/code> parameter of its defining &lt;code>function&lt;/code>. This allows &lt;code>Expressions&lt;/code> to be interconnected in tree structures, in which inputs to each &lt;code>Expression&lt;/code> in the tree are determined as the results of other &lt;code>Expression&lt;/code> in the tree.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="7909ed2a-0583-4df0-a35c-910f36c0b92f" name="deriveExpressionIsModelLevelEvaluable" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="796120a8-ba34-4439-ac06-22285950c445" annotatedElement="7909ed2a-0583-4df0-a35c-910f36c0b92f">
            <body>&lt;p>Whether an Expression &lt;code>isModelLevelEvaluable&lt;/code> is determined by the &lt;code>modelLevelEvaluable()&lt;/code> operation.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f526e15d-ba81-47a5-815a-cd6bea82c61f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isModelLevelEvaluable = modelLevelEvaluable(Set(Element){})</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="8ffb69f9-ce40-408b-86ae-4c6b2dd9854c" name="checkExpressionSpecialization" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="cd2bd497-ebac-4923-b82f-144449e08820" annotatedElement="8ffb69f9-ce40-408b-86ae-4c6b2dd9854c">
            <body>&lt;p>An Expression must directly or indirectly specialize the base Expression &lt;code>&lt;em>Performances::evaluations&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b195754c-d86e-414c-9b6a-d45ab8dc4caf" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::evaluations')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="08b2ae7e-5144-4ade-b59a-d1b4c8ed623f" name="checkExpressionTypeFeaturing" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="c6e859f3-6655-4899-878d-c568d81acd17" annotatedElement="08b2ae7e-5144-4ade-b59a-d1b4c8ed623f">
            <body>&lt;p>If this &lt;code>Expression&lt;/code> is owned by a &lt;code>FeatureValue&lt;/code>, then it must have the same &lt;code>featuringTypes&lt;/code> as the &lt;code>featureWithValue&lt;/code> of the &lt;code>FeatureValue&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b39278ea-5893-498c-b4ab-77d0a3c6e55d" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningMembership &lt;> null and 
owningMembership.oclIsKindOf(FeatureValue) implies
    let featureWithValue : Feature = 
        owningMembership.oclAsType(FeatureValue).featureWithValue in
    featuringType = featureWithValue.featuringType</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="8c04d627-8efd-405d-b0be-bf43a14b7bc4" name="checkExpressionResultBindingConnector" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="a0a7eba7-2b1a-41a7-ae9b-8bf6c55bfacc" annotatedElement="8c04d627-8efd-405d-b0be-bf43a14b7bc4">
            <body>&lt;p>If an &lt;code>Expression&lt;/code> has an &lt;code>Expression&lt;/code> owned via a &lt;code>ResultExpressionMembership&lt;/code>, then the owning &lt;code>Expression&lt;/code> must also own a &lt;code>BindingConnector&lt;/code> between its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> and the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of the result &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="a0920180-d045-49c5-81b9-c009a46b43f2" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedMembership.selectByKind(ResultExpressionMembership)->
    forAll(mem | ownedFeature.selectByKind(BindingConnector)->
        exists(binding |
            binding.relatedFeature->includes(result) and
            binding.relatedFeature->includes(mem.ownedResultExpression.result)))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="14bb7a90-0daa-47be-9146-45a09bd0fc0b" name="deriveExpressionResult" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="9da36972-7aa3-4a42-badd-cb5abe0950ef" annotatedElement="14bb7a90-0daa-47be-9146-45a09bd0fc0b">
            <body>&lt;p>If an &lt;code>Expression&lt;/code> has a &lt;code>parameter&lt;/code> owned via a &lt;code>ReturnParameterMembership&lt;/code>, then that is its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code>. Otherwise, its &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> is the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> inherited from its &lt;code>function&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="7c519971-47c3-418b-a7ed-a69e6e1d97b7" name="" visibility="public">
            <language>OCL2.0</language>
            <body>result =
    let resultParams : Sequence(Feature) =
        ownedFeatureMemberships->
            selectByKind(ReturnParameterMembership).
            ownedParameterMember in
    if resultParams->notEmpty() then resultParams->first()
    else if function &lt;> null then function.result
    else null
    endif endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="806047f5-964b-4e5d-a619-98f822fddcf1" name="validateExpressionResultParameterMembership" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="6cb20106-e5a4-45ef-852d-c961b1874281" annotatedElement="806047f5-964b-4e5d-a619-98f822fddcf1">
            <body>&lt;p>An &lt;code>Expression&lt;/code> must own at most one &lt;code>ResultParameterMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="d408cb51-2319-406e-bc71-2e8478d2163e" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeatureMembership->
    selectByKind(ReturnParameterMembership)->
    size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="237827e5-726c-41fa-84ad-50682d5c149c" name="validateExpressionResultExpressionMembership" visibility="public" constrainedElement="e8904b17-7bf3-47eb-b907-a6efe22c56b7">
          <ownedComment xmi:id="be4da765-5bf7-4393-9046-fc8bf64dbf40" annotatedElement="237827e5-726c-41fa-84ad-50682d5c149c">
            <body>&lt;p>An &lt;code>Expression&lt;/code> must have at most one &lt;code>ResultExpressionMembership&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="ab520139-7c27-431b-b24b-27031cc57da4" name="" visibility="public">
            <language>OCL2.0</language>
            <body>membership->selectByKind(ResultExpressionMembership)->size() &lt;= 1</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="191078cf-1107-478a-bfa4-debe6867bf7a" general="c81e263a-340a-4264-b5a9-ee441741919d"/>
        <ownedAttribute xmi:id="2e507a50-ac61-442c-8efa-716bfc5e6ff9" name="function" visibility="public" type="6993b54e-1ab7-4c4e-a4c0-d71e5863f252" isDerived="true" redefinedProperty="4f6477ef-2deb-4f17-a41e-e2aa01f6bb7e" association="ebaa3d35-7336-4e9d-9fa4-96e86748b5fe">
          <ownedComment xmi:id="6143c143-7afb-4957-8240-85125c8daeb4" annotatedElement="2e507a50-ac61-442c-8efa-716bfc5e6ff9">
            <body>&lt;p>The &lt;code>Function&lt;/code> that types this &lt;code>Expression&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedComment xmi:id="e8d10bb9-ff5c-467f-a97f-18f0cc8dbae2" annotatedElement="2e507a50-ac61-442c-8efa-716bfc5e6ff9">
            <body>&lt;p>This is the Function that types the Expression.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="69139a11-291e-4522-8863-9191e1ebd683" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="229102b2-08f0-46ff-b2ed-cf451510d272" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="16d0e627-990b-4388-9c7c-591ab204b49a" name="result" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d" isDerived="true" subsettedProperty="5568f668-7e98-4b99-a40f-7c2eecde3db2 f33f29d7-3216-4ab5-9298-4fd27cf976f2" association="f76936da-9309-45b0-b844-6a1a9a9f1856">
          <ownedComment xmi:id="7e4feeb4-20f9-4b5a-a67d-5037a8bf5371" annotatedElement="16d0e627-990b-4388-9c7c-591ab204b49a">
            <body>&lt;p>&lt;p>An &lt;code>output&lt;/code> &lt;code>parameter&lt;/code> of the &lt;code>Expression&lt;/code> whose value is the result of the &lt;code>Expression&lt;/code>. The result of an &lt;code>Expression&lt;/code> is either inherited from its &lt;code>function&lt;/code> or it is related to the &lt;code>Expression&lt;/code> via a &lt;code>ReturnParameterMembership&lt;/code>, in which case it redefines the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of its &lt;code>function&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f4f33ce0-01c6-4aca-998d-d54295d11da4" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="a61c01af-b902-4683-b55c-effdccef9728" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="979f5a07-f7a7-456a-b708-72f2db2b62c7" name="isModelLevelEvaluable" visibility="public" isDerived="true">
          <ownedComment xmi:id="b86f0721-a60c-4b1d-83ca-06d4302dcc68" annotatedElement="979f5a07-f7a7-456a-b708-72f2db2b62c7">
            <body>&lt;p>Whether this &lt;code>Expression&lt;/code> meets the constraints necessary to be evaluated at &lt;em>model level&lt;/em>, that is, using metadata within the model.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
        </ownedAttribute>
        <ownedOperation xmi:id="f485a5f8-785d-460a-9e4a-84835140baad" name="modelLevelEvaluable" visibility="public" bodyCondition="ceed2bd1-342c-4d0d-b985-e1182e4301c7">
          <ownedComment xmi:id="d6230403-a464-4305-a61f-06dc34d468ac" annotatedElement="f485a5f8-785d-460a-9e4a-84835140baad">
            <body>&lt;p>Return whether this &lt;code>Expression&lt;/code> is model-level evaluable. The &lt;code>visited&lt;/code> parameter is used to track possible circular &lt;code>Feature&lt;/code> references made from &lt;code>FeatureReferenceExpressions&lt;/code> (see the redefinition of this operation for &lt;code>FeatureReferenceExpression&lt;/code>). Such circular references are not allowed in model-level evaluable expressions.&lt;/p>

&lt;p>An &lt;code>Expression&lt;/code> that is not otherwise specialized is model-level evaluable if it has no (non-implied) &lt;code>ownedSpecializations&lt;/code> and all its &lt;code>ownedFeatures&lt;/code> are either &lt;code>in&lt;/code> parameters, the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> or a result &lt;code>Expression&lt;/code> owned via a &lt;code>ResultExpressionMembership&lt;/code>. The &lt;code>parameters&lt;/code>  must not have any &lt;code>ownedFeatures&lt;/code> or a &lt;code>FeatureValue&lt;/code>, and the result &lt;code>Expression&lt;/code> must be model-level evaluable.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="ceed2bd1-342c-4d0d-b985-e1182e4301c7" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="0572dc27-5f3f-42f4-ad8f-bac13f58012c" name="" visibility="public">
              <language>OCL2.0</language>
              <body>ownedSpecialization->forAll(isImplied) and 
ownedFeature->forAll(f |
    (directionOf(f) = FeatureDirectionKind::_'in' or f = result) and
        f.ownedFeature->isEmpty() and f.valuation = null or
    f.owningFeatureMembership.oclIsKindOf(ResultExpressionMembership) and
        f.oclAsType(Expression).modelLevelEvaluable(visited)
    </body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="7fcc06b4-514e-4391-a7fd-d88754e7834e" name="visited" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="826f7fa4-1910-4456-ab88-32fea88a5434" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="16caf4b5-8e29-49aa-8482-28ff00d12745" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="ab445724-af2e-4bc6-a12f-e45b5bfe2dd3" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="a930d7e2-2d70-4f4f-a404-d5da492c0bd5" name="evaluate" visibility="public" bodyCondition="f88a4847-6790-492a-800c-ee8906f9062d" precondition="2652f9ed-80a6-4fce-a3f8-aba09fac5a97">
          <ownedComment xmi:id="052e5d28-835f-4d37-b0b7-b40296737bef" annotatedElement="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
            <body>&lt;p>If this &lt;code>Expression&lt;/code> &lt;code>isModelLevelEvaluable&lt;/code>, then evaluate it using the &lt;code>target&lt;/code> as the context &lt;code>Element&lt;/code> for resolving &lt;code>Feature&lt;/code> names and testing classification. The result is a collection of &lt;code>Elements&lt;/code>, which, for a fully evaluable &lt;code>Expression&lt;/code>, will be a &lt;code>LiteralExpression&lt;/code> or a &lt;code>Feature&lt;/code> that is not an &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="2652f9ed-80a6-4fce-a3f8-aba09fac5a97" name="evaluatePre" visibility="public" constrainedElement="a930d7e2-2d70-4f4f-a404-d5da492c0bd5">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="4fc962c8-eab1-47bf-b513-93fd6ec02775" name="" visibility="public">
              <language>OCL2.0</language>
              <body>isModelLevelEvaluable</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="f88a4847-6790-492a-800c-ee8906f9062d" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="64d1ccee-6331-4fae-86be-62aa747547eb" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let resultExprs : Sequence(Expression) =
    ownedFeatureMembership->
        selectByKind(ResultExpressionMembership).
        ownedResultExpression in
if resultExpr->isEmpty() then Sequence{}
else resultExprs->first().evaluate(target)
endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="87a39c22-9b18-4cbe-92b9-8097cace29d2" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="16bcdf5f-668a-436e-80f4-7b699f103d29" name="result" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" isOrdered="true" isUnique="false" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="82d6d010-c7a6-4a48-b833-806a47fad14f" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b18e42d5-8b64-41c0-8892-031b309d846b" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="d53ea3b6-320d-4a0a-9c38-4700c9c1838b" name="checkCondition" visibility="public" bodyCondition="da86c461-ddbd-447d-ac65-20680174da76">
          <ownedComment xmi:id="9e9addb4-3d9a-456d-b5a2-aa078ef7399a" annotatedElement="d53ea3b6-320d-4a0a-9c38-4700c9c1838b">
            <body>&lt;p>Model-level evaluate this &lt;code>Expression&lt;/code> with the given &lt;code>target&lt;/code>. If the result is a &lt;code>LiteralBoolean&lt;/code>, return its &lt;code>value&lt;/code>. Otherwise return &lt;code>false&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="da86c461-ddbd-447d-ac65-20680174da76" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="fae0f650-e3c9-4667-ba39-914e9b69c25f" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let results: Sequence(Element) = evaluate(target) in
    result->size() = 1 and
    results->first().oclIsKindOf(LiteralBoolean) and 
    results->first().oclAsType(LiteralBoolean).value</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="ad9e661a-b756-4cac-bcfb-5b7f9570e63f" name="target" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="80b5b27a-a82c-4c71-994d-35d8ea3d9c6e" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="c46e7bb8-e315-42f4-a9cf-9af827173f27" name="A_result_computingFunction" visibility="public" memberEnd="eb936218-1650-422d-a48d-efd692684fc2 31e1c7dc-7ea0-471d-b8d5-4f68b0124cb6">
        <ownedEnd xmi:id="31e1c7dc-7ea0-471d-b8d5-4f68b0124cb6" name="computingFunction" visibility="public" type="6993b54e-1ab7-4c4e-a4c0-d71e5863f252" isDerived="true" subsettedProperty="7ba992b9-43e0-432b-9be4-d9fd40c4592b" association="c46e7bb8-e315-42f4-a9cf-9af827173f27">
          <ownedComment xmi:id="b9eacdfc-ebe4-41db-a79f-2dac12665147" annotatedElement="31e1c7dc-7ea0-471d-b8d5-4f68b0124cb6">
            <body>&lt;p>The Functions that have a certain Feature its owned or inherited &lt;code>result&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="4f7c1130-22fd-4f44-bf36-ef7fbb228f69" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="695533b0-832b-4b4a-b6ea-b701bb7635e7" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="9bc8e006-7107-451a-9eea-22fa8b2a33c2" name="Invariant" visibility="public">
        <ownedComment xmi:id="64a9ffaa-177b-4d9a-ba12-9e0996125efb" annotatedElement="9bc8e006-7107-451a-9eea-22fa8b2a33c2">
          <body>&lt;p>An &lt;code>Invariant&lt;/code> is a &lt;code>BooleanExpression&lt;/code> that is asserted to have a specific &lt;code>&lt;em>Boolean&lt;/em>&lt;/code> result value. If &lt;code>isNegated = false&lt;/code>, then the result is asserted to be true. If &lt;code>isNegated = true&lt;/code>, then the result is asserted to be false.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="9efe4be6-80ea-4982-b683-0a4cc33fa036" name="checkInvariantSpecialization" visibility="public" constrainedElement="9bc8e006-7107-451a-9eea-22fa8b2a33c2">
          <ownedComment xmi:id="65b7ebd2-9007-4e28-b9d5-0c616ad96c84" annotatedElement="9efe4be6-80ea-4982-b683-0a4cc33fa036">
            <body>&lt;p>An Invariant must directly or indirectly specialize either of the following BooleanExpressions from the Kernel Semantic Library: &lt;code>&lt;em>Performances::trueEvaluations&lt;/em>&lt;/code>, if &lt;code>isNegated = false&lt;/code>, or  &lt;code>&lt;em>Performances::falseEvaluations&lt;/em>&lt;/code>, if &lt;code>isNegated = true&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="59751892-6b60-4259-99a1-54d227348bac" name="" visibility="public">
            <language>OCL2.0</language>
            <body>if isNegated then
    specializesFromLibrary('Performances::falseEvaluations')
else
    specializesFromLibrary('Performances::trueEvaluations')
endif</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="e1708b59-75f9-4d52-b15c-fb38454f466d" general="e500c379-f2d6-480c-8ae9-28d1d0e8d3c7"/>
        <ownedAttribute xmi:id="30bc499c-2f9e-4372-b136-43b10076f1ad" name="isNegated" visibility="public">
          <ownedComment xmi:id="4596398e-60cc-4338-89e1-d97c15276f12" annotatedElement="30bc499c-2f9e-4372-b136-43b10076f1ad">
            <body>&lt;p>Whether this &lt;code>Invariant&lt;/code> is asserted to be false rather than true.&lt;/p>
</body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="cb7bfaf5-f98b-4a59-8528-81fa61cd3f30" name="" visibility="public"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="945b8e80-3b92-4eca-8e0d-595762272c53" name="Predicate" visibility="public">
        <ownedComment xmi:id="ab7e79bb-f838-48e0-a2be-03bc1c556373" annotatedElement="945b8e80-3b92-4eca-8e0d-595762272c53">
          <body>&lt;p>A &lt;code>Predicate&lt;/code> is a &lt;code>Function&lt;/code> whose &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> has type &lt;code>&lt;em>Boolean&lt;/em>&lt;/code> and multiplicity &lt;code>1..1&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="bd635c44-adc5-46f6-b5ff-f1015c37b583" name="checkPredicateSpecialization" visibility="public" constrainedElement="945b8e80-3b92-4eca-8e0d-595762272c53">
          <ownedComment xmi:id="28d42a9a-8d2f-4588-8c26-77e056a1420b" annotatedElement="bd635c44-adc5-46f6-b5ff-f1015c37b583">
            <body>&lt;p>A Predicate must directly or indirectly specialize the base Predicate &lt;code>&lt;em>Performances::BooleanEvaluation&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="4f65f0ea-a95d-48cc-b329-de1707d2caed" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::BooleanEvaluation')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="1b9b410d-951a-49c4-bb1b-764643413669" general="6993b54e-1ab7-4c4e-a4c0-d71e5863f252"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="d7b63d74-c838-47a0-9261-7a238ead23bf" name="A_predicate_typedBooleanExpression" visibility="public" memberEnd="0532b96c-597f-4fd0-b50f-b980beb4a9b3 1750031d-1b04-46fb-9317-898964162694">
        <ownedEnd xmi:id="1750031d-1b04-46fb-9317-898964162694" name="typedBooleanExpression" visibility="public" type="e500c379-f2d6-480c-8ae9-28d1d0e8d3c7" isDerived="true" subsettedProperty="413064f1-e3e7-4b41-b07b-61c3a46776c7" association="d7b63d74-c838-47a0-9261-7a238ead23bf">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="65915733-dc6a-455b-9eb6-a45a3ed18c69" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="46505e3a-69b0-4421-819b-7a9fb442d8fc" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="9ed43474-a7c5-49ae-913e-a8f7ca20b026" name="A_expression_computedFunction" visibility="public" memberEnd="3d432c24-7906-4789-8045-e6680f82a73a 194ed774-f135-46c1-b412-dee40c4514f2">
        <ownedEnd xmi:id="194ed774-f135-46c1-b412-dee40c4514f2" name="computedFunction" visibility="public" type="6993b54e-1ab7-4c4e-a4c0-d71e5863f252" subsettedProperty="e7d06841-0806-41b9-b331-7066aa385b51" association="9ed43474-a7c5-49ae-913e-a8f7ca20b026">
          <ownedComment xmi:id="18bc219f-7e4f-4ede-90e8-1d333a5884c7" annotatedElement="194ed774-f135-46c1-b412-dee40c4514f2">
            <body>&lt;p>The Functions that hasve a certain &lt;code>expression&lt;/code> as a step.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="9fb99270-1501-4b73-b0e6-a56fcd8cca2f" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ce44a5ec-8e8c-4e2c-880c-178835c3a204" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="ebaa3d35-7336-4e9d-9fa4-96e86748b5fe" name="A_function_typedExpression" visibility="public" memberEnd="2e507a50-ac61-442c-8efa-716bfc5e6ff9 413064f1-e3e7-4b41-b07b-61c3a46776c7">
        <ownedEnd xmi:id="413064f1-e3e7-4b41-b07b-61c3a46776c7" name="typedExpression" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isDerived="true" subsettedProperty="c993e98e-bff7-47e3-a653-bfa31708f9d3" association="ebaa3d35-7336-4e9d-9fa4-96e86748b5fe">
          <ownedComment xmi:id="6944e1cc-0b41-4bbb-a9f9-e9439a733e28" annotatedElement="413064f1-e3e7-4b41-b07b-61c3a46776c7">
            <body>&lt;p>The Expressions that are typed by a certain &lt;code>function&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="01258c1f-aff7-405f-bc7e-d863443ba427" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9f4af625-af98-4674-b4b3-6106fcf4003c" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="e500c379-f2d6-480c-8ae9-28d1d0e8d3c7" name="BooleanExpression" visibility="public">
        <ownedComment xmi:id="dabec4b6-a346-4b8e-aaba-cd8cfe62e85f" annotatedElement="e500c379-f2d6-480c-8ae9-28d1d0e8d3c7">
          <body>&lt;p>A &lt;code>BooleanExpression&lt;/code> is a &lt;em>&lt;code>Boolean&lt;/code>&lt;/em>-valued &lt;code>Expression&lt;/code> whose type is a &lt;code>Predicate&lt;/code>. It represents a logical condition resulting from the evaluation of the &lt;code>Predicate&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="cb5c99f6-867c-4b23-ace0-9788a6c54244" name="checkBooleanExpressionSpecialization" visibility="public" constrainedElement="e500c379-f2d6-480c-8ae9-28d1d0e8d3c7">
          <ownedComment xmi:id="62d133ca-adbd-4f81-8f5b-ffd147f0919d" annotatedElement="cb5c99f6-867c-4b23-ace0-9788a6c54244">
            <body>&lt;p>A BooleanExpression must directly or indirectly specialize the base BooleanExpression &lt;code>&lt;em>Performances::booleanEvaluations&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="24259703-db25-41e9-84ee-7bca3b71f74b" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Performances::booleanEvaluations')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="8b1b2779-e1d3-4fa0-a399-459b8eb15159" general="e8904b17-7bf3-47eb-b907-a6efe22c56b7"/>
        <ownedAttribute xmi:id="0532b96c-597f-4fd0-b50f-b980beb4a9b3" name="predicate" visibility="public" type="945b8e80-3b92-4eca-8e0d-595762272c53" isDerived="true" redefinedProperty="2e507a50-ac61-442c-8efa-716bfc5e6ff9" association="d7b63d74-c838-47a0-9261-7a238ead23bf">
          <ownedComment xmi:id="9ca1a72c-8529-4860-ad24-c74842f33d2b" annotatedElement="0532b96c-597f-4fd0-b50f-b980beb4a9b3">
            <body>&lt;p>The &lt;code>Predicate&lt;/code> that types this &lt;code>BooleanExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedComment xmi:id="7f846c48-498e-4b72-9122-9a77fb35f999" annotatedElement="0532b96c-597f-4fd0-b50f-b980beb4a9b3">
            <body>&lt;p>The Predicate that types the Expression.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5c6ce194-2f81-4703-b6cf-61a20434fe66" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="def23854-ddb4-4f7b-ae37-440086a42894" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="eb783430-4889-4788-b357-9a6235aa1cbf" name="A_ownedResultExpression_owningResultExpressionMembership" visibility="public" memberEnd="0d528a3e-f48c-474f-85d4-d4abfd5a8f34 f37a430c-63fa-4e67-ad76-87432d709256">
        <ownedEnd xmi:id="f37a430c-63fa-4e67-ad76-87432d709256" name="owningResultExpressionMembership" visibility="public" type="3a6f503a-c5eb-4ff0-94f4-abbbda79f1ce" isDerived="true" subsettedProperty="b79a7d91-99ab-4372-8103-af57f85ad3a1" association="eb783430-4889-4788-b357-9a6235aa1cbf">
          <ownedComment xmi:id="5b5a8116-c749-4fb2-82ff-fcf347edc6f9" annotatedElement="f37a430c-63fa-4e67-ad76-87432d709256">
            <body>&lt;p>The ResultExpressionMembership that owns the &lt;code>ownedResultExpression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="159b691c-9d76-4329-b904-e0b277edf230" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="8d4c2c8e-a2c1-4ba2-b0cb-885e5f86431b" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="3a6f503a-c5eb-4ff0-94f4-abbbda79f1ce" name="ResultExpressionMembership" visibility="public">
        <ownedComment xmi:id="04a3a6cb-9a17-40fd-aa78-284f9accebf1" annotatedElement="3a6f503a-c5eb-4ff0-94f4-abbbda79f1ce">
          <body>&lt;p>A &lt;code>ResultExpressionMembership&lt;/code> is a &lt;code>FeatureMembership&lt;/code> that indicates that the &lt;code>ownedResultExpression&lt;/code> provides the result values for the &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code> that owns it. The owning &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code> must contain a &lt;code>BindingConnector&lt;/code> between the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of the &lt;code>ownedResultExpression&lt;/code> and the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of the owning &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="1d60c62a-04a5-4e0e-82ac-ed65bc502e7a" name="validateResultExpressionMembershipOwningType" visibility="public" constrainedElement="3a6f503a-c5eb-4ff0-94f4-abbbda79f1ce">
          <ownedComment xmi:id="c959378b-50eb-4c49-8188-8f9242614557" annotatedElement="1d60c62a-04a5-4e0e-82ac-ed65bc502e7a">
            <body>&lt;p>The &lt;code>owningType&lt;/code> of a &lt;code>ResultExpressionMembership&lt;/code> must be a &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="b3f4f24f-0caf-4e5b-ba88-3b1a0db90c2f" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType.oclIsKindOf(Function) or owningType.oclIsKindOf(Expression)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="7279fbd2-4ebd-4a57-af76-7a66be12965d" general="10189040-993c-4d64-aacf-0d99b558af68"/>
        <ownedAttribute xmi:id="0d528a3e-f48c-474f-85d4-d4abfd5a8f34" name="ownedResultExpression" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" aggregation="composite" isDerived="true" redefinedProperty="6bf83eae-2d89-4ea9-8c7b-92d8ef26bfaa" association="eb783430-4889-4788-b357-9a6235aa1cbf">
          <ownedComment xmi:id="4a3d484f-99a2-43cc-b9d5-b399af0d6a60" annotatedElement="0d528a3e-f48c-474f-85d4-d4abfd5a8f34">
            <body>&lt;p>The &lt;code>Expression&lt;/code> that provides the result for the owner of the &lt;code>ResultExpressionMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="096e78bf-8ebe-482a-9db9-f5cbdffaecc3" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="113b7864-58e3-41bc-a38f-92369bb55c6e" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="d759d442-4338-48e1-822e-3318c533aed4" name="ReturnParameterMembership" visibility="public">
        <ownedComment xmi:id="f1dda25b-2ef6-4808-baec-eef5434c1557" annotatedElement="d759d442-4338-48e1-822e-3318c533aed4">
          <body>&lt;p>A &lt;code>ReturnParameterMembership&lt;/code> is a &lt;code>ParameterMembership&lt;/code> that indicates that the &lt;code>ownedMemberParameter&lt;/code> is the &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of a &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code>. The &lt;code>direction&lt;/code> of the &lt;code>ownedMemberParameter&lt;/code> must be &lt;code>out&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="ff0012f9-fdf2-4b67-bb47-9c92932727d8" name="validateReturnParameterMembershipOwningType" visibility="public" constrainedElement="d759d442-4338-48e1-822e-3318c533aed4">
          <ownedComment xmi:id="50026415-87e0-4f52-b820-8606bb61fcc9" annotatedElement="ff0012f9-fdf2-4b67-bb47-9c92932727d8">
            <body>&lt;p>The &lt;code>owningType&lt;/code> of a &lt;code>ReturnParameterMembership&lt;/code> must be a &lt;code>Function&lt;/code> or &lt;code>Expression&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="3aac004a-6999-48dd-b5a1-3544ee15f09c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>owningType.oclIsKindOf(Function) or owningType.oclIsKindOf(Expression)</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="a448e2c2-24f1-4c9b-b565-12a19b0b6cc6" general="eb1dad4c-855f-4154-b5f3-bd7d07932a0c"/>
        <ownedOperation xmi:id="915df931-83fc-4aff-be73-c9f743f50692" name="parameterDirection" visibility="public" isLeaf="true" bodyCondition="454dda70-482a-4c17-9a40-4cb4d9b7759c" redefinedOperation="87ca6ab6-9fe5-4383-95ef-0542aafd685d">
          <ownedComment xmi:id="7daa34b8-983f-4c9e-a78a-40a9c3e0b5b1" annotatedElement="915df931-83fc-4aff-be73-c9f743f50692">
            <body>&lt;p>The &lt;code>ownedMemberParameter&lt;/code> of a &lt;code>ReturnParameterMembership&lt;/code> must have direction &lt;code>out&lt;/code>. (This is a leaf operation that cannot be further redefined.)&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="454dda70-482a-4c17-9a40-4cb4d9b7759c" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="6149acce-0ba7-447a-83f6-e556cc8563cc" name="" visibility="public">
              <language>OCL2.0</language>
              <body>FeatureDirectionKind::out</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="0c66dab9-acc9-44c6-b916-0f3aa1f80f71" name="" visibility="public" type="7afbde11-a8e1-455f-bbec-22a4e1f5b814" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="81c245c0-1833-4093-9d70-0c45d88458dc" name="" visibility="public" value="1"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="058837e4-96d8-4f53-8731-f9220e866692" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="f76936da-9309-45b0-b844-6a1a9a9f1856" name="A_result_computingExpression" visibility="public" memberEnd="16d0e627-990b-4388-9c7c-591ab204b49a 8b73dbbb-3d29-41b4-aecc-9542e6c7443b">
        <ownedEnd xmi:id="8b73dbbb-3d29-41b4-aecc-9542e6c7443b" name="computingExpression" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isDerived="true" subsettedProperty="de5274d1-087e-4467-8b93-3cab6400bdce" association="f76936da-9309-45b0-b844-6a1a9a9f1856">
          <ownedComment xmi:id="e1292a83-3091-4111-b1f4-941fc7b30a9b" annotatedElement="8b73dbbb-3d29-41b4-aecc-9542e6c7443b">
            <body>&lt;p>The Expressions that have a certain Feature its owned or inherited &lt;code>result&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d3a54c0b-ca0b-4e65-8843-95e216bc5b7d" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="d7bd3632-cbbe-4771-81c8-a74fabf6d9ce" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="12c8aff4-bf2a-4c8f-b2c9-fc7e2f11287b" name="Packages" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="901febc8-3ed1-45bf-8a99-348ef65a0589" name="ElementFilterMembership" visibility="public">
        <ownedComment xmi:id="5b9a8540-82f5-4946-8732-15b1bdba7d21" annotatedElement="901febc8-3ed1-45bf-8a99-348ef65a0589">
          <body>&lt;p>&lt;code>ElementFilterMembership&lt;/code> is a &lt;code>Membership&lt;/code> between a &lt;code>Namespace&lt;/code> and a model-level evaluable &lt;code>&lt;em>Boolean&lt;/em>&lt;/code>-valued &lt;code>Expression&lt;/code>, asserting that imported &lt;code>members&lt;/code> of the &lt;code>Namespace&lt;/code> should be filtered using the &lt;code>condition&lt;/code> &lt;code>Expression&lt;/code>. A general &lt;code>Namespace&lt;/code> does not define any specific filtering behavior, but such behavior may be defined for various specialized kinds of &lt;code>Namespaces&lt;/code>.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="0bd1fd64-0494-43c9-a8e0-14683335d774" name="validateElementFilterMembershipConditionIsModelLevelEvaluable" visibility="public" constrainedElement="901febc8-3ed1-45bf-8a99-348ef65a0589">
          <ownedComment xmi:id="3fd6b1b9-dce9-4429-bfaf-ac1847aca7ff" annotatedElement="0bd1fd64-0494-43c9-a8e0-14683335d774">
            <body>&lt;p>The &lt;code>condition&lt;/code> &lt;code>Expression&lt;/code> must be model-level evaluable.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="8ca9e1da-02d0-42ef-8a8c-257a5ab77170" name="" visibility="public">
            <language>OCL2.0</language>
            <body>condition.isModelLevelEvaluable</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="08cfba8c-6917-46e2-b470-1d8a172e607e" name="validateElementFilterMembershipConditionIsBoolean" visibility="public" constrainedElement="901febc8-3ed1-45bf-8a99-348ef65a0589">
          <ownedComment xmi:id="89809976-db23-4079-8056-4e97994508db" annotatedElement="08cfba8c-6917-46e2-b470-1d8a172e607e">
            <body>&lt;p>The &lt;code>result&lt;/code> &lt;code>parameter&lt;/code> of the &lt;code>condition&lt;/code> &lt;code>Expression&lt;/code> must directly or indirectly specialize &lt;code>&lt;em>ScalarValues::Boolean&lt;/em>&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="78ac5da5-d7f5-419d-8787-87f3a8208757" name="" visibility="public">
            <language>OCL2.0</language>
            <body>condition.result.specializesFromLibrary('ScalarValues::Boolean')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="08d7819e-187b-466b-b27b-14dfeee3ed5e" general="0ac69c8b-1bab-45e9-82df-d840307444f7"/>
        <ownedAttribute xmi:id="37cbbe8d-6a19-4fa9-ba1d-76166dc6b828" name="condition" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" aggregation="composite" isDerived="true" redefinedProperty="c23da327-2bed-4f05-9fa2-9749097c6eca" association="1b2c2e99-2f46-42f7-a94e-1257c4dcf02f">
          <ownedComment xmi:id="ad75b4fa-85dd-444a-8317-7fe6797803cb" annotatedElement="37cbbe8d-6a19-4fa9-ba1d-76166dc6b828">
            <body>&lt;p>The model-level evaluable &lt;code>Boolean&lt;/code>-valued &lt;code>Expression&lt;/code> used to filter the imported &lt;code>members&lt;/code> of the &lt;code>membershipOwningNamespace&lt;/code> of this &lt;code>ElementFilterMembership&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="5eda3abe-cf77-4c6c-bd9d-fb19785eb2aa" name="" visibility="public" value="1"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="02e2fcd2-f67f-4bbe-b98b-2b8b30609671" name="" visibility="public" value="1"/>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="2f136caf-317a-455d-8f97-c33424ad18ea" name="A_filterCondition_conditionedPackage" visibility="public" memberEnd="e1210077-5699-4474-9ea5-70f6d0aa1e02 63494a30-7839-4573-9a70-b38d5eade087">
        <ownedEnd xmi:id="63494a30-7839-4573-9a70-b38d5eade087" name="conditionedPackage" visibility="public" type="dec604f2-d024-416c-a857-4fe12f435218" isDerived="true" subsettedProperty="934985ee-d247-42fc-8106-101a5b3ebacb" association="2f136caf-317a-455d-8f97-c33424ad18ea">
          <ownedComment xmi:id="2adccdc2-b5b6-4b0f-96ab-89d4a704fd48" annotatedElement="63494a30-7839-4573-9a70-b38d5eade087">
            <body>&lt;p>The Package that has a certain Expression as a &lt;code>filterCondition&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a2f9b728-ef9c-4c01-9b1e-151dd760aea9" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="42fc9a07-3219-42c3-b3d6-7b94a6d71b84" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="1b2c2e99-2f46-42f7-a94e-1257c4dcf02f" name="A_condition_owningFilter" visibility="public" memberEnd="37cbbe8d-6a19-4fa9-ba1d-76166dc6b828 a6a4a6c1-092d-416d-bcaf-2edcffac32c8">
        <ownedEnd xmi:id="a6a4a6c1-092d-416d-bcaf-2edcffac32c8" name="owningFilter" visibility="public" type="901febc8-3ed1-45bf-8a99-348ef65a0589" isDerived="true" subsettedProperty="8763ebb8-6a3d-45b3-b628-966dc39fbb40" association="1b2c2e99-2f46-42f7-a94e-1257c4dcf02f">
          <ownedComment xmi:id="a7a9a245-ccce-4196-ba80-ded1893890d8" annotatedElement="a6a4a6c1-092d-416d-bcaf-2edcffac32c8">
            <body>&lt;p>The ElementFilterMembership that owns the &lt;code>condition&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="0c086be7-bdd6-44fc-a050-a89c9d49c20c" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="48c07943-c71d-4db9-ac8e-ee09d34c2eaa" name="" visibility="public" value="1"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="dec604f2-d024-416c-a857-4fe12f435218" name="Package" visibility="public">
        <ownedComment xmi:id="6dcb6fe3-fe5d-4c5d-8ad6-697792a7cfbf" annotatedElement="dec604f2-d024-416c-a857-4fe12f435218">
          <body>&lt;p>A &lt;code>Package&lt;/code> is a &lt;code>Namespace&lt;/code> used to group &lt;code>Elements&lt;/code>, without any instance-level semantics. It may have one or more model-level evaluable &lt;code>filterCondition&lt;/code> &lt;code>Expressions&lt;/code> used to filter its &lt;code>importedMemberships&lt;/code>. Any imported &lt;code>member&lt;/code> must meet all of the &lt;code>filterConditions&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="42352ad4-927c-4cc9-bdc0-03a6fe3af78a" name="derivePackageFilterCondition" visibility="public" constrainedElement="dec604f2-d024-416c-a857-4fe12f435218">
          <ownedComment xmi:id="a9be9476-3bed-4b38-8601-b29a0ea42982" annotatedElement="42352ad4-927c-4cc9-bdc0-03a6fe3af78a">
            <body>&lt;p>The &lt;code>filterConditions&lt;/code> of a &lt;code>Package&lt;/code> are the &lt;code>conditions&lt;/code> of its owned &lt;code>ElementFilterMemberships&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="58b8feac-cba9-45bb-9811-a936e29bf5ee" name="" visibility="public">
            <language>OCL2.0</language>
            <body>filterCondition = ownedMembership->
    selectByKind(ElementFilterMembership).condition</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="5a1b8d44-ecbb-42cd-a732-dcf8f3ee1cab" general="16a893ca-c85b-4a48-989a-fc24520fc6d6"/>
        <ownedAttribute xmi:id="e1210077-5699-4474-9ea5-70f6d0aa1e02" name="filterCondition" visibility="public" type="e8904b17-7bf3-47eb-b907-a6efe22c56b7" isOrdered="true" isDerived="true" subsettedProperty="e77d17fa-39f5-4493-b101-5630bea6df70" association="2f136caf-317a-455d-8f97-c33424ad18ea">
          <ownedComment xmi:id="8e84299b-478a-4c75-94e3-18dbbe33fee2" annotatedElement="e1210077-5699-4474-9ea5-70f6d0aa1e02">
            <body>&lt;p>The model-level evaluable &lt;code>&lt;em>Boolean&lt;/em>&lt;/code>-valued &lt;code>Expression&lt;/code> used to filter the &lt;code>members&lt;/code> of this &lt;code>Package&lt;/code>, which are owned by the &lt;code>Package&lt;/code> are via &lt;code>ElementFilterMemberships&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="f5376764-89b9-4df9-81b8-b2edd29dae47" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="9822e6c3-3d9c-4982-8a5b-010cfe2bdbb3" name="" visibility="public" value="*"/>
        </ownedAttribute>
        <ownedOperation xmi:id="659b9e3d-36cc-4abb-91b5-65b5bb35b2a5" name="importedMemberships" visibility="public" bodyCondition="7193b750-4fb9-4739-88ff-9f99e61c9414" redefinedOperation="0d6961a1-98da-4c05-8d2b-0b4ae18e87ca">
          <ownedComment xmi:id="e95a2ad7-436e-4b2e-8bd7-e688c79d0646" annotatedElement="659b9e3d-36cc-4abb-91b5-65b5bb35b2a5">
            <body>&lt;p>Exclude &lt;code>Elements&lt;/code> that do not meet all the &lt;code>filterConditions&lt;/code>.&lt;/p>
</body>
          </ownedComment>
          <ownedRule xmi:id="7193b750-4fb9-4739-88ff-9f99e61c9414" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="7a448170-9a33-4124-81b2-4593d62f39a3" name="" visibility="public">
              <language>OCL2.0</language>
              <body>self.oclAsType(Namespace).importedMemberships(excluded)->
    select(m | self.includeAsMember(m.memberElement))</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="80e7e916-4509-471a-b5e4-251def99adbe" name="excluded" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="78cce360-5f17-4242-ab14-7239d3bdd4b9" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="67440c89-d232-4504-8d12-01981da8b3fd" name="" visibility="public" value="*"/>
          </ownedParameter>
          <ownedParameter xmi:id="270649bf-54c6-4e94-ab0c-5c2e1c75ce30" name="" visibility="public" type="aac28989-9501-4cdb-a0de-5be645062d3c" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="14bc447f-fec4-4eb6-a385-1d3cd4eb9899" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="b59e9901-b135-4821-a5e5-be3aec39cf5a" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="e6c0bfee-9a83-46c6-8455-5f8b2ff07b93" name="includeAsMember" visibility="public" bodyCondition="27ae8601-b417-42c4-9538-2ef5e73f0567">
          <ownedComment xmi:id="ce50f816-636a-4cf3-a1be-64fe5cc0bdff" annotatedElement="e6c0bfee-9a83-46c6-8455-5f8b2ff07b93">
            <body>&lt;p>Determine whether the given &lt;code>element&lt;/code> meets all the &lt;code>filterConditions&lt;/code>.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="27ae8601-b417-42c4-9538-2ef5e73f0567" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="8827ec3f-bb67-4d44-882d-074c85b7f189" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let metadataFeatures: Sequence(AnnotatingElement) = 
    element.ownedAnnotation.annotatingElement->
        selectByKind(MetadataFeature) in
    self.filterCondition->forAll(cond | 
        metadataFeatures->exists(elem | 
            cond.checkCondition(elem)))</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="928565be-1c4c-469e-9611-4ebf66f2fbd5" name="element" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb"/>
          <ownedParameter xmi:id="83975d9b-0c6a-4f52-949f-cbfe6d9848e3" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="5ff2aa81-bad0-4a7b-b241-74b19634d58d" name="LibraryPackage" visibility="public">
        <ownedComment xmi:id="2dbb7a29-6b54-4193-b280-9bc7c2951f09" annotatedElement="5ff2aa81-bad0-4a7b-b241-74b19634d58d">
          <body>&lt;p>A &lt;code>LibraryPackage&lt;/code> is a &lt;code>Package&lt;/code> that is the container for a model library. A &lt;code>LibraryPackage&lt;/code> is itself a library &lt;code>Element&lt;/code> as are all &lt;code>Elements&lt;/code> that are directly or indirectly contained in it.&lt;/p>
</body>
        </ownedComment>
        <generalization xmi:id="786c9366-b292-4fd5-88ed-43e72b59be01" general="dec604f2-d024-416c-a857-4fe12f435218"/>
        <ownedAttribute xmi:id="24d847c2-8227-41f1-865e-4bd5d1e5e8f7" name="isStandard" visibility="public">
          <ownedComment xmi:id="6875a030-3944-4135-8521-0768f22a24f4" annotatedElement="24d847c2-8227-41f1-865e-4bd5d1e5e8f7">
            <body>&lt;p>Whether this &lt;code>LibraryPackage&lt;/code> contains a standard library model. This should only be set to true for &lt;code>LibraryPackages&lt;/code> in the standard Kernel Model Libraries or in normative model libraries for a language built on KerML.&lt;/p></body>
          </ownedComment>
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="7bff473d-ea57-4713-beda-1841baec330d" name="" visibility="public"/>
        </ownedAttribute>
        <ownedOperation xmi:id="e3caeba2-b443-4097-9e02-17541555a4d9" name="libraryNamespace" visibility="public" bodyCondition="2e1d7e94-5481-4e70-b3ef-c89c6643c804" redefinedOperation="cb9361b7-9f79-425c-bc2e-46776cfd44f7">
          <ownedComment xmi:id="78a6d1f8-338a-449b-b51b-e4d3fd95e4a0" annotatedElement="e3caeba2-b443-4097-9e02-17541555a4d9">
            <body>&lt;p>The &lt;code>libraryNamespace&lt;/code> for a &lt;code>LibraryPackage&lt;/code> is itself.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="2e1d7e94-5481-4e70-b3ef-c89c6643c804" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="c09fd351-e70e-4fdf-b987-2d57ebfc47f9" name="" visibility="public">
              <language>OCL2.0</language>
              <body>self</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="7a8f0895-ff2b-48cc-bded-b1d8e4a7c967" name="" visibility="public" type="16a893ca-c85b-4a48-989a-fc24520fc6d6" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="17263848-dfb9-4f70-b4bd-a2af59307bb3" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="2e3db9dd-331a-45a2-8eeb-1c8413f61159" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="c7fc98b6-56d5-454a-a5d4-d8e441203bc9" name="Metadata" visibility="public" URI="">
      <packagedElement xmi:type="uml:Association" xmi:id="e97d81d5-a152-4d83-8e5b-ab270fc3d0ca" name="A_metaclass_typedMetadata" visibility="public" memberEnd="45b349b2-f7df-45f9-9189-04d6fd174d0f 41120c45-ee59-46f3-b159-7edd4fe6412b">
        <ownedEnd xmi:id="41120c45-ee59-46f3-b159-7edd4fe6412b" name="typedMetadata" visibility="public" type="4085a1f9-bc5b-4996-abf8-b0e018475fd1" isDerived="true" subsettedProperty="08f343cc-a4b3-4b7b-ac32-2b752135ca37" association="e97d81d5-a152-4d83-8e5b-ab270fc3d0ca">
          <ownedComment xmi:id="b146720f-4c85-4b93-b0dd-7c3a31e9e0a5" annotatedElement="41120c45-ee59-46f3-b159-7edd4fe6412b">
            <body>&lt;p>The MetadataFeatures whose &lt;code>type&lt;/code> is a certain Metaclass.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="d0645685-41ea-494d-8855-c6f39dc494af" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="513ee330-6b90-4ac5-8516-a37108a31ff5" name="" visibility="public" value="*"/>
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="4085a1f9-bc5b-4996-abf8-b0e018475fd1" name="MetadataFeature" visibility="public">
        <ownedComment xmi:id="7c8fbb5a-65cd-416e-8108-c92c423f2fd2" annotatedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <body>&lt;p>A &lt;code>MetadataFeature&lt;/code> is a &lt;code>Feature&lt;/code> that is an &lt;code>AnnotatingElement&lt;/code> used to annotate another &lt;code>Element&lt;/code> with metadata. It is typed by a &lt;code>Metaclass&lt;/code>. All its &lt;code>ownedFeatures&lt;/code> must redefine &lt;code>features&lt;/code> of its &lt;code>metaclass&lt;/code> and any feature bindings must be model-level evaluable.&lt;/p>

</body>
        </ownedComment>
        <ownedRule xmi:id="7db2a8a9-2bbb-4ffc-8fce-11264df5e947" name="checkMetadataFeatureSpecialization" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="579775e8-d854-4857-951d-59e793a41815" annotatedElement="7db2a8a9-2bbb-4ffc-8fce-11264df5e947">
            <body>&lt;p>A &lt;code>MetadataFeature&lt;/code> must directly or indirectly specialize the base &lt;code>MetadataFeature&lt;/code> &lt;code>&lt;em>Metaobjects::metaobjects&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="277eb68a-0671-4772-bc5d-1f498650f03c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Metaobjects::metaobjects')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="54424e88-696e-4642-9c1b-c2b7ffec5162" name="checkMetadataFeatureSemanticSpecialization" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="d0e423ff-feec-4fdb-a968-52f6e206b8c3" annotatedElement="54424e88-696e-4642-9c1b-c2b7ffec5162">
            <body>&lt;p>If this &lt;code>MetadataFeature&lt;/code> is an application of &lt;code>&lt;em>SemanticMetadata&lt;/em>&lt;/code>, then its &lt;code>annotatingElement&lt;/code> must be a &lt;code>Type&lt;/code>. The annotated &lt;code>Type&lt;/code> must then directly or indirectly specialize the specified value of the &lt;code>&lt;em>baseType&lt;/em>&lt;/code>, &lt;em>unless&lt;/em> the &lt;code>Type&lt;/code> is a &lt;code>Classifier&lt;/code> and the &lt;code>&lt;em>baseType&lt;/em>&lt;/code> represents a kind of &lt;code>Feature&lt;/code>, in which case the &lt;code>Classifier&lt;/code> must directly or indirectly specialize each of the &lt;code>types&lt;/code> of the &lt;code>Feature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="06e5cb00-3af2-48b0-b899-0d08ca71185d" name="" visibility="public">
            <language>OCL2.0</language>
            <body>isSemantic() implies
    let annotatedTypes : Sequence(Type) = 
        annotatedElement->selectAsKind(Type) in
    let baseTypes : Sequence(MetadataFeature) = 
        evaluateFeature(resolveGlobal(
            'Metaobjects::SemanticMetadata::baseType').
            memberElement.
            oclAsType(Feature))->
        selectAsKind(MetadataFeature) in
    annotatedTypes->notEmpty() and 
    baseTypes()->notEmpty() and 
    baseTypes()->first().isSyntactic() implies
        let annotatedType : Type = annotatedTypes->first() in
        let baseType : Element = baseTypes->first().syntaxElement() in
        if annotatedType.oclIsKindOf(Classifier) and 
            baseType.oclIsKindOf(Feature) then
            baseType.oclAsType(Feature).type->
                forAll(t | annotatedType.specializes(t))
        else if baseType.oclIsKindOf(Type) then
            annotatedType.specializes(baseType.oclAsType(Type))
        else
            true
        endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="2e70546e-6aa5-4e2c-8193-09f80dd66f65" name="validateMetadataFeatureMetaclassNotAbstract" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="4eccfcf9-d5d8-48ed-ae38-382ddd07dff8" annotatedElement="2e70546e-6aa5-4e2c-8193-09f80dd66f65">
            <body>&lt;p>The &lt;code>metaclass&lt;/code> of a &lt;code>MetadataFeature&lt;/code> must not be abstract.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6da7cce9-9051-4ea7-afcf-2d81d35e710c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>not metaclass.isAbstract</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="00d00a23-d8cf-4ea4-8fea-6b7206002dcd" name="validateMetadataFeatureAnnotatedElement" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="c52c335c-3f74-460a-b3c9-823c5719e49e" annotatedElement="00d00a23-d8cf-4ea4-8fea-6b7206002dcd">
            <body>&lt;p>The &lt;code>annotatedElements&lt;/code> of a &lt;code>MetadataFeature&lt;/code> must have an abstract syntax metaclass consistent with the &lt;code>annotatedElement&lt;/code> declarations for the &lt;code>MetadataFeature&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="9a17d85a-5b73-4ee7-834b-1ef1d7db6f35" name="" visibility="public">
            <language>OCL2.0</language>
            <body>let baseAnnotatedElementFeature : Feature =
    resolveGlobal('Metaobjects::Metaobject::annotatedElement').memberElement.
    oclAsType(Feature) in
let annotatedElementFeatures : OrderedSet(Feature) = feature->
    select(specializes(baseAnnotatedElementFeature))->
    excluding(baseAnnotatedElementFeature) in
annotatedElementFeatures->notEmpty() implies
    let annotatedElementTypes : Set(Feature) =
        annotatedElementFeatures.typing.type->asSet() in
    let metaclasses : Set(Metaclass) =
        annotatedElement.oclType().qualifiedName->collect(qn | 
            resolveGlobal(qn).memberElement.oclAsType(Metaclass)) in
   metaclasses->forAll(m | annotatedElementTypes->exists(t | m.specializes(t)))</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="56b8db1f-2e85-4221-9967-e0a087fe88eb" name="validateMetadataFeatureBody" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="bdc8e3ec-a27f-4561-8036-00adf34390ee" annotatedElement="56b8db1f-2e85-4221-9967-e0a087fe88eb">
            <body>&lt;p>Each &lt;code>ownedFeature&lt;/code> of a &lt;code>MetadataFeature&lt;/code> must have no declared name, redefine a single &lt;code>Feature&lt;/code>, either have no &lt;code>featureValue&lt;/code> or a &lt;code>featureValue&lt;/code> with a &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> that is model-level evaluable, and only have &lt;code>ownedFeatures&lt;/code> that also meet these restrictions.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="f0546512-03f6-4855-a6b4-2ee7c2423348" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedFeature->closure(ownedFeature)->forAll(f |
    f.declaredName = null and f.declaredShortName = null and
    f.valuation &lt;> null implies f.valuation.value.isModelLevelEvaluable and
    f.redefinition.redefinedFeature->size() = 1)</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="970faa8a-13a2-4293-9f55-08a042af8fb8" name="deriveMetadataFeatureMetaclass" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="dae4866c-eb43-418e-a05e-a354289d7bc2" annotatedElement="970faa8a-13a2-4293-9f55-08a042af8fb8">
            <body>&lt;p>The &lt;code>metaclass&lt;/code> of a &lt;code>MetadataFeature&lt;/code> is one of its &lt;code>types&lt;/code> that is a &lt;code>Metaclass&lt;/code>.</body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="6ecd550a-fe87-4f51-9d40-02613c3a64e3" name="" visibility="public">
            <language>OCL2.0</language>
            <body>metaclass = 
    let metaclassTypes : Sequence(Type) = type->selectByKind(Metaclass) in
    if metaclassTypes->isEmpty() then null
    else metaClassTypes->first()
    endif</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="3392800b-01af-4639-9999-df59a71486c7" name="validateMetadataFeatureMetaclass" visibility="public" constrainedElement="4085a1f9-bc5b-4996-abf8-b0e018475fd1">
          <ownedComment xmi:id="f85a2b55-84f3-49cd-a4aa-ca3fa42be6f3" annotatedElement="3392800b-01af-4639-9999-df59a71486c7">
            <body>&lt;p>A &lt;code>MetadataFeature&lt;/code> must have exactly one &lt;code>type&lt;/code> that is a &lt;code>Metaclass&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="db0de8fc-9a43-40a7-8e78-27acf9e1e3e1" name="" visibility="public">
            <language>OCL2.0</language>
            <body>type->selectByKind(Metaclass).size() = 1</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="ce6d355b-5a6b-4579-88f3-9b3ac1147477" general="3bade169-f558-4d7e-aea3-b195c0224e20"/>
        <generalization xmi:id="6c58f640-fe12-450f-ad87-b73ad5067175" general="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
        <ownedAttribute xmi:id="45b349b2-f7df-45f9-9189-04d6fd174d0f" name="metaclass" visibility="public" type="aa876400-c369-491e-96cf-cad7abe3f112" isDerived="true" subsettedProperty="2dd9a8a5-bc46-421d-bc22-89f91e4b6ffe" association="e97d81d5-a152-4d83-8e5b-ab270fc3d0ca">
          <ownedComment xmi:id="36d33180-d20a-458e-85f8-f54a31b9af16" annotatedElement="45b349b2-f7df-45f9-9189-04d6fd174d0f">
            <body>&lt;p>The &lt;code>type&lt;/code> of this &lt;code>MetadataFeature&lt;/code>, which must be a &lt;code>Metaclass&lt;/code>.&lt;/p></body>
          </ownedComment>
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="e26aae1c-7511-4086-b88b-069136be99d2" name="" visibility="public"/>
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="21b1b30a-a19e-491c-9402-33157404ced3" name="" visibility="public" value="1"/>
        </ownedAttribute>
        <ownedOperation xmi:id="b8228706-ebff-4820-896a-0cf7fa44bb04" name="evaluateFeature" visibility="public" bodyCondition="13b7cea0-c52d-47e8-9017-99608cd09090">
          <ownedComment xmi:id="0c8236e0-82f4-4768-b110-565e8e5ddf95" annotatedElement="b8228706-ebff-4820-896a-0cf7fa44bb04">
            <body>&lt;p>If the given &lt;code>baseFeature&lt;/code> is a &lt;code>feature&lt;/code> of this &lt;code>MetadataFeature&lt;/code>, or is directly or indirectly redefined by a &lt;code>feature&lt;/code>, then return the result of evaluating the appropriate (model-level evaluable) &lt;code>value&lt;/code> &lt;code>Expression&lt;/code> for it (if any), with the &lt;code>MetadataFeature&lt;/code> as the target.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="13b7cea0-c52d-47e8-9017-99608cd09090" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="d91f1f27-5997-4ed4-8bc1-f14f170a6957" name="" visibility="public">
              <language>OCL2.0</language>
              <body>let selectedFeatures : Sequence(Feature) = feature->
    select(closure(ownedRedefinition.redefinedFeature)->
           includes(baseFeature)) in
if selectedFeatures->isEmpty() then null
else
    let selectedFeature : Feature = selectedFeatures->first() in
    let featureValues : FeatureValue = selectedFeature->
        closure(ownedRedefinition.redefinedFeature).ownedMember->
        selectAsKind(FeatureValue) in
    if featureValues->isEmpty() then null
    else featureValues->first().value.evaluate(self)
    endif</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="531cea1a-1cf6-4543-9b37-698522f25a3f" name="baseFeature" visibility="public" type="56b2e3ab-f2e5-4330-9c25-362cb4af825d"/>
          <ownedParameter xmi:id="e8a03ae4-fc70-40f5-b67c-13ba1197b48f" name="" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="a0478dda-cf8c-4ea4-b948-77b567b22e47" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="88c13df1-b4ab-48e2-82db-ff0819d5b7ca" name="" visibility="public" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="3f391468-dcd6-4dfe-bc7b-739bb826e141" name="isSemantic" visibility="public" bodyCondition="d91b8945-816f-48e0-a9b1-41862acd229b">
          <ownedComment xmi:id="8684ca5c-50a1-4234-b3ca-73366c26dd23" annotatedElement="3f391468-dcd6-4dfe-bc7b-739bb826e141">
            <body>&lt;p>Check if this &lt;code>MetadataFeature&lt;/code> has a &lt;code>metaclass&lt;/code> which is a kind of &lt;code>&lt;em>SemanticMetadata&lt;/code>.&lt;p></body>
          </ownedComment>
          <ownedRule xmi:id="d91b8945-816f-48e0-a9b1-41862acd229b" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="48d005ca-8d4e-46af-9d08-78fb7c3e63f8" name="" visibility="public">
              <language>OCL2.0</language>
              <body>specializesFromLibrary('Metaobjects::SemanticMetadata')</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="4dab76fc-2b97-4590-9174-eeac8344e9df" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="e8c39e9c-7988-40c9-9eee-4709aea1dd49" name="isSyntactic" visibility="public" bodyCondition="d1b79fb3-fe8f-4a0f-9ba3-94dcb9516418">
          <ownedComment xmi:id="d2dde114-5423-433d-afff-839f32ef4e79" annotatedElement="e8c39e9c-7988-40c9-9eee-4709aea1dd49">
            <body>&lt;p>Check if this &lt;code>MetadataFeature&lt;/code> has a &lt;code>metaclass&lt;/code> that is a kind of &lt;code>&lt;em>KerML::Element&lt;/em>&lt;/code> (that is, it is from the reflective abstract syntax model).&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="d1b79fb3-fe8f-4a0f-9ba3-94dcb9516418" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="39a95e39-a5f7-41bb-b4e4-13d6527b626d" name="" visibility="public">
              <language>OCL2.0</language>
              <body>specializesFromLibrary('KerML::Element')</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="a4c09da7-de70-4d1b-920b-33e8f6f1ae6f" name="" visibility="public" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="df5b42c1-39ce-499b-8453-355ccbe3c61b" name="syntaxElement" visibility="public" bodyCondition="29d008e6-4c1d-4f8a-841d-945cc90373c4" precondition="4f6b25ca-30e4-4614-9814-323dadbdeaca">
          <ownedComment xmi:id="6f44ddde-fa92-40e9-b44c-919b746986ba" annotatedElement="df5b42c1-39ce-499b-8453-355ccbe3c61b">
            <body>&lt;p>If this &lt;code>MetadataFeature&lt;/code> reflectively represents a model element, then return the corresponding &lt;code>Element&lt;/code> instance from the MOF abstract syntax representation of the model.&lt;/p></body>
          </ownedComment>
          <ownedRule xmi:id="4f6b25ca-30e4-4614-9814-323dadbdeaca" name="syntaxElement_pre" visibility="public" constrainedElement="df5b42c1-39ce-499b-8453-355ccbe3c61b">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="eda7d4b2-ab26-41a0-99c7-54bb14fdb3ed" name="" visibility="public">
              <language>OCL2.0</language>
              <body>isSyntactic()</body>
            </specification>
          </ownedRule>
          <ownedRule xmi:id="29d008e6-4c1d-4f8a-841d-945cc90373c4" name="unnamed1" visibility="public">
            <specification xmi:type="uml:OpaqueExpression" xmi:id="e65a5f56-a18f-4c76-bdcb-b45b200ed43f" name="" visibility="public">
              <language>English</language>
              <body>No OCL</body>
            </specification>
          </ownedRule>
          <ownedParameter xmi:id="e6ae01c8-e85b-4f8b-8350-58092425d28b" name="" visibility="public" type="4b78ff27-ee29-4275-961c-00731b7ed9bb" direction="return">
            <lowerValue xmi:type="uml:LiteralInteger" xmi:id="3a220c2e-cb6a-40fe-aad0-a424523c2718" name="" visibility="public"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="e4ce640e-8c1f-4831-b799-328309d93002" name="" visibility="public" value="1"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="aa876400-c369-491e-96cf-cad7abe3f112" name="Metaclass" visibility="public">
        <ownedComment xmi:id="232ece6d-9d1d-4e87-a60c-0e5c4ec7eb5d" annotatedElement="aa876400-c369-491e-96cf-cad7abe3f112">
          <body>&lt;p>A &lt;code>Metaclass&lt;/code> is a &lt;code>Structure&lt;/code> used to type &lt;code>MetadataFeatures&lt;/code>.&lt;/p></body>
        </ownedComment>
        <ownedRule xmi:id="cb506f33-e684-4f3f-9c8d-2e91e0eb9df2" name="checkMetaclassSpecialization" visibility="public" constrainedElement="aa876400-c369-491e-96cf-cad7abe3f112">
          <ownedComment xmi:id="9e0e8608-cf7d-4fd5-aedf-9654223b6a2e" annotatedElement="cb506f33-e684-4f3f-9c8d-2e91e0eb9df2">
            <body>&lt;p>A &lt;code>Metaclass&lt;/code> must directly or indirectly specialize the base &lt;code>Metaclass&lt;/code> &lt;code>&lt;em>Metaobjects::Metaobject&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="207019e3-0aa3-4f4a-b6ac-6bb0b6dfc374" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Metaobjects::Metaobject')</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="d0c4b950-e3ee-491e-90f8-a1a2b4680de6" general="6da69e09-f5e9-41b7-b976-5666a81d074d"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="8b782064-f01b-4df2-bdd9-85d4bf69ddcb" name="Structures" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="6da69e09-f5e9-41b7-b976-5666a81d074d" name="Structure" visibility="public">
        <ownedComment xmi:id="0ad36496-356d-45ef-9698-7f19836c6ec8" annotatedElement="6da69e09-f5e9-41b7-b976-5666a81d074d">
          <body>&lt;p>A &lt;code>Structure&lt;/code> is a &lt;code>Class&lt;/code> of objects in the modeled universe that are primarily structural in nature. While such an object is not itself behavioral, it may be involved in and acted on by &lt;code>Behaviors&lt;/code>, and it may be the performer of some of them.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="2667e703-612d-4a6d-9b33-bd4ff03d2634" name="checkStructureSpecialization" visibility="public" constrainedElement="6da69e09-f5e9-41b7-b976-5666a81d074d">
          <ownedComment xmi:id="548a5efa-67bb-48b0-bd14-c616404bf952" annotatedElement="2667e703-612d-4a6d-9b33-bd4ff03d2634">
            <body>&lt;p>A Structure must directly or indirectly specialize the base Structure &lt;code>&lt;em>Objects::Object&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="666fb70d-83b0-49e1-8243-a4217968458c" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Objects::Object')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="adde5ba9-a7ee-47a0-bd72-43c8c03c605c" name="validateStructureSpecialization" visibility="public" constrainedElement="6da69e09-f5e9-41b7-b976-5666a81d074d">
          <ownedComment xmi:id="e10de49f-850f-40a1-9d85-b07d846c26c0" annotatedElement="adde5ba9-a7ee-47a0-bd72-43c8c03c605c">
            <body>&lt;p>A &lt;code>Structure&lt;/code> must not specialize a &lt;code>Behavior&lt;/code>.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="2e820c99-bd54-408e-9312-feb72184d7ee" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSpecialization.general->forAll(not oclIsKindOf(Behavior))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="c832a176-9a61-4538-a2e6-d7737522d81a" general="d956e5c3-9d04-4c1d-9494-2b8d7f33e196"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="34cca0d4-22bc-4b90-8146-249d0c1a4555" name="Classes" visibility="public" URI="">
      <packagedElement xmi:type="uml:Class" xmi:id="d956e5c3-9d04-4c1d-9494-2b8d7f33e196" name="Class" visibility="public">
        <ownedComment xmi:id="580da122-0691-490d-8bb6-e448566173a3" annotatedElement="d956e5c3-9d04-4c1d-9494-2b8d7f33e196">
          <body>&lt;p>A &lt;code>Class&lt;/code> is a &lt;code>Classifier&lt;/code> of things (in the universe) that can be distinguished without regard to how they are related to other things (via &lt;code>Features&lt;/code>). This means multiple things classified by the same &lt;code>Class&lt;/code> can be distinguished, even when they are related other things in exactly the same way.&lt;/p>
</body>
        </ownedComment>
        <ownedRule xmi:id="71da53e6-7468-47e6-8064-ad66725674e6" name="checkClassSpecialization" visibility="public" constrainedElement="d956e5c3-9d04-4c1d-9494-2b8d7f33e196">
          <ownedComment xmi:id="35dec9c2-77c3-40da-9b5b-bfab5cfd8707" annotatedElement="71da53e6-7468-47e6-8064-ad66725674e6">
            <body>&lt;p>A &lt;code>Class&lt;/code> must directly or indirectly specialize the base &lt;code>Class&lt;/code> &lt;code>&lt;em>Occurrences::Occurrence&lt;/em>&lt;/code> from the Kernel Semantic Library.&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="bb8b7804-7e01-40a2-ae43-71280526d83a" name="" visibility="public">
            <language>OCL2.0</language>
            <body>specializesFromLibrary('Occurrences::Occurrence')</body>
          </specification>
        </ownedRule>
        <ownedRule xmi:id="0d01cce9-9a2b-43c6-984d-e088f151f100" name="validateClassSpecialization" visibility="public" constrainedElement="d956e5c3-9d04-4c1d-9494-2b8d7f33e196">
          <ownedComment xmi:id="e9c7c719-b714-40ad-8e49-d6d54ff6e15e" annotatedElement="0d01cce9-9a2b-43c6-984d-e088f151f100">
            <body>&lt;p>A &lt;code>Class&lt;/code> must not specialize a &lt;code>DataType&lt;/code> and it can only specialize an &lt;code>Association&lt;/code> if it is also itself a kind of &lt;code>Association&lt;/code> (such as an &lt;code>AssociationStructure&lt;/code> or &lt;code>Interaction&lt;/code>).&lt;/p></body>
          </ownedComment>
          <specification xmi:type="uml:OpaqueExpression" xmi:id="67e509cd-202c-4676-b166-ac157cfbc826" name="" visibility="public">
            <language>OCL2.0</language>
            <body>ownedSpecialization.general->
    forAll(not oclIsKindOf(DataType)) and
not oclIsKindOf(Association) implies
    ownedSpecialization.general->
        forAll(not oclIsKindOf(Association))</body>
          </specification>
        </ownedRule>
        <generalization xmi:id="31b2aa7e-b1d8-4434-94bf-3a1e23b53f20" general="d0a45a28-7af9-4bb2-9fc9-ac3e79928263"/>
      </packagedElement>
    </packagedElement>
  </packagedElement>
</uml:Model>
