Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/uml2')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml42
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml69
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml977
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml4818
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml45
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml57
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml57
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml14306
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.ecore15558
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.merged.uml15806
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.uml1947
13 files changed, 53718 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml
new file mode 100644
index 0000000000..7c50b81281
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_y16xIPnhEdunWsS3se92JQ" name="10536">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0dB44PnhEdunWsS3se92JQ" name="ConnectableElement" isAbstract="true">
+ <ownedAttribute xmi:id="_5fDBQPnhEdunWsS3se92JQ" name="end" visibility="public" type="_2UPSIPnhEdunWsS3se92JQ" isDerived="true" association="_5e5QQPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fDBQvnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5fDBQfnhEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_tL_ewPniEdunWsS3se92JQ" name="getEnds" visibility="protected">
+ <ownedParameter xmi:id="_uvsGIPniEdunWsS3se92JQ" name="" type="_2UPSIPnhEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xsLscfniEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xsLscPniEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2UPSIPnhEdunWsS3se92JQ" name="ConnectorEnd">
+ <ownedAttribute xmi:id="_81UZgfnhEdunWsS3se92JQ" name="role" visibility="public" type="_0dB44PnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZg_nhEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZgvnhEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5e5QQPnhEdunWsS3se92JQ" name="A_connectableElement_end" memberEnd="_5fDBQPnhEdunWsS3se92JQ _5fDBQ_nhEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_5fDBQ_nhEdunWsS3se92JQ" name="" visibility="private" type="_0dB44PnhEdunWsS3se92JQ" association="_5e5QQPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fDBRfnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5fDBRPnhEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_81UZgPnhEdunWsS3se92JQ" name="A_end_role" memberEnd="_81UZgfnhEdunWsS3se92JQ _81UZhPnhEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_81UZhPnhEdunWsS3se92JQ" name="end" visibility="private" type="_2UPSIPnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZhvnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZhfnhEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_vz32QPn-EduCCoNWMwSrOA">
+ <eAnnotations xmi:id="_v2Qb4Pn-EduCCoNWMwSrOA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_yzfpEPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_5fDBQPnhEdunWsS3se92JQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml
new file mode 100644
index 0000000000..bd271b4ac6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_udv6MPnlEdunWsS3se92JQ" name="10537">
+ <packagedElement xmi:type="uml:Class" xmi:id="_xM1WoPnlEdunWsS3se92JQ" name="Vertex" isAbstract="true">
+ <ownedAttribute xmi:id="_R1FbMfnmEdunWsS3se92JQ" name="incoming" visibility="public" type="_ykKV8PnlEdunWsS3se92JQ" isDerived="true" association="_R1FbMPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R1FbM_nmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R1FbMvnmEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_X_OCMPnmEdunWsS3se92JQ" name="outgoing" visibility="public" type="_ykKV8PnlEdunWsS3se92JQ" isDerived="true" association="_X_E4QPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_OCMvnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_OCMfnmEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_RqYxoPnnEdunWsS3se92JQ" name="getIncomings" visibility="protected">
+ <ownedParameter xmi:id="_UvruoPnnEdunWsS3se92JQ" name="" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YahosfnnEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YahosPnnEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aHv_gPnnEdunWsS3se92JQ" name="getOutgoings" visibility="protected">
+ <ownedParameter xmi:id="_aHv_gfnnEdunWsS3se92JQ" name="" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aHv_gvnnEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aHv_g_nnEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ykKV8PnlEdunWsS3se92JQ" name="Transition">
+ <ownedAttribute xmi:id="_EhVtMPnmEdunWsS3se92JQ" name="target" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtMvnmEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtMfnmEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JPYJofnmEdunWsS3se92JQ" name="source" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPYJo_nmEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPYJovnmEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_EhL8MPnmEdunWsS3se92JQ" name="A_incoming_target" memberEnd="_EhVtMPnmEdunWsS3se92JQ _EhVtM_nmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_EhVtM_nmEdunWsS3se92JQ" name="incoming" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtNfnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtNPnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JPYJoPnmEdunWsS3se92JQ" name="A_outgoing_source" memberEnd="_JPYJofnmEdunWsS3se92JQ _JPh6oPnmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_JPh6oPnmEdunWsS3se92JQ" name="outgoing" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPh6ovnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPh6ofnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_R1FbMPnmEdunWsS3se92JQ" name="A_vertex_incoming" memberEnd="_R1FbMfnmEdunWsS3se92JQ _R1FbNPnmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_R1FbNPnmEdunWsS3se92JQ" name="" visibility="private" type="_xM1WoPnlEdunWsS3se92JQ" association="_R1FbMPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R1FbNvnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R1FbNfnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_X_E4QPnmEdunWsS3se92JQ" name="A_vertex_outgoing" memberEnd="_X_OCMPnmEdunWsS3se92JQ _X_OCM_nmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_X_OCM_nmEdunWsS3se92JQ" name="" visibility="private" type="_xM1WoPnlEdunWsS3se92JQ" association="_X_E4QPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_OCNfnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_OCNPnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_3zuBsPn-EduCCoNWMwSrOA">
+ <eAnnotations xmi:id="_3zuBsfn-EduCCoNWMwSrOA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_5aiOgPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_R1FbMfnmEdunWsS3se92JQ"/>
+ <Ecore:EReference xmi:id="_8M5BYPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_X_OCMPnmEdunWsS3se92JQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml
new file mode 100644
index 0000000000..ca43ec675f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml
@@ -0,0 +1,977 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_SeWiQMX_EduPJbEsMYXjUQ" name="Ecore">
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWj6cX_EduPJbEsMYXjUQ" name="EAnnotation">
+ <eAnnotations xmi:id="_SeWj6sX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWj68X_EduPJbEsMYXjUQ" key="constraints" value="WellFormedSourceURI"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWj7MX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWj7cX_EduPJbEsMYXjUQ" name="source" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj7sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj78X_EduPJbEsMYXjUQ" name="details" type="_SeWj-sX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj_8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj8MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj8cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj8sX_EduPJbEsMYXjUQ" name="eModelElement" type="_SeWihMX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkAcX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj88X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj9MX_EduPJbEsMYXjUQ" name="contents" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkAsX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj9cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj9sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj98X_EduPJbEsMYXjUQ" name="references" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkBMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj-MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj-cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiQcX_EduPJbEsMYXjUQ" name="EAttribute">
+ <eAnnotations xmi:id="_SeWiQsX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiQ8X_EduPJbEsMYXjUQ" key="constraints" value="ConsistentTransient"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWiRMX_EduPJbEsMYXjUQ" general="_SeWiSMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiRcX_EduPJbEsMYXjUQ" name="id" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiRsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiR8X_EduPJbEsMYXjUQ" name="eAttributeType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWkCsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWizcX_EduPJbEsMYXjUQ" name="EClass">
+ <eAnnotations xmi:id="_SeWizsX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiz8X_EduPJbEsMYXjUQ" key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWi0MX_EduPJbEsMYXjUQ" general="_SeWjG8X_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWi0cX_EduPJbEsMYXjUQ" name="abstract" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi0sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi08X_EduPJbEsMYXjUQ" name="interface" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi1MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi1cX_EduPJbEsMYXjUQ" name="eSuperTypes" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjlsX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWi1sX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWi18X_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWi2MX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi2cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi2sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi28X_EduPJbEsMYXjUQ" name="eOperations" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjsMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi3MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi3cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi3sX_EduPJbEsMYXjUQ" name="eAllAttributes" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWjvMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi38X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi4MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi4cX_EduPJbEsMYXjUQ" name="eAllReferences" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj1MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi4sX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi48X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi5MX_EduPJbEsMYXjUQ" name="eReferences" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj1sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi5cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi5sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi58X_EduPJbEsMYXjUQ" name="eAttributes" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj2MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi6MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi6cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi6sX_EduPJbEsMYXjUQ" name="eAllContainments" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj2sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi68X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi7MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi7cX_EduPJbEsMYXjUQ" name="eAllOperations" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj3MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi7sX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi78X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi8MX_EduPJbEsMYXjUQ" name="eAllStructuralFeatures" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj3sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi8cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi8sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi88X_EduPJbEsMYXjUQ" name="eAllSuperTypes" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj4MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi9MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi9cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi9sX_EduPJbEsMYXjUQ" name="eIDAttribute" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj4sX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi98X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi-MX_EduPJbEsMYXjUQ" name="eStructuralFeatures" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj5MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi-cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi-sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi-8X_EduPJbEsMYXjUQ" name="eGenericSuperTypes" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj5cX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWi_MX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWi_cX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWi_sX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi_8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjAMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjAcX_EduPJbEsMYXjUQ" name="eAllGenericSuperTypes" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj58X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjAsX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjA8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWjBMX_EduPJbEsMYXjUQ" name="isSuperTypeOf" visibility="public">
+ <ownedParameter xmi:id="_SeWjBcX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjBsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjB8X_EduPJbEsMYXjUQ" name="someClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjCMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjCcX_EduPJbEsMYXjUQ" name="getFeatureCount" visibility="public">
+ <ownedParameter xmi:id="_SeWjCsX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjC8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjDMX_EduPJbEsMYXjUQ" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWjDcX_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjDsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjD8X_EduPJbEsMYXjUQ" name="featureID" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjEMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjEcX_EduPJbEsMYXjUQ" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_SeWjEsX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjE8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjFMX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjFcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjFsX_EduPJbEsMYXjUQ" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWjF8X_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjGMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjGcX_EduPJbEsMYXjUQ" name="featureName" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjGsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjG8X_EduPJbEsMYXjUQ" name="EClassifier" isAbstract="true">
+ <eAnnotations xmi:id="_SeWjHMX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjHcX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjHsX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjH8X_EduPJbEsMYXjUQ" name="instanceClassName" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <eAnnotations xmi:id="_SeWjIMX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjIcX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjIsX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjI8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjJMX_EduPJbEsMYXjUQ" name="instanceClass" visibility="public" type="_SeWjM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjJcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjJsX_EduPJbEsMYXjUQ" name="defaultValue" visibility="public" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjJ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjKMX_EduPJbEsMYXjUQ" name="instanceTypeName" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <eAnnotations xmi:id="_SeWjKcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjKsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjK8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjLMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjLcX_EduPJbEsMYXjUQ" name="ePackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjb8X_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjLsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjL8X_EduPJbEsMYXjUQ" name="eTypeParameters" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjlMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjMMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjMcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_SeWjMsX_EduPJbEsMYXjUQ" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWjM8X_EduPJbEsMYXjUQ" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_SeWjNMX_EduPJbEsMYXjUQ" signature="_SeWkbsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWjNcX_EduPJbEsMYXjUQ" formal="_SeWkb8X_EduPJbEsMYXjUQ" actual="_SeWjMsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWjNsX_EduPJbEsMYXjUQ" name="isInstance" visibility="public">
+ <ownedParameter xmi:id="_SeWjN8X_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjOMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjOcX_EduPJbEsMYXjUQ" name="object" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjOsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjO8X_EduPJbEsMYXjUQ" name="getClassifierID" visibility="public">
+ <ownedParameter xmi:id="_SeWjPMX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjPcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjasX_EduPJbEsMYXjUQ" name="EDataType">
+ <generalization xmi:id="_SeWja8X_EduPJbEsMYXjUQ" general="_SeWjG8X_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjbMX_EduPJbEsMYXjUQ" name="serializable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjbcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWkDMX_EduPJbEsMYXjUQ" name="EEnum">
+ <eAnnotations xmi:id="_SeWkDcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWkDsX_EduPJbEsMYXjUQ" key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkD8X_EduPJbEsMYXjUQ" general="_SeWjasX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWkEMX_EduPJbEsMYXjUQ" name="eLiterals" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkLMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWkEcX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkEsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWkE8X_EduPJbEsMYXjUQ" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkFMX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkFcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkFsX_EduPJbEsMYXjUQ" name="name" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkF8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWkGMX_EduPJbEsMYXjUQ" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkGcX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkGsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkG8X_EduPJbEsMYXjUQ" name="value" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkHMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWkHcX_EduPJbEsMYXjUQ" name="getEEnumLiteralByLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkHsX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkH8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkIMX_EduPJbEsMYXjUQ" name="literal" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkIcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWkIsX_EduPJbEsMYXjUQ" name="EEnumLiteral">
+ <generalization xmi:id="_SeWkI8X_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWkJMX_EduPJbEsMYXjUQ" name="value" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkJcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkJsX_EduPJbEsMYXjUQ" name="instance" visibility="public" type="_SeWkWsX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkJ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkKMX_EduPJbEsMYXjUQ" name="literal" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkKcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkKsX_EduPJbEsMYXjUQ" name="eEnum" type="_SeWkDMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWkLMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkK8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjVMX_EduPJbEsMYXjUQ" name="EFactory">
+ <generalization xmi:id="_SeWjVcX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjVsX_EduPJbEsMYXjUQ" name="ePackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjbsX_EduPJbEsMYXjUQ"/>
+ <ownedOperation xmi:id="_SeWjV8X_EduPJbEsMYXjUQ" name="create" visibility="public">
+ <ownedParameter xmi:id="_SeWjWMX_EduPJbEsMYXjUQ" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjWcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjWsX_EduPJbEsMYXjUQ" name="eClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjW8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjXMX_EduPJbEsMYXjUQ" name="createFromString" visibility="public">
+ <ownedParameter xmi:id="_SeWjXcX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjXsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjX8X_EduPJbEsMYXjUQ" name="eDataType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjYMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjYcX_EduPJbEsMYXjUQ" name="literalValue" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjYsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjY8X_EduPJbEsMYXjUQ" name="convertToString" visibility="public">
+ <ownedParameter xmi:id="_SeWjZMX_EduPJbEsMYXjUQ" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjZcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjZsX_EduPJbEsMYXjUQ" name="eDataType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjZ8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjaMX_EduPJbEsMYXjUQ" name="instanceValue" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjacX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjdsX_EduPJbEsMYXjUQ" name="EGenericType">
+ <eAnnotations xmi:id="_SeWjd8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjeMX_EduPJbEsMYXjUQ" key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjecX_EduPJbEsMYXjUQ" general="_SeWijsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjesX_EduPJbEsMYXjUQ" name="eUpperBound" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjhsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWje8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjfMX_EduPJbEsMYXjUQ" name="eTypeArguments" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjiMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjfcX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjfsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjf8X_EduPJbEsMYXjUQ" name="eRawType" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWjisX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjgMX_EduPJbEsMYXjUQ" name="eLowerBound" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjjMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjgcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjgsX_EduPJbEsMYXjUQ" name="eTypeParameter" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjjsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjg8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjhMX_EduPJbEsMYXjUQ" name="eClassifier" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjkMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjhcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWihMX_EduPJbEsMYXjUQ" name="EModelElement" isAbstract="true">
+ <generalization xmi:id="_SeWihcX_EduPJbEsMYXjUQ" general="_SeWijsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWihsX_EduPJbEsMYXjUQ" name="eAnnotations" type="_SeWj6cX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkAcX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWih8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiiMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWiicX_EduPJbEsMYXjUQ" name="getEAnnotation" visibility="public">
+ <ownedParameter xmi:id="_SeWiisX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWii8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWijMX_EduPJbEsMYXjUQ" name="source" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWijcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWifsX_EduPJbEsMYXjUQ" name="ENamedElement" isAbstract="true">
+ <eAnnotations xmi:id="_SeWif8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWigMX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedName"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWigcX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWigsX_EduPJbEsMYXjUQ" name="name" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWig8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWijsX_EduPJbEsMYXjUQ" name="EObject">
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWij8X_EduPJbEsMYXjUQ" name="EEList_EObject">
+ <templateBinding xmi:id="_SeWikMX_EduPJbEsMYXjUQ" signature="_SeWkV8X_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWikcX_EduPJbEsMYXjUQ" formal="_SeWkWMX_EduPJbEsMYXjUQ" actual="_SeWijsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWiksX_EduPJbEsMYXjUQ" name="ETreeIterator_EObject">
+ <templateBinding xmi:id="_SeWik8X_EduPJbEsMYXjUQ" signature="_SeWkjsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWilMX_EduPJbEsMYXjUQ" formal="_SeWkj8X_EduPJbEsMYXjUQ" actual="_SeWijsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWilcX_EduPJbEsMYXjUQ" name="eClass" visibility="public">
+ <ownedParameter xmi:id="_SeWilsX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWil8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWimMX_EduPJbEsMYXjUQ" name="eIsProxy" visibility="public">
+ <ownedParameter xmi:id="_SeWimcX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWimsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWim8X_EduPJbEsMYXjUQ" name="eResource" visibility="public">
+ <ownedParameter xmi:id="_SeWinMX_EduPJbEsMYXjUQ" type="_SeWkgMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWincX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWinsX_EduPJbEsMYXjUQ" name="eContainer" visibility="public">
+ <ownedParameter xmi:id="_SeWin8X_EduPJbEsMYXjUQ" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWioMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiocX_EduPJbEsMYXjUQ" name="eContainingFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWiosX_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWio8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWipMX_EduPJbEsMYXjUQ" name="eContainmentFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWipcX_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWipsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWip8X_EduPJbEsMYXjUQ" name="eContents" visibility="public">
+ <ownedParameter xmi:id="_SeWiqMX_EduPJbEsMYXjUQ" type="_SeWij8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiqcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiqsX_EduPJbEsMYXjUQ" name="eAllContents" visibility="public">
+ <ownedParameter xmi:id="_SeWiq8X_EduPJbEsMYXjUQ" type="_SeWiksX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWirMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWircX_EduPJbEsMYXjUQ" name="eCrossReferences" visibility="public">
+ <ownedParameter xmi:id="_SeWirsX_EduPJbEsMYXjUQ" type="_SeWij8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWir8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWisMX_EduPJbEsMYXjUQ" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_SeWiscX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWissX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWis8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWitMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWitcX_EduPJbEsMYXjUQ" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_SeWitsX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWit8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiuMX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiucX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiusX_EduPJbEsMYXjUQ" name="resolve" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiu8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWivMX_EduPJbEsMYXjUQ" name="eSet" visibility="public">
+ <ownedParameter xmi:id="_SeWivcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWivsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiv8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiwMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiwcX_EduPJbEsMYXjUQ" name="newValue" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiwsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiw8X_EduPJbEsMYXjUQ" name="eIsSet" visibility="public">
+ <ownedParameter xmi:id="_SeWixMX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWixcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWixsX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWix8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiyMX_EduPJbEsMYXjUQ" name="eUnset" visibility="public">
+ <ownedParameter xmi:id="_SeWiycX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiysX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiy8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWizMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjmMX_EduPJbEsMYXjUQ" name="EOperation">
+ <eAnnotations xmi:id="_SeWjmcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjmsX_EduPJbEsMYXjUQ" key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjm8X_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjnMX_EduPJbEsMYXjUQ" name="eContainingClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjsMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjncX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjnsX_EduPJbEsMYXjUQ" name="eTypeParameters" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjscX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjn8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjoMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjocX_EduPJbEsMYXjUQ" name="eParameters" type="_SeWjs8X_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjt8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjosX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjo8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjpMX_EduPJbEsMYXjUQ" name="eExceptions" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjuMX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWjpcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjpsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjp8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjqMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjqcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjqsX_EduPJbEsMYXjUQ" name="eGenericExceptions" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjusX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWjq8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjrMX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjrcX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjrsX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjr8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjPsX_EduPJbEsMYXjUQ" name="EPackage">
+ <eAnnotations xmi:id="_SeWjP8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjQMX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjQcX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjQsX_EduPJbEsMYXjUQ" name="nsURI" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjQ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjRMX_EduPJbEsMYXjUQ" name="nsPrefix" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjRcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjRsX_EduPJbEsMYXjUQ" name="eFactoryInstance" type="_SeWjVMX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjbsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjR8X_EduPJbEsMYXjUQ" name="eClassifiers" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjb8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjSMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjScX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjSsX_EduPJbEsMYXjUQ" name="eSubpackages" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjcMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjS8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjTMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjTcX_EduPJbEsMYXjUQ" name="eSuperPackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjcMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjTsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWjT8X_EduPJbEsMYXjUQ" name="getEClassifier" visibility="public">
+ <ownedParameter xmi:id="_SeWjUMX_EduPJbEsMYXjUQ" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjUcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjUsX_EduPJbEsMYXjUQ" name="name" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjU8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjs8X_EduPJbEsMYXjUQ" name="EParameter">
+ <generalization xmi:id="_SeWjtMX_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjtcX_EduPJbEsMYXjUQ" name="eOperation" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjt8X_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjtsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjvsX_EduPJbEsMYXjUQ" name="EReference">
+ <eAnnotations xmi:id="_SeWjv8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjwMX_EduPJbEsMYXjUQ" key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjwcX_EduPJbEsMYXjUQ" general="_SeWiSMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjwsX_EduPJbEsMYXjUQ" name="containment" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjw8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjxMX_EduPJbEsMYXjUQ" name="container" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjxcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjxsX_EduPJbEsMYXjUQ" name="resolveProxies" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjx8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjyMX_EduPJbEsMYXjUQ" name="eOpposite" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjzsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjycX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjysX_EduPJbEsMYXjUQ" name="eReferenceType" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj0MX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjy8X_EduPJbEsMYXjUQ" name="eKeys" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWj0sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjzMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjzcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWj-sX_EduPJbEsMYXjUQ" name="EStringToStringMapEntry">
+ <ownedAttribute xmi:id="_SeWj-8X_EduPJbEsMYXjUQ" name="key" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj_MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj_cX_EduPJbEsMYXjUQ" name="value" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj_sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiSMX_EduPJbEsMYXjUQ" name="EStructuralFeature" isAbstract="true">
+ <generalization xmi:id="_SeWiScX_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiSsX_EduPJbEsMYXjUQ" name="eContainingClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWj5MX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiS8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiTMX_EduPJbEsMYXjUQ" name="changeable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiTcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiTsX_EduPJbEsMYXjUQ" name="volatile" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiT8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiUMX_EduPJbEsMYXjUQ" name="transient" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiUcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiUsX_EduPJbEsMYXjUQ" name="defaultValueLiteral" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiU8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiVMX_EduPJbEsMYXjUQ" name="defaultValue" visibility="public" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiVcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiVsX_EduPJbEsMYXjUQ" name="unsettable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiV8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiWMX_EduPJbEsMYXjUQ" name="derived" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiWcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_SeWiWsX_EduPJbEsMYXjUQ" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWiW8X_EduPJbEsMYXjUQ" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_SeWiXMX_EduPJbEsMYXjUQ" signature="_SeWkbsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWiXcX_EduPJbEsMYXjUQ" formal="_SeWkb8X_EduPJbEsMYXjUQ" actual="_SeWiWsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWiXsX_EduPJbEsMYXjUQ" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_SeWiX8X_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiYMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiYcX_EduPJbEsMYXjUQ" name="getContainerClass" visibility="public">
+ <ownedParameter xmi:id="_SeWiYsX_EduPJbEsMYXjUQ" type="_SeWiW8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiY8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiZMX_EduPJbEsMYXjUQ" name="ETypedElement" isAbstract="true">
+ <eAnnotations xmi:id="_SeWiZcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiZsX_EduPJbEsMYXjUQ" key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWiZ8X_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiaMX_EduPJbEsMYXjUQ" name="ordered" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiacX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiasX_EduPJbEsMYXjUQ" name="unique" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWia8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWibMX_EduPJbEsMYXjUQ" name="lowerBound" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWibcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWibsX_EduPJbEsMYXjUQ" name="upperBound" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWib8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWicMX_EduPJbEsMYXjUQ" name="many" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiccX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWicsX_EduPJbEsMYXjUQ" name="required" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWic8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWidMX_EduPJbEsMYXjUQ" name="eType" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkBsX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWidcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWidsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWid8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWieMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiecX_EduPJbEsMYXjUQ" name="eGenericType" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkCMX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWiesX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWie8X_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWifMX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWifcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjccX_EduPJbEsMYXjUQ" name="ETypeParameter">
+ <generalization xmi:id="_SeWjcsX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjc8X_EduPJbEsMYXjUQ" name="eBounds" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjksX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjdMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjdcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjbsX_EduPJbEsMYXjUQ" memberEnd="_SeWjVsX_EduPJbEsMYXjUQ _SeWjRsX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjb8X_EduPJbEsMYXjUQ" memberEnd="_SeWjR8X_EduPJbEsMYXjUQ _SeWjLcX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjcMX_EduPJbEsMYXjUQ" memberEnd="_SeWjSsX_EduPJbEsMYXjUQ _SeWjTcX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjhsX_EduPJbEsMYXjUQ" memberEnd="_SeWjesX_EduPJbEsMYXjUQ _SeWjh8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjh8X_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjhsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjiMX_EduPJbEsMYXjUQ" memberEnd="_SeWjfMX_EduPJbEsMYXjUQ _SeWjicX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjicX_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjiMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjisX_EduPJbEsMYXjUQ" memberEnd="_SeWjf8X_EduPJbEsMYXjUQ _SeWji8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWji8X_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjisX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjjMX_EduPJbEsMYXjUQ" memberEnd="_SeWjgMX_EduPJbEsMYXjUQ _SeWjjcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjjcX_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjjMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjjsX_EduPJbEsMYXjUQ" memberEnd="_SeWjgsX_EduPJbEsMYXjUQ _SeWjj8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjj8X_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjjsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjkMX_EduPJbEsMYXjUQ" memberEnd="_SeWjhMX_EduPJbEsMYXjUQ _SeWjkcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjkcX_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjkMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjksX_EduPJbEsMYXjUQ" memberEnd="_SeWjc8X_EduPJbEsMYXjUQ _SeWjk8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjk8X_EduPJbEsMYXjUQ" type="_SeWjccX_EduPJbEsMYXjUQ" association="_SeWjksX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjlMX_EduPJbEsMYXjUQ" memberEnd="_SeWjL8X_EduPJbEsMYXjUQ _SeWjlcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjlcX_EduPJbEsMYXjUQ" type="_SeWjG8X_EduPJbEsMYXjUQ" association="_SeWjlMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjlsX_EduPJbEsMYXjUQ" memberEnd="_SeWi1cX_EduPJbEsMYXjUQ _SeWjl8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjl8X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWjlsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjsMX_EduPJbEsMYXjUQ" memberEnd="_SeWi28X_EduPJbEsMYXjUQ _SeWjnMX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjscX_EduPJbEsMYXjUQ" memberEnd="_SeWjnsX_EduPJbEsMYXjUQ _SeWjssX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjssX_EduPJbEsMYXjUQ" type="_SeWjmMX_EduPJbEsMYXjUQ" association="_SeWjscX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjt8X_EduPJbEsMYXjUQ" memberEnd="_SeWjocX_EduPJbEsMYXjUQ _SeWjtcX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjuMX_EduPJbEsMYXjUQ" memberEnd="_SeWjpMX_EduPJbEsMYXjUQ _SeWjucX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjucX_EduPJbEsMYXjUQ" type="_SeWjmMX_EduPJbEsMYXjUQ" association="_SeWjuMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjusX_EduPJbEsMYXjUQ" memberEnd="_SeWjqsX_EduPJbEsMYXjUQ _SeWju8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWju8X_EduPJbEsMYXjUQ" type="_SeWjmMX_EduPJbEsMYXjUQ" association="_SeWjusX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjvMX_EduPJbEsMYXjUQ" memberEnd="_SeWi3sX_EduPJbEsMYXjUQ _SeWjvcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjvcX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWjvMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjzsX_EduPJbEsMYXjUQ" memberEnd="_SeWjyMX_EduPJbEsMYXjUQ _SeWjz8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjz8X_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" association="_SeWjzsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj0MX_EduPJbEsMYXjUQ" memberEnd="_SeWjysX_EduPJbEsMYXjUQ _SeWj0cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj0cX_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" association="_SeWj0MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj0sX_EduPJbEsMYXjUQ" memberEnd="_SeWjy8X_EduPJbEsMYXjUQ _SeWj08X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj08X_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" association="_SeWj0sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj1MX_EduPJbEsMYXjUQ" memberEnd="_SeWi4cX_EduPJbEsMYXjUQ _SeWj1cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj1cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj1MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj1sX_EduPJbEsMYXjUQ" memberEnd="_SeWi5MX_EduPJbEsMYXjUQ _SeWj18X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj18X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj1sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj2MX_EduPJbEsMYXjUQ" memberEnd="_SeWi58X_EduPJbEsMYXjUQ _SeWj2cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj2cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj2MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj2sX_EduPJbEsMYXjUQ" memberEnd="_SeWi6sX_EduPJbEsMYXjUQ _SeWj28X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj28X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj2sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj3MX_EduPJbEsMYXjUQ" memberEnd="_SeWi7cX_EduPJbEsMYXjUQ _SeWj3cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj3cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj3MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj3sX_EduPJbEsMYXjUQ" memberEnd="_SeWi8MX_EduPJbEsMYXjUQ _SeWj38X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj38X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj3sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj4MX_EduPJbEsMYXjUQ" memberEnd="_SeWi88X_EduPJbEsMYXjUQ _SeWj4cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj4cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj4MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj4sX_EduPJbEsMYXjUQ" memberEnd="_SeWi9sX_EduPJbEsMYXjUQ _SeWj48X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj48X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj4sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj5MX_EduPJbEsMYXjUQ" memberEnd="_SeWi-MX_EduPJbEsMYXjUQ _SeWiSsX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj5cX_EduPJbEsMYXjUQ" memberEnd="_SeWi-8X_EduPJbEsMYXjUQ _SeWj5sX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj5sX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj5cX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj58X_EduPJbEsMYXjUQ" memberEnd="_SeWjAcX_EduPJbEsMYXjUQ _SeWj6MX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj6MX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj58X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj_8X_EduPJbEsMYXjUQ" memberEnd="_SeWj78X_EduPJbEsMYXjUQ _SeWkAMX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkAMX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" association="_SeWj_8X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkAcX_EduPJbEsMYXjUQ" memberEnd="_SeWihsX_EduPJbEsMYXjUQ _SeWj8sX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkAsX_EduPJbEsMYXjUQ" memberEnd="_SeWj9MX_EduPJbEsMYXjUQ _SeWkA8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkA8X_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" association="_SeWkAsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkBMX_EduPJbEsMYXjUQ" memberEnd="_SeWj98X_EduPJbEsMYXjUQ _SeWkBcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkBcX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" association="_SeWkBMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkBsX_EduPJbEsMYXjUQ" memberEnd="_SeWidMX_EduPJbEsMYXjUQ _SeWkB8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkB8X_EduPJbEsMYXjUQ" type="_SeWiZMX_EduPJbEsMYXjUQ" association="_SeWkBsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkCMX_EduPJbEsMYXjUQ" memberEnd="_SeWiecX_EduPJbEsMYXjUQ _SeWkCcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkCcX_EduPJbEsMYXjUQ" type="_SeWiZMX_EduPJbEsMYXjUQ" association="_SeWkCMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkCsX_EduPJbEsMYXjUQ" memberEnd="_SeWiR8X_EduPJbEsMYXjUQ _SeWkC8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkC8X_EduPJbEsMYXjUQ" type="_SeWiQcX_EduPJbEsMYXjUQ" association="_SeWkCsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkLMX_EduPJbEsMYXjUQ" memberEnd="_SeWkEMX_EduPJbEsMYXjUQ _SeWkKsX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkLcX_EduPJbEsMYXjUQ" name="EBigDecimal">
+ <eAnnotations xmi:id="_SeWkLsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkL8X_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkMMX_EduPJbEsMYXjUQ" name="EBigInteger">
+ <eAnnotations xmi:id="_SeWkMcX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkMsX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkM8X_EduPJbEsMYXjUQ" name="EBoolean">
+ <eAnnotations xmi:id="_SeWkNMX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkNcX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkNsX_EduPJbEsMYXjUQ" name="EBooleanObject">
+ <eAnnotations xmi:id="_SeWkN8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkOMX_EduPJbEsMYXjUQ" key="name" value="EBoolean:Object"/>
+ <details xmi:id="_SeWkOcX_EduPJbEsMYXjUQ" key="baseType" value="EBoolean"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkOsX_EduPJbEsMYXjUQ" general="_SeWkM8X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkO8X_EduPJbEsMYXjUQ" name="EByte">
+ <eAnnotations xmi:id="_SeWkPMX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkPcX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkPsX_EduPJbEsMYXjUQ" name="EByteArray">
+ <eAnnotations xmi:id="_SeWkP8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkQMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkQcX_EduPJbEsMYXjUQ" name="EByteObject">
+ <eAnnotations xmi:id="_SeWkQsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkQ8X_EduPJbEsMYXjUQ" key="name" value="EByte:Object"/>
+ <details xmi:id="_SeWkRMX_EduPJbEsMYXjUQ" key="baseType" value="EByte"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkRcX_EduPJbEsMYXjUQ" general="_SeWkO8X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkRsX_EduPJbEsMYXjUQ" name="EChar"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkR8X_EduPJbEsMYXjUQ" name="ECharacterObject">
+ <eAnnotations xmi:id="_SeWkSMX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkScX_EduPJbEsMYXjUQ" key="name" value="EChar:Object"/>
+ <details xmi:id="_SeWkSsX_EduPJbEsMYXjUQ" key="baseType" value="EChar"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkS8X_EduPJbEsMYXjUQ" general="_SeWkRsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkTMX_EduPJbEsMYXjUQ" name="EDate"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkTcX_EduPJbEsMYXjUQ" name="EDiagnosticChain"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkTsX_EduPJbEsMYXjUQ" name="EDouble">
+ <eAnnotations xmi:id="_SeWkT8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkUMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkUcX_EduPJbEsMYXjUQ" name="EDoubleObject">
+ <eAnnotations xmi:id="_SeWkUsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkU8X_EduPJbEsMYXjUQ" key="name" value="EDouble:Object"/>
+ <details xmi:id="_SeWkVMX_EduPJbEsMYXjUQ" key="baseType" value="EDouble"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkVcX_EduPJbEsMYXjUQ" general="_SeWkTsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkVsX_EduPJbEsMYXjUQ" name="EEList">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWkV8X_EduPJbEsMYXjUQ" parameter="_SeWkWMX_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkWMX_EduPJbEsMYXjUQ" parameteredElement="_SeWkWcX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkWcX_EduPJbEsMYXjUQ" name="E" templateParameter="_SeWkWMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkWsX_EduPJbEsMYXjUQ" name="EEnumerator"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkW8X_EduPJbEsMYXjUQ" name="EFeatureMap"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkXMX_EduPJbEsMYXjUQ" name="EFeatureMapEntry"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkXcX_EduPJbEsMYXjUQ" name="EFloat">
+ <eAnnotations xmi:id="_SeWkXsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkX8X_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkYMX_EduPJbEsMYXjUQ" name="EFloatObject">
+ <eAnnotations xmi:id="_SeWkYcX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkYsX_EduPJbEsMYXjUQ" key="name" value="EFloat:Object"/>
+ <details xmi:id="_SeWkY8X_EduPJbEsMYXjUQ" key="baseType" value="EFloat"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkZMX_EduPJbEsMYXjUQ" general="_SeWkXcX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkZcX_EduPJbEsMYXjUQ" name="EInt">
+ <eAnnotations xmi:id="_SeWkZsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkZ8X_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkaMX_EduPJbEsMYXjUQ" name="EIntegerObject">
+ <eAnnotations xmi:id="_SeWkacX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkasX_EduPJbEsMYXjUQ" key="name" value="EInt:Object"/>
+ <details xmi:id="_SeWka8X_EduPJbEsMYXjUQ" key="baseType" value="EInt"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkbMX_EduPJbEsMYXjUQ" general="_SeWkZcX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkbcX_EduPJbEsMYXjUQ" name="EJavaClass">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWkbsX_EduPJbEsMYXjUQ" parameter="_SeWkb8X_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkb8X_EduPJbEsMYXjUQ" parameteredElement="_SeWkcMX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkcMX_EduPJbEsMYXjUQ" name="T" templateParameter="_SeWkb8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkccX_EduPJbEsMYXjUQ" name="EJavaObject"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkcsX_EduPJbEsMYXjUQ" name="ELong">
+ <eAnnotations xmi:id="_SeWkc8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkdMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkdcX_EduPJbEsMYXjUQ" name="ELongObject">
+ <eAnnotations xmi:id="_SeWkdsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkd8X_EduPJbEsMYXjUQ" key="name" value="ELong:Object"/>
+ <details xmi:id="_SeWkeMX_EduPJbEsMYXjUQ" key="baseType" value="ELong"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkecX_EduPJbEsMYXjUQ" general="_SeWkcsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkesX_EduPJbEsMYXjUQ" name="EMap">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWke8X_EduPJbEsMYXjUQ" parameter="_SeWkfMX_EduPJbEsMYXjUQ _SeWkfsX_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkfMX_EduPJbEsMYXjUQ" parameteredElement="_SeWkfcX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkfcX_EduPJbEsMYXjUQ" name="K" templateParameter="_SeWkfMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkfsX_EduPJbEsMYXjUQ" parameteredElement="_SeWkf8X_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkf8X_EduPJbEsMYXjUQ" name="V" templateParameter="_SeWkfsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkgMX_EduPJbEsMYXjUQ" name="EResource"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkgcX_EduPJbEsMYXjUQ" name="EResourceSet"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkgsX_EduPJbEsMYXjUQ" name="EShort">
+ <eAnnotations xmi:id="_SeWkg8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkhMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkhcX_EduPJbEsMYXjUQ" name="EShortObject">
+ <eAnnotations xmi:id="_SeWkhsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkh8X_EduPJbEsMYXjUQ" key="name" value="EShort:Object"/>
+ <details xmi:id="_SeWkiMX_EduPJbEsMYXjUQ" key="baseType" value="EShort"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkicX_EduPJbEsMYXjUQ" general="_SeWkgsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkisX_EduPJbEsMYXjUQ" name="EString">
+ <eAnnotations xmi:id="_SeWki8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkjMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkjcX_EduPJbEsMYXjUQ" name="ETreeIterator">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWkjsX_EduPJbEsMYXjUQ" parameter="_SeWkj8X_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkj8X_EduPJbEsMYXjUQ" parameteredElement="_SeWkkMX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkkMX_EduPJbEsMYXjUQ" name="E" templateParameter="_SeWkj8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <profileApplication xmi:id="_SeWkkcX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWkksX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_uuJ5sMYcEduPJbEsMYXjUQ" base_Package="_SeWiQMX_EduPJbEsMYXjUQ" packageName="ecore" nsPrefix="ecore" nsURI="http://www.eclipse.org/emf/2002/Ecore"/>
+ <Ecore:EAttribute xmi:id="_uuJ5tMYcEduPJbEsMYXjUQ" base_Property="_SeWiRcX_EduPJbEsMYXjUQ" attributeName="iD"/>
+ <Ecore:EReference xmi:id="_uuJ5tcYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWiR8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlqsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWiSsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EAttribute xmi:id="_uumlq8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWiVMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuvvkMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWicMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uvfWcMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWicsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uvfWccYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWidMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uvfWcsYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWiecX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0qsYcEduPJbEsMYXjUQ" base_Property="_SeWihsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5tsYcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWi1cX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5t8YcEduPJbEsMYXjUQ" base_Property="_SeWi28X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5uMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi3sX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5ucYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi4cX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5usYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi5MX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDoMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi58X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDocYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi6sX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDosYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi7cX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDo8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi8MX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDpMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi88X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDpcYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi9sX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuTDpsYcEduPJbEsMYXjUQ" base_Property="_SeWi-MX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuTDp8YcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWi-8X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuTDqMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjAcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDqcYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjH8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDqsYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjJMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDq8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjJsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDrMYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjKMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0oMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjLcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlpMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjRsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlpcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjTcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0pMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjVsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uvfWc8YcEduPJbEsMYXjUQ" base_Property="_SeWjc8X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0pcYcEduPJbEsMYXjUQ" base_Property="_SeWjesX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0psYcEduPJbEsMYXjUQ" base_Property="_SeWjfMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0p8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjf8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0qMYcEduPJbEsMYXjUQ" base_Property="_SeWjgMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0qcYcEduPJbEsMYXjUQ" base_Property="_SeWjgsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumloMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjnMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlocYcEduPJbEsMYXjUQ" base_Property="_SeWjocX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlosYcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjpMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlo8YcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjqsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlpsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjtcX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EAttribute xmi:id="_uumlp8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjxMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlqMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjysX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5scYcEduPJbEsMYXjUQ" base_Property="_SeWj78X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5ssYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWj8sX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5s8YcEduPJbEsMYXjUQ" base_Property="_SeWj9MX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_uumlqcYcEduPJbEsMYXjUQ" instanceClassName="java.util.Map$Entry" base_Class="_SeWj-sX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0ocYcEduPJbEsMYXjUQ" base_Property="_SeWkEMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EAttribute xmi:id="_uuc0osYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWkJsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0o8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWkKsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EDataType xmi:id="_uvpHcMYcEduPJbEsMYXjUQ" instanceClassName="java.math.BigDecimal" base_PrimitiveType="_SeWkLcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHccYcEduPJbEsMYXjUQ" instanceClassName="java.math.BigInteger" base_PrimitiveType="_SeWkMMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHcsYcEduPJbEsMYXjUQ" instanceClassName="boolean" base_PrimitiveType="_SeWkM8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHc8YcEduPJbEsMYXjUQ" xmlName="EBoolean:Object" instanceClassName="java.lang.Boolean" base_PrimitiveType="_SeWkNsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHdMYcEduPJbEsMYXjUQ" instanceClassName="byte" base_PrimitiveType="_SeWkO8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHdcYcEduPJbEsMYXjUQ" instanceClassName="byte[]" base_PrimitiveType="_SeWkPsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHdsYcEduPJbEsMYXjUQ" xmlName="EByte:Object" instanceClassName="java.lang.Byte" base_PrimitiveType="_SeWkQcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHd8YcEduPJbEsMYXjUQ" instanceClassName="char" base_PrimitiveType="_SeWkRsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHeMYcEduPJbEsMYXjUQ" xmlName="EChar:Object" instanceClassName="java.lang.Character" base_PrimitiveType="_SeWkR8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHecYcEduPJbEsMYXjUQ" instanceClassName="java.util.Date" base_PrimitiveType="_SeWkTMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHesYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain" base_PrimitiveType="_SeWkTcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHe8YcEduPJbEsMYXjUQ" instanceClassName="double" base_PrimitiveType="_SeWkTsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHfMYcEduPJbEsMYXjUQ" xmlName="EDouble:Object" instanceClassName="java.lang.Double" base_PrimitiveType="_SeWkUcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHfcYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.EList" base_PrimitiveType="_SeWkVsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHfsYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.Enumerator" base_PrimitiveType="_SeWkWsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHf8YcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap" base_PrimitiveType="_SeWkW8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHgMYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry" base_PrimitiveType="_SeWkXMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHgcYcEduPJbEsMYXjUQ" instanceClassName="float" base_PrimitiveType="_SeWkXcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHgsYcEduPJbEsMYXjUQ" xmlName="EFloat:Object" instanceClassName="java.lang.Float" base_PrimitiveType="_SeWkYMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4cMYcEduPJbEsMYXjUQ" instanceClassName="int" base_PrimitiveType="_SeWkZcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4ccYcEduPJbEsMYXjUQ" xmlName="EInt:Object" instanceClassName="java.lang.Integer" base_PrimitiveType="_SeWkaMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4csYcEduPJbEsMYXjUQ" instanceClassName="java.lang.Class" base_PrimitiveType="_SeWkbcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4c8YcEduPJbEsMYXjUQ" instanceClassName="java.lang.Object" base_PrimitiveType="_SeWkccX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4dMYcEduPJbEsMYXjUQ" instanceClassName="long" base_PrimitiveType="_SeWkcsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4dcYcEduPJbEsMYXjUQ" xmlName="ELong:Object" instanceClassName="java.lang.Long" base_PrimitiveType="_SeWkdcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4dsYcEduPJbEsMYXjUQ" instanceClassName="java.util.Map" base_PrimitiveType="_SeWkesX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4d8YcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.resource.Resource" base_PrimitiveType="_SeWkgMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4eMYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet" base_PrimitiveType="_SeWkgcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4ecYcEduPJbEsMYXjUQ" instanceClassName="short" base_PrimitiveType="_SeWkgsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4esYcEduPJbEsMYXjUQ" xmlName="EShort:Object" instanceClassName="java.lang.Short" base_PrimitiveType="_SeWkhcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4e8YcEduPJbEsMYXjUQ" instanceClassName="java.lang.String" base_PrimitiveType="_SeWkisX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4fMYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.TreeIterator" base_PrimitiveType="_SeWkjcX_EduPJbEsMYXjUQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml
new file mode 100644
index 0000000000..7c6f83b9d3
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml
@@ -0,0 +1,4818 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_z3j3UBZaEdqs4ZsykdgStg" name="InfrastructureLibrary">
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FFCAA00D1" name="Core">
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FFCB502E0" name="Abstractions">
+ <packageImport xmi:id="_3ADC7B74022D3DEE2BE80333" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA002E901AD" name="Ownerships">
+ <packageImport xmi:id="_3ADC7B74022D3DF78BD10282" importedPackage="_3ADC7B74022D3DF78B7503C0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CADCAEE0250" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rMSPwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADCAEE0250">
+ <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rMlxwxTaEdqZu-3Jy1-uYg" name="not_own_self" constrainedElement="_3ADC7B74022D3CADCAEE0250">
+ <ownedComment xmi:id="_rMcAwxTaEdqZu-3Jy1-uYg" annotatedElement="_rMlxwxTaEdqZu-3Jy1-uYg">
+ <body>An element may not directly or indirectly own itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMlxxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allOwnedElements()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rMu7sxTaEdqZu-3Jy1-uYg" name="has_owner" constrainedElement="_3ADC7B74022D3CADCAEE0250">
+ <ownedComment xmi:id="_rMlxyBTaEdqZu-3Jy1-uYg" annotatedElement="_rMu7sxTaEdqZu-3Jy1-uYg">
+ <body>Elements that must be owned must have an owner.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMu7tBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.mustBeOwned() implies owner->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADCD85009B" name="ownedElement" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="_3ADC7B74022D3CADCD8300C0">
+ <ownedComment xmi:id="_rNLnqRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADCD85009B">
+ <body>The Elements owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rNeikxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rNeikhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADCD8500A5" name="owner" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CADCD8300C0">
+ <ownedComment xmi:id="_rOE_gRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADCD8500A5">
+ <body>The Element that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rOOwgxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rOOwghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB1D63A01EB" name="ownedComment" type="_3ADC7B74022D3CAC070A03AB" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CB1D639015E">
+ <ownedComment xmi:id="_rXxHCxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB1D63A01EB">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXxHDxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXxHDhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106A8400E6" name="allOwnedElements" isQuery="true" bodyCondition="_rMu7vBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rMu7uBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106A8400E6">
+ <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rMu7vBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106A8400E6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rM4ssBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rMu7uxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CADCAEE0250" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbH_oRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbH_oBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106AD00153" name="mustBeOwned" isQuery="true" bodyCondition="_rNLnoxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rM4stRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106AD00153">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rNLnoxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106AD00153">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rNLnpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rNLnohTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CADCD8300C0" name="A_ownedElement_owner" memberEnd="_3ADC7B74022D3CADCD85009B _3ADC7B74022D3CADCD8500A5"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB1D639015E" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D3CB1D63A01EB _3ADC7B74022D3CB1D63A020A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB1D63A020A" name="owningElement" type="_3ADC7B74022D3CADCAEE0250" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CB1D639015E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXxHEhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXxHERTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA002FD0120" name="Namespaces">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A4350048" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0071C02FD" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_rRNMBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0071C02FD">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRgG8xTaEdqZu-3Jy1-uYg" name="has_no_qualified_name" constrainedElement="_3ADC7B74022D3CA0071C02FD">
+ <ownedComment xmi:id="_rRW9ARTaEdqZu-3Jy1-uYg" annotatedElement="_rRgG8xTaEdqZu-3Jy1-uYg">
+ <body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRgG9BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rRgG_BTaEdqZu-3Jy1-uYg" name="has_qualified_name" constrainedElement="_3ADC7B74022D3CA0071C02FD">
+ <ownedComment xmi:id="_rRgG-BTaEdqZu-3Jy1-uYg" annotatedElement="_rRgG_BTaEdqZu-3Jy1-uYg">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRgG_RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA; self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CADD38B00D4" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0080E03C3" name="name" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rR8y5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0080E03C3">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSGj4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSGj4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA008400375" name="qualifiedName" type="_3ADC7B74022D3CA010B103C3" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_rSGj5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA008400375">
+ <body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSPt0xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSPt0hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA008A2036C" name="namespace" type="_3ADC7B74022D3CA0072700FA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA008A20037">
+ <ownedComment xmi:id="_rSsZxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA008A2036C">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rS2KwhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rS2KwRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10644F034E" name="allNamespaces" isQuery="true" bodyCondition="_rRp38xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRgHARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10644F034E">
+ <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRp38xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10644F034E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRp39BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRp38hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0072700FA" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbRwoRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbRwoBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1064C70329" name="isDistinguishableFrom" isQuery="true" bodyCondition="_rRp3_hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRp3-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1064C70329">
+ <body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRp3_hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1064C70329">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRp3_xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRp3-xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C0090" name="n" type="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1064F402E7" name="ns" type="_3ADC7B74022D3CA0072700FA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10653C0010" name="separator" isQuery="true" bodyCondition="_rRzB4xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRp4AxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10653C0010">
+ <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRzB4xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10653C0010">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRzB5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = '::'</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRzB4hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1065EF023E" name="qualifiedName" isQuery="true" bodyCondition="_rRzB7BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRzB6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1065EF023E">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRzB7BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1065EF023E _3ADC7B74022D3CA008400375">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rR8y4BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRzB6xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0072700FA" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_rSPt1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0072700FA">
+ <body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rSZe2BTaEdqZu-3Jy1-uYg" name="members_distinguishable" constrainedElement="_3ADC7B74022D3CA0072700FA">
+ <ownedComment xmi:id="_rSZe1BTaEdqZu-3Jy1-uYg" annotatedElement="_rSZe2BTaEdqZu-3Jy1-uYg">
+ <body>All the members of a Namespace are distinguishable within it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSZe2RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>membersAreDistinguishable()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CA00777024A" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA008A20358" name="ownedMember" type="_3ADC7B74022D3CA0071C02FD" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B _3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3CA008A20037">
+ <ownedComment xmi:id="_rSjP2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA008A20358">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSsZwxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSsZwhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0098401B9" name="member" type="_3ADC7B74022D3CA0071C02FD" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CA009830275">
+ <ownedComment xmi:id="_rS2KxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0098401B9">
+ <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rS2KyxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rS2KyhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1068D4021B" name="getNamesOfMember" isQuery="true" bodyCondition="_rSZe4hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rSZe3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1068D4021B">
+ <body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. Those semantics are specified by overriding the getNamesOfMember operation. The specification here simply returns a set containing a single name, or the empty set if no name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rSZe4hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1068D4021B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSZe4xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if member->includes(element) then Set{}->including(element.name) else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rSZe4BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbRwoxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbRwohTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1068FF0064" name="element" type="_3ADC7B74022D3CA0071C02FD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106939005E" name="membersAreDistinguishable" isQuery="true" bodyCondition="_rSjP1BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rSjP0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106939005E">
+ <body>The Boolean query membersAreDistinguishable() determines whether all of the namespaces members are distinguishable within it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rSjP1BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106939005E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSjP1RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.member->forAll( memb |&#xA;self.member->excluding(memb)->forAll(other |&#xA;memb.isDistinguishableFrom(other, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rSjP0xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA008A20037" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D3CA008A20358 _3ADC7B74022D3CA008A2036C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA009830275" name="A_member_namespace" memberEnd="_3ADC7B74022D3CA0098401B9 _3ADC7B74022D3CA0098401CD">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA0098401CD" type="_3ADC7B74022D3CA0072700FA" association="_3ADC7B74022D3CA009830275">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bqZIkVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bqZIkFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA003360013" name="Classifiers">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3270343" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packageImport xmi:id="_h9WTwD9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A2A018F" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rS_7zBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A2A018F">
+ <body>A classifier is a classification of instances - it describes a set of instances that have features in common.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA00B0C03CF" general="_3ADC7B74022D3CA0072700FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA00B92018D" name="feature" type="_3ADC7B74022D3CA00A3900A0" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3CA00B91036C">
+ <ownedComment xmi:id="_rTS2vRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00B92018D">
+ <body>Specifies each feature defined in the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rTcAoxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rTcAohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E118E370051" name="allFeatures" isQuery="true" bodyCondition="_rTJFuBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rTJFtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E118E370051">
+ <body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rTJFuBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E118E370051">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rTJFuRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(oclIsKindOf(Feature))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rTJFtxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA00A3900A0" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbbhoRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbbhoBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A3900A0" name="Feature" isAbstract="true">
+ <ownedComment xmi:id="_rTJFvRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A3900A0">
+ <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD687034A" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA00B920183" name="featuringClassifier" type="_3ADC7B74022D3CA00A2A018F" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CA00B91036C">
+ <ownedComment xmi:id="_rTS2tRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00B920183">
+ <body>The Classifiers that have this Feature as a feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_izGigRikEdqJdcmiZMM1MA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_izGigBikEdqJdcmiZMM1MA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA00B91036C" name="A_feature_featuringClassifier" memberEnd="_3ADC7B74022D3CA00B92018D _3ADC7B74022D3CA00B920183"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA00EE60015" name="Expressions">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3C401C2" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00EFB03B9" name="OpaqueExpression">
+ <ownedComment xmi:id="_rTvipRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00EFB03B9">
+ <body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD243035D" general="_3ADC7B74022D3CA00F020323"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AE11E501C8" name="body" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rULnkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AE11E501C8">
+ <body>The text of the expression, possibly in multiple languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rULnlxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rULnlhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AE120C0319" name="language" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rUVYgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AE120C0319">
+ <body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUVYhRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rUVYhBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00F020323" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_rTviqhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00F020323">
+ <body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD247010A" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1402B00031" name="isComputable" isQuery="true" bodyCondition="_rT4skxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rTvirxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1402B00031">
+ <body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rT4skxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1402B00031">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rT4slBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rT4skhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1402DE0204" name="integerValue" isQuery="true" bodyCondition="_rT4snBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rT4smBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1402DE0204">
+ <body>The query integerValue() gives a single Integer value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rT4snBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1402DE0204">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rT4snRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rT4smxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14030E0325" name="booleanValue" isQuery="true" bodyCondition="_rUCdkRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rT4soRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14030E0325">
+ <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdkRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14030E0325">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdkhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdkBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1403380299" name="stringValue" isQuery="true" bodyCondition="_rUCdmhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUCdlhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1403380299">
+ <body>The query stringValue() gives a single String value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdmhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1403380299">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdmxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdmRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140370027C" name="unlimitedValue" isQuery="true" bodyCondition="_rUCdoxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUCdnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140370027C">
+ <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdoxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140370027C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdohTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1403A502BE" name="isNull" isQuery="true" bodyCondition="_rUCdrBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUCdqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1403A502BE">
+ <body>The query isNull() returns true when it can be computed that the value is null.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdrBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1403A502BE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdqxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E555C610097" name="Expression">
+ <ownedComment xmi:id="_rUCdsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555C610097">
+ <body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E555CF0029C" general="_3ADC7B74022D3CA00F020323"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E555C7702E8" name="symbol" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rULnhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555C7702E8">
+ <body>The symbol associated with the node in the expression tree.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4cgRYWgYEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4cgRYGgYEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E555CFE0288" name="operand" type="_3ADC7B74022D3CA00F020323" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3E555CFC002C">
+ <ownedComment xmi:id="_rULniRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555CFE0288">
+ <body>Specifies a sequence of operands.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rULnjRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rULnjBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E555CFC002C" name="A_operand_expression" memberEnd="_3ADC7B74022D3E555CFE0288 _3ADC7B74022D3E555CFE02CE">
+ <ownedEnd xmi:id="_3ADC7B74022D3E555CFE02CE" name="expression" type="_3ADC7B74022D3E555C610097" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3E555CFC002C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rULnkBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rULnjxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA023540016" name="MultiplicityExpressions">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A41C01AB" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packageImport xmi:id="_3ADC7B74022D3DF6636E0383" importedPackage="_3ADC7B74022D3DF65C06026F"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0237A0346" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_rUoTdxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0237A0346">
+ <body>MultiplicityElement supports the use of value specifications to define each bound of the multiplicity.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF78EA20170" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78F1C034C" name="lower" type="_3ADC7B74022D3CA010A4007B" isDerived="true">
+ <ownedComment xmi:id="_rU71gRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78F1C034C">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rU71hRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rU71hBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_GQsusCkbEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78F2B0290" name="upper" type="_3ADC7B74022D3DE6A93C0003" isDerived="true">
+ <ownedComment xmi:id="_rU71iRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78F2B0290">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rU71jRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rU71jBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J0Y34CkbEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D5391BE0239" name="upperValue" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3D5391BE00B3">
+ <ownedComment xmi:id="_rVE_ZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D5391BE0239">
+ <body>The specification of the upper bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_aBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_ZxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D5391E6031D" name="lowerValue" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3D5391E6015B">
+ <ownedComment xmi:id="_qAlgIBVzEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3D5391E6031D">
+ <body>The specification of the lower bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_chTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_cRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140A3102FA" name="lower" isQuery="true" bodyCondition="_rUyEehTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUyEdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140A3102FA">
+ <body>The derived lower attribute must equal the lowerBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUyEehTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140A3102FA _3ADC7B74022D3DF78F1C034C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUyEexTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUyEdxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140A6C013C" name="upper" isQuery="true" bodyCondition="_rUyEhRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUyEfxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140A6C013C">
+ <body>The derived upper attribute must equal the upperBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUyEhRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140A6C013C _3ADC7B74022D3DF78F2B0290">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUyEhhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUyEghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140B0801A5" name="lowerBound" isQuery="true" bodyCondition="_rU71cxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUyEihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140B0801A5">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rU71cxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140B0801A5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rU71dBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rU71chTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140B58039F" name="upperBound" isQuery="true" bodyCondition="_rU71fBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rU71eBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140B58039F">
+ <body>The query upperBound() returns the upper bound of the multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rU71fBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140B58039F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rU71fRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rU71exTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D5391BE00B3" name="A_upperValue_owningUpper" memberEnd="_3ADC7B74022D3D5391BE0239 _3ADC7B74022D3D5391BE024D">
+ <ownedEnd xmi:id="_3ADC7B74022D3D5391BE024D" name="owningUpper" type="_3ADC7B74022D3CA0237A0346" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3D5391BE00B3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_axTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_ahTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D5391E6015B" name="A_lowerValue_owningLower" memberEnd="_3ADC7B74022D3D5391E6031D _3ADC7B74022D3D5391E6033B">
+ <ownedEnd xmi:id="_3ADC7B74022D3D5391E6033B" name="owningLower" type="_3ADC7B74022D3CA0237A0346" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3D5391E6015B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_dRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_dBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA026E00397" name="BehavioralFeatures">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A2F2033D" importedPackage="_3ADC7B74022D3CA003360013"/>
+ <packageImport xmi:id="_3ADC7B74022D3E56169B00A7" importedPackage="_3ADC7B74022D3E554B4A028B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA026FB0381" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rVYhYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA026FB0381">
+ <body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA0277D00C1" general="_3ADC7B74022D3CA00A3900A0"/>
+ <generalization xmi:id="_3ADC7B74022D3CB1519A0173" general="_3ADC7B74022D3CA0072700FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA02BDB0015" name="parameter" type="_3ADC7B74022D3CA02702036E" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3CA02BDA01C2">
+ <ownedComment xmi:id="_rVhrYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA02BDB0015">
+ <body>Specifies the parameters of the BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVhrZRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVhrZBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105A8A018F" name="isDistinguishableFrom" isQuery="true" redefinedOperation="_3ADC7B74022D3E1064C70329" bodyCondition="_rVhrVRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rVYhZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105A8A018F">
+ <body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rVhrVRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105A8A018F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVhrVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if n.oclIsKindOf(BehavioralFeature)&#xA;then&#xA; if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()&#xA; then Set{}->including(self)->including(n)->isUnique( bf | bf.parameter->collect(type))&#xA; else true&#xA; endif&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rVhrUhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E105BC103DB" name="n" type="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E105C0900B4" name="ns" type="_3ADC7B74022D3CA0072700FA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA02702036E" name="Parameter" isAbstract="true">
+ <ownedComment xmi:id="_rVhrWhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA02702036E">
+ <body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA02ABF01C5" general="_3ADC7B74022D3CA0071C02FD"/>
+ <generalization xmi:id="_3ADC7B74022D3CA02F820073" general="_3ADC7B74022D3CA00A3100E5"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA02BDA01C2" name="A_parameter_behavioralFeature" memberEnd="_3ADC7B74022D3CA02BDB0015 _3ADC7B74022D3CA02BDB001F">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA02BDB001F" type="_3ADC7B74022D3CA026FB0381" association="_3ADC7B74022D3CA02BDA01C2">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVhrahTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVhraRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA0306302C6" name="Instances">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A40303D6" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packageImport xmi:id="_3ADC7B74022D3DE6A40C0270" importedPackage="_3ADC7B74022D3CAB68D00279"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0320C02DB" name="InstanceSpecification">
+ <ownedComment xmi:id="_rVrcXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0320C02DB">
+ <body>An instance specification is a model element that represents an instance in a modeled system.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rV0mQxTaEdqZu-3Jy1-uYg" name="slots_are_defined" constrainedElement="_3ADC7B74022D3CA0320C02DB">
+ <ownedComment xmi:id="_rVrcYxTaEdqZu-3Jy1-uYg" annotatedElement="_rV0mQxTaEdqZu-3Jy1-uYg">
+ <body>The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rV0mRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>slot->forAll(s |&#xA;classifier->exists(c | c.allFeatures()->includes(s.definingFeature))&#xA;)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rV0mTBTaEdqZu-3Jy1-uYg" name="no_duplicate_slots" constrainedElement="_3ADC7B74022D3CA0320C02DB">
+ <ownedComment xmi:id="_rV0mSBTaEdqZu-3Jy1-uYg" annotatedElement="_rV0mTBTaEdqZu-3Jy1-uYg">
+ <body>One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rV0mTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>classifier->forAll(c |&#xA;(c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)&#xA;)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CB5A10A02FF" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0333B03B3" name="slot" type="_3ADC7B74022D3CA032120334" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CA0333B0178">
+ <ownedComment xmi:id="_rV-XTRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0333B03B3">
+ <body>A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rV-XURTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rV-XUBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA034DC0362" name="classifier" type="_3ADC7B74022D3CA00A2A018F" association="_3ADC7B74022D3CA034DC00E1">
+ <ownedComment xmi:id="_rWIIQBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA034DC0362">
+ <body>The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIIRBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIQxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D11161F0240" name="specification" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3D11161E02D5">
+ <ownedComment xmi:id="_rWIIUhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D11161F0240">
+ <body>A specification of how to compute, derive, or construct the instance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIIVhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIVRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA032120334" name="Slot">
+ <ownedComment xmi:id="_rV-XQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA032120334">
+ <body>A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD59B02E6" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0333B03BD" name="owningInstance" type="_3ADC7B74022D3CA0320C02DB" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA0333B0178">
+ <ownedComment xmi:id="_rV-XUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0333B03BD">
+ <body>The instance specification that owns this slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rV-XVxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rV-XVhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CDA7CBE0189" name="value" type="_3ADC7B74022D3CA00F020323" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CDA7CBD025A">
+ <ownedComment xmi:id="_rWIISBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CDA7CBE0189">
+ <body>The value or values corresponding to the defining feature for the owning instance specification.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIITBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIISxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0353B0369" name="definingFeature" type="_3ADC7B74022D3CA00A410002" association="_3ADC7B74022D3CA0353B00FC">
+ <ownedComment xmi:id="_rWRSNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0353B0369">
+ <body>The structural feature that specifies the values that may be held by the slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWRSOxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWRSOhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D1115A7028B" name="InstanceValue">
+ <ownedComment xmi:id="_rV-XRxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D1115A7028B">
+ <body>An instance value is a value specification that identifies an instance.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D1116820335" general="_3ADC7B74022D3CA00F020323"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D1238B00178" name="instance" type="_3ADC7B74022D3CA0320C02DB" association="_3ADC7B74022D3D1238AE0111">
+ <ownedComment xmi:id="_rWIIXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D1238B00178">
+ <body>The instance that is the specified value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWRSMxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWRSMhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0333B0178" name="A_slot_owningInstance" memberEnd="_3ADC7B74022D3CA0333B03B3 _3ADC7B74022D3CA0333B03BD"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA034DC00E1" name="A_classifier_instanceSpecification" memberEnd="_3ADC7B74022D3CA034DC0362 _3ADC7B74022D3CA034DC0380">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA034DC0380" type="_3ADC7B74022D3CA0320C02DB" association="_3ADC7B74022D3CA034DC00E1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IjKZAVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IjKZAFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CDA7CBD025A" name="A_value_owningSlot" memberEnd="_3ADC7B74022D3CDA7CBE0189 _3ADC7B74022D3CDA7CBE0193">
+ <ownedEnd xmi:id="_3ADC7B74022D3CDA7CBE0193" name="owningSlot" type="_3ADC7B74022D3CA032120334" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CDA7CBD025A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIITxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIThTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D11161E02D5" name="A_specification_owningInstanceSpec" memberEnd="_3ADC7B74022D3D11161F0240 _3ADC7B74022D3D11161F025E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D11161F025E" name="owningInstanceSpec" type="_3ADC7B74022D3CA0320C02DB" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3D11161E02D5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIIWRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIWBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D1238AE0111" name="A_instance_instanceValue" memberEnd="_3ADC7B74022D3D1238B00178 _3ADC7B74022D3D1238B001C8">
+ <ownedEnd xmi:id="_3ADC7B74022D3D1238B001C8" type="_3ADC7B74022D3D1115A7028B" association="_3ADC7B74022D3D1238AE0111">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M_64MVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M_64MFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0353B00FC" name="A_definingFeature_slot" memberEnd="_3ADC7B74022D3CA0353B0369 _3ADC7B74022D3CA0353B037D">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA0353B037D" type="_3ADC7B74022D3CA032120334" association="_3ADC7B74022D3CA0353B00FC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PJwSgVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PJwSgFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA017500243" name="Redefinitions">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A44502D6" importedPackage="_3ADC7B74022D3DF65990033B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA019640144" name="RedefinableElement" isAbstract="true">
+ <ownedComment xmi:id="_rWbDNRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA019640144">
+ <body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rWbDPhTaEdqZu-3Jy1-uYg" name="redefinition_context_valid" constrainedElement="_3ADC7B74022D3CA019640144">
+ <ownedComment xmi:id="_rWbDOhTaEdqZu-3Jy1-uYg" annotatedElement="_rWbDPhTaEdqZu-3Jy1-uYg">
+ <body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWbDPxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rWbDRxTaEdqZu-3Jy1-uYg" name="redefinition_consistent" constrainedElement="_3ADC7B74022D3CA019640144">
+ <ownedComment xmi:id="_rWbDQxTaEdqZu-3Jy1-uYg" annotatedElement="_rWbDRxTaEdqZu-3Jy1-uYg">
+ <body>A redefining element must be consistent with each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWbDSBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CA01AB203CF" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA01B20019D" name="redefinedElement" type="_3ADC7B74022D3CA019640144" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CA01B1E012C">
+ <ownedComment xmi:id="_rWkNORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA01B20019D">
+ <body>The redefinable element that is being redefined by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWkNPRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWkNPBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADABFE01E3" name="redefinitionContext" type="_3ADC7B74022D3DF659AC02FF" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CADABFD03A5">
+ <ownedComment xmi:id="_rWt-JBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADABFE01E3">
+ <body>References the contexts that this element may be redefined from.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWt-KBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWt-JxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106C2C03A3" name="isConsistentWith" isQuery="true" precondition="_rWkNJxTaEdqZu-3Jy1-uYg" bodyCondition="_rWkNKRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rWkNIhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106C2C03A3">
+ <body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rWkNJxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E106C2C03A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWkNKBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rWkNKRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106C2C03A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWkNKhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rWkNJRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00D5" name="redefinee" type="_3ADC7B74022D3CA019640144"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106C8A007D" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_rWkNMxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rWkNLhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106C8A007D">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rWkNMxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106C8A007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWkNNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = redefinitionContext->exists(c | c.allParents()->includes (redefined.redefinitionContext)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rWkNMRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00D8" name="redefined" type="_3ADC7B74022D3CA019640144"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA01B1E012C" name="A_redefinedElement_redefinableElement" memberEnd="_3ADC7B74022D3CA01B20019D _3ADC7B74022D3CA01B20019F">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA01B20019F" type="_3ADC7B74022D3CA019640144" association="_3ADC7B74022D3CA01B1E012C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ka1DcVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ka1DcFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CADABFD03A5" name="A_redefinitionContext_redefinableElement" memberEnd="_3ADC7B74022D3CADABFE01E3 _3ADC7B74022D3CADABFE0215">
+ <ownedEnd xmi:id="_3ADC7B74022D3CADABFE0215" type="_3ADC7B74022D3CA019640144" association="_3ADC7B74022D3CADABFD03A5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lSaLsVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lSaLsFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA0118D00B2" name="Generalizations">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3F103E4" importedPackage="_3ADC7B74022D3D5142640297"/>
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3E90189" importedPackage="_3ADC7B74022D3DF65990033B"/>
+ <packageImport xmi:id="_3ADC7B74022D3E55640A0169" importedPackage="_3ADC7B74022D3E554B4A028B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA011B1028A" name="Generalization">
+ <ownedComment xmi:id="_5kpB0eDwEdqI1ohUEQYFdg" annotatedElement="_3ADC7B74022D3CA011B1028A">
+ <body>A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Each instance of the specific classifier is also an instance of the general classifier. Thus, the specific classifier indirectly has features of the more general classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA01274037B" general="_3ADC7B74022D3D51445B01FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0127D01D9" name="specific" type="_3ADC7B74022D3CA011BE01AD" subsettedProperty="_3ADC7B74022D3DE6A15F02E3 _3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA0127C032D">
+ <ownedComment xmi:id="_rXUbIBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0127D01D9">
+ <body>References the specializing classifier in the Generalization relationship. </body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXUbJBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXUbIxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA01299018A" name="general" type="_3ADC7B74022D3CA011BE01AD" subsettedProperty="_3ADC7B74022D3DE6A1830227" association="_3ADC7B74022D3CA012980355">
+ <ownedComment xmi:id="_rXdlAhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA01299018A">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXdlBhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXdlBRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA011BE01AD" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rW3vMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA011BE01AD">
+ <body>A classifier is a type and can own generalizations, thereby making it possible to define generalization relationships to&#xD;
+other classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E554FB4033A" general="_3ADC7B74022D3E554AF2005E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0127D01CF" name="generalization" type="_3ADC7B74022D3CA011B1028A" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CA0127C032D">
+ <ownedComment xmi:id="_rXUbGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0127D01CF">
+ <body>Specifies the Generalization relationships for this Classifier. These Generalizations navigate to more general classifiers in the generalization hierarchy.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXUbHhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXUbHRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65B8D0134" name="general" type="_3ADC7B74022D3CA011BE01AD" isDerived="true" association="_3ADC7B74022D3DF65B8A03C5">
+ <ownedComment xmi:id="_rXdlChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65B8D0134">
+ <body>Specifies the general Classifiers for this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXdlDhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXdlDRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105DC8003E" name="general" isQuery="true" bodyCondition="_rXKqExTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rXA5EhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105DC8003E">
+ <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rXKqExTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105DC8003E _3ADC7B74022D3DF65B8D0134">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXKqFBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rXKqEBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA011BE01AD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GcBXgRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GcBXgBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105E6D030C" name="parents" isQuery="true" bodyCondition="_rXKqHBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rXKqGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105E6D030C">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rXKqHBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105E6D030C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXKqHRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = generalization.general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rXKqGxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA011BE01AD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GcBXgxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GcBXghTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10747B0198" name="conformsTo" isQuery="true" redefinedOperation="_3ADC7B74022D3E554FFD0353" bodyCondition="_rXUbFBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rXKqIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10747B0198">
+ <body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rXUbFBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10747B0198">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXUbFRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self=other) or (self.allParents()->includes(other))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rXUbEhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E107494009A" name="other" type="_3ADC7B74022D3CA011BE01AD"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0127C032D" name="A_generalization_specific" memberEnd="_3ADC7B74022D3CA0127D01CF _3ADC7B74022D3CA0127D01D9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA012980355" name="A_general_generalization" memberEnd="_3ADC7B74022D3CA01299018A _3ADC7B74022D3CA012990194">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA012990194" type="_3ADC7B74022D3CA011B1028A" association="_3ADC7B74022D3CA012980355">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FM-LMVokEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FM-LMFokEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF65B8A03C5" name="A_general_classifier" memberEnd="_3ADC7B74022D3DF65B8D0134 _3ADC7B74022D3DF65B8D0152">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF65B8D0152" type="_3ADC7B74022D3CA011BE01AD" association="_3ADC7B74022D3DF65B8A03C5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CP4H8VokEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CP4H8FokEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D513F63025F" name="Comments">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3030189" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAC070A03AB" name="Comment">
+ <ownedComment xmi:id="_rXxHARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC070A03AB">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D73B026C" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAC072502E2" name="body" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rXxHBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC072502E2">
+ <body>Specifies a string that is the comment</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g7Pt4WgVEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7Pt4GgVEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB1D7400094" name="annotatedElement" type="_3ADC7B74022D3CADCAEE0250" association="_3ADC7B74022D3CB1D73F02EB">
+ <ownedComment xmi:id="_rXxHFRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB1D7400094">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXxHGRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXxHGBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB1D73F02EB" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D3CB1D7400094 _3ADC7B74022D3CB1D74000F8">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB1D74000F8" type="_3ADC7B74022D3CAC070A03AB" association="_3ADC7B74022D3CB1D73F02EB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fJE9UVojEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fJE9UFojEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D5142640297" name="Relationships">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A4590393" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D51445B01FA" name="DirectedRelationship" isAbstract="true">
+ <ownedComment xmi:id="_rYEB8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D51445B01FA">
+ <body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D5144E80329" general="_3ADC7B74022D3CA004180181"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6A15F02E3" name="source" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3D7A3113026A" association="_3ADC7B74022D3DE6A15E0179">
+ <ownedComment xmi:id="_rYECBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A15F02E3">
+ <body>Specifies the sources of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYNL4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rYNL4hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6A1830227" name="target" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3D7A3113026A" association="_3ADC7B74022D3DE6A1820366">
+ <ownedComment xmi:id="_rYNL6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A1830227">
+ <body>Specifies the targets of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYNL7RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rYNL7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA004180181" name="Relationship" isAbstract="true">
+ <ownedComment xmi:id="_rYEB9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA004180181">
+ <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADCD40027C" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D7A3113026A" name="relatedElement" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3D7A311203C7">
+ <ownedComment xmi:id="_rYEB_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7A3113026A">
+ <body>Specifies the elements related by the Relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYECABTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rYEB_xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D7A311203C7" name="A_relatedElement_relationship" memberEnd="_3ADC7B74022D3D7A3113026A _3ADC7B74022D3D7A3113031E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D7A3113031E" type="_3ADC7B74022D3CA004180181" association="_3ADC7B74022D3D7A311203C7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ukOVUVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ukOVUFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6A15E0179" name="A_source_directedRelationship" memberEnd="_3ADC7B74022D3DE6A15F02E3 _3ADC7B74022D3DE6A15F031F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6A15F031F" type="_3ADC7B74022D3D51445B01FA" association="_3ADC7B74022D3DE6A15E0179">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vUzdsVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vUzdsFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6A1820366" name="A_target_directedRelationship" memberEnd="_3ADC7B74022D3DE6A1830227 _3ADC7B74022D3DE6A1830277">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6A1830277" type="_3ADC7B74022D3D51445B01FA" association="_3ADC7B74022D3DE6A1820366">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wM-b0VomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wM-b0FomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D627A4F00CE" name="Changeabilities">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A31202D5" importedPackage="_3ADC7B74022D3CAB68D00279"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D627A6F0193" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rYW85RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D627A6F0193">
+ <body>StructuralFeature has an attribute that determines whether a client may modify its value.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D627AFC009B" name="isReadOnly" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rYW86RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D627AFC009B">
+ <body>States whether the feature's value may be modified by a client.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GcLIhBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CAB68D00279" name="StructuralFeatures">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A46C0124" importedPackage="_3ADC7B74022D3CA003360013"/>
+ <packageImport xmi:id="_3ADC7B74022D3E56169000F2" importedPackage="_3ADC7B74022D3E554B4A028B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A410002" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rYgt7RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A410002">
+ <body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA00C2E02A0" general="_3ADC7B74022D3CA00A3900A0"/>
+ <generalization xmi:id="_3ADC7B74022D3CA00C3A02A7" general="_3ADC7B74022D3CA00A3100E5"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA0307C0055" name="Constraints">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3AA003E" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packageImport xmi:id="_3ADC7B74022D3DE6C2A902E7" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packageImport xmi:id="_m_pwAD9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA099F902D0" name="Constraint">
+ <ownedComment xmi:id="_rY8yxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA099F902D0">
+ <body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rY8yzxTaEdqZu-3Jy1-uYg" name="not_apply_to_self" constrainedElement="_3ADC7B74022D3CA099F902D0">
+ <ownedComment xmi:id="_rY8yyxTaEdqZu-3Jy1-uYg" annotatedElement="_rY8yzxTaEdqZu-3Jy1-uYg">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rY8y0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rZGjwxTaEdqZu-3Jy1-uYg" name="value_specification_boolean" constrainedElement="_3ADC7B74022D3CA099F902D0">
+ <ownedComment xmi:id="_rY8y1BTaEdqZu-3Jy1-uYg" annotatedElement="_rZGjwxTaEdqZu-3Jy1-uYg">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rZGjxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DEE22390033" general="_3ADC7B74022D41B9EDB10307"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0A17602EB" name="context" type="_3ADC7B74022D3CA0A069009F" subsettedProperty="_3ADC7B74022D41B9C1A000FD" association="_3ADC7B74022D3CA0A17600A6">
+ <ownedComment xmi:id="_rZZetRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A17602EB">
+ <body>The Namespace that owns this NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPsxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0A4F60158" name="specification" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CA0A4F5008F">
+ <ownedComment xmi:id="_rZjPthTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A4F60158">
+ <body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPuhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPuRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADD91701B2" name="constrainedElement" type="_3ADC7B74022D3CADCAEE0250" isOrdered="true" association="_3ADC7B74022D3CADD916037D">
+ <ownedComment xmi:id="_rZjPwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADD91701B2">
+ <body>The ordered set of Elements referenced by this Constraint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPxBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPwxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0A069009F" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_rZGjyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A069009F">
+ <body>A namespace can own constraints. A constraint associated with a namespace may either apply to the namespace itself, or it may apply to elements in the namespace.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B085CF035A" general="_3ADC7B74022D41B9EDB10307"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0A17602E1" name="ownedRule" type="_3ADC7B74022D3CA099F902D0" aggregation="composite" subsettedProperty="_3ADC7B74022D41B9C1A000D5" association="_3ADC7B74022D3CA0A17600A6">
+ <ownedComment xmi:id="_rZQUwhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A17602E1">
+ <body>Specifies a set of Constraints owned by this Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZZesxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZZeshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9C1A000D5" name="ownedMember" type="_3ADC7B74022D41B9EDB10307" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B _3ADC7B74022D41B9EF3300FA" association="_3ADC7B74022D41B9C19E0263">
+ <ownedComment xmi:id="_rZtAshTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9C1A000D5">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZtAthTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZtAtRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9EF3300FA" name="member" type="_3ADC7B74022D41B9EDB10307" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41B9EF2F0270">
+ <ownedComment xmi:id="_rZ2KqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9EF3300FA">
+ <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZ2KrBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZ2KqxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41B9EDB10307" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_rZGjzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9EDB10307">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B9EE51018B" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9C1A000FD" name="namespace" type="_3ADC7B74022D3CA0A069009F" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D41B9C19E0263">
+ <ownedComment xmi:id="_rZtAuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9C1A000FD">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZ2KoxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZ2KohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0A17600A6" name="A_ownedRule_context" memberEnd="_3ADC7B74022D3CA0A17602E1 _3ADC7B74022D3CA0A17602EB"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0A4F5008F" name="A_specification_owningConstraint" memberEnd="_3ADC7B74022D3CA0A4F60158 _3ADC7B74022D3CA0A4F6019E">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA0A4F6019E" name="owningConstraint" type="_3ADC7B74022D3CA099F902D0" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA0A4F5008F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPvRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPvBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CADD916037D" name="A_constrainedElement_constraint" memberEnd="_3ADC7B74022D3CADD91701B2 _3ADC7B74022D3CADD9170216">
+ <ownedEnd xmi:id="_3ADC7B74022D3CADD9170216" type="_3ADC7B74022D3CA099F902D0" association="_3ADC7B74022D3CADD916037D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFuZ8VojEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFuZ8FojEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B9C19E0263" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D41B9C1A000D5 _3ADC7B74022D41B9C1A000FD"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B9EF2F0270" name="A_member_namespace" memberEnd="_3ADC7B74022D41B9EF3300FA _3ADC7B74022D41B9EF330104">
+ <ownedEnd xmi:id="_3ADC7B74022D41B9EF330104" type="_3ADC7B74022D3CA0A069009F" association="_3ADC7B74022D41B9EF2F0270">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vlsgwVojEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vlsgwFojEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CAD9E020290" name="Visibilities">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A47D0128" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CADB30F028F" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_raS2mxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADB30F028F">
+ <body>NamedElement has a visibility attribute.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_raS2oxTaEdqZu-3Jy1-uYg" name="visibility_needs_ownership" constrainedElement="_3ADC7B74022D3CADB30F028F">
+ <ownedComment xmi:id="_raS2nxTaEdqZu-3Jy1-uYg" annotatedElement="_raS2oxTaEdqZu-3Jy1-uYg">
+ <body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_raS2pBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>namespace->isEmpty() implies visibility->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADC5B702BE" name="visibility" type="_3ADC7B74022D3CAD9E0F01D0">
+ <ownedComment xmi:id="_raS2qBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADC5B702BE">
+ <body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_racnkxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_racnkhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3CAD9E0F01D0" name="VisibilityKind">
+ <ownedComment xmi:id="_raJsoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9E0F01D0">
+ <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_3ADC7B74022D3E107BB80139" name="bestVisibility" isQuery="true" bodyCondition="_raJsqhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_raJspRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E107BB80139">
+ <body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_raJsqhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E107BB80139">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_raJsqxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if vis->includes(#public) then #public else #private endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_raJsqBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAD9E0F01D0" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00E5" name="vis" type="_3ADC7B74022D3CAD9E0F01D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GceDcRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GceDcBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAD9EB900BC" name="public">
+ <ownedComment xmi:id="_raJsrxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9EB900BC">
+ <body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAD9EBB02C8" name="private">
+ <ownedComment xmi:id="_raJssxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9EBB02C8">
+ <body>A private element is only visible inside the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A15005A" name="protected">
+ <ownedComment xmi:id="_raS2kxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A15005A">
+ <body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A40019D" name="package">
+ <ownedComment xmi:id="_raS2lxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A40019D">
+ <body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF65990033B" name="Super">
+ <packageImport xmi:id="_3ADC7B74022D3DF6632E020F" importedPackage="_3ADC7B74022D3CA003360013"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF659AC02FF" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_ralxhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF659AC02FF">
+ <body>A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ralxjRTaEdqZu-3Jy1-uYg" name="no_cycles_in_generalization" constrainedElement="_3ADC7B74022D3DF659AC02FF">
+ <ownedComment xmi:id="_ralxiRTaEdqZu-3Jy1-uYg" annotatedElement="_ralxjRTaEdqZu-3Jy1-uYg">
+ <body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ralxjhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ralxlhTaEdqZu-3Jy1-uYg" name="specialize_type" constrainedElement="_3ADC7B74022D3DF659AC02FF">
+ <ownedComment xmi:id="_ralxkhTaEdqZu-3Jy1-uYg" annotatedElement="_ralxlhTaEdqZu-3Jy1-uYg">
+ <body>A classifier may only specialize classifiers of a valid type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ralxlxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.parents()->forAll(c | self.maySpecializeType(c))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B085FE002C" general="_3ADC7B74022D3CA0072700FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65AB001F5" name="isAbstract" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_ra5TqxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65AB001F5">
+ <body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GceDchTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65A9D02E0" name="inheritedMember" type="_3ADC7B74022D3CA0071C02FD" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3DF65A9D02DE">
+ <ownedComment xmi:id="_rbCddhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65A9D02E0">
+ <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rbCdehTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rbCdeRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65ACD0034" name="general" type="_3ADC7B74022D3DF659AC02FF" association="_3ADC7B74022D3DF65ACA038D">
+ <ownedComment xmi:id="_rbCdfxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65ACD0034">
+ <body>Specifies the more general classifiers in the generalization hierarchy for this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rbCdgxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rbCdghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10722C00E4" name="inheritedMember" isQuery="true" bodyCondition="_raviiRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravigxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10722C00E4">
+ <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_raviiRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10722C00E4 _3ADC7B74022D3DF65A9D02E0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_raviihTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ravihhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0071C02FD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0cRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0cBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1072FF02E6" name="parents" isQuery="true" bodyCondition="_ravikhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravijhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1072FF02E6">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ravikhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1072FF02E6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ravikxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ravikRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DF659AC02FF" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0cxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0chTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10734200DA" name="allParents" isQuery="true" bodyCondition="_ravimxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravilxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10734200DA">
+ <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ravimxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10734200DA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ravinBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()->union(self.parents()->collect(p | p.allParents())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ravimhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DF659AC02FF" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0dRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0dBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10738400DF" name="inheritableMembers" isQuery="true" precondition="_ra5ThBTaEdqZu-3Jy1-uYg" bodyCondition="_ra5ThhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravioBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10738400DF">
+ <body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5ThBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E10738400DF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5ThRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ra5ThhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10738400DF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5ThxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(m | c.hasVisibilityOf(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0071C02FD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0dxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0dhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1073B9026C" name="c" type="_3ADC7B74022D3DF659AC02FF"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10740603B7" name="hasVisibilityOf" isQuery="true" precondition="_ra5TkBTaEdqZu-3Jy1-uYg" bodyCondition="_ra5TkhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ra5TixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10740603B7">
+ <body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5TkBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E10740603B7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TkRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.allParents()->collect(c | c.member)->includes(n)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ra5TkhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10740603B7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TkxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if (self.inheritedMember->includes (n)) then (n.visibility &lt;> #private) else true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TjhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00FF" name="n" type="_3ADC7B74022D3CA0071C02FD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1074EF0344" name="inherit" isQuery="true" bodyCondition="_ra5TnBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ra5TlxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1074EF0344">
+ <body>The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5TnBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1074EF0344">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TnRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TmhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0071C02FD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcw-YRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcw-YBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C0102" name="inhs" type="_3ADC7B74022D3CA0071C02FD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcw-YxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcw-YhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10770902B1" name="maySpecializeType" isQuery="true" bodyCondition="_ra5TphTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ra5ToRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10770902B1">
+ <body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5TphTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10770902B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TpxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.oclIsKindOf(c.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TpBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C010A" name="c" type="_3ADC7B74022D3DF659AC02FF"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF65A9D02DE" name="A_classifier_inheritedMember" memberEnd="_3ADC7B74022D3DF65A9D02DF _3ADC7B74022D3DF65A9D02E0">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF65A9D02DF" type="_3ADC7B74022D3DF659AC02FF" association="_3ADC7B74022D3DF65A9D02DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7A1nAVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7A1nAFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF65ACA038D" name="A_general_classifier" memberEnd="_3ADC7B74022D3DF65ACD0034 _3ADC7B74022D3DF65ACD003E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF65ACD003E" type="_3ADC7B74022D3DF659AC02FF" association="_3ADC7B74022D3DF65ACA038D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Qx-oVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Qx-oFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF659EE021E" name="Literals">
+ <packageImport xmi:id="_3ADC7B74022D3DF663400034" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A2FE03E5" name="LiteralBoolean">
+ <ownedComment xmi:id="_rbfJaxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2FE03E5">
+ <body>A literal Boolean is a specification of a Boolean value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A32B0118" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5A3110161" name="value" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rbo6chTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A3110161">
+ <body>The specified Boolean value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_YDXU8GgaEdqfYrlcy8iLFA" type="_3ADC7B74022D3CA010AC0090"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1406E501AC" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rbo6ZBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbo6YBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1406E501AC">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbo6ZBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1406E501AC">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbo6ZRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbo6YxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407110029" name="booleanValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E14030E0325" bodyCondition="_rbo6bRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbo6aRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407110029">
+ <body>The query booleanValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbo6bRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407110029">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbo6bhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbo6bBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A2720176" name="LiteralString">
+ <ownedComment xmi:id="_rbo6dhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2720176">
+ <body>A literal string is a specification of a string value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2D101E1" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5A28802FF" name="value" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rbyEWhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A28802FF">
+ <body>The specified String value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g5BHAWgaEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g5BHAGgaEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407FF0374" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rbo6fxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbo6exTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407FF0374">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbo6fxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407FF0374">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbo6gBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbo6fhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140821003E" name="stringValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E1403380299" bodyCondition="_rbyEVRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbyEURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140821003E">
+ <body>The query stringValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbyEVRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140821003E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbyEVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbyEVBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A2060370" name="LiteralSpecification" isAbstract="true">
+ <ownedComment xmi:id="_rbyEXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2060370">
+ <body>A literal specification identifies a literal constant being modeled.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2250324" general="_3ADC7B74022D3CA00F020323"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A29200D2" name="LiteralNull">
+ <ownedComment xmi:id="_rbyEYxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A29200D2">
+ <body>A literal null specifies the lack of a value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2D5010B" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407B4000F" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rb71UxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbyEaBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407B4000F">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71UxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407B4000F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71VBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71UhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407D8029C" name="isNull" isQuery="true" redefinedOperation="_3ADC7B74022D3E1403A502BE" bodyCondition="_rb71XBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rb71WBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407D8029C">
+ <body>The query isNull() returns true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71XBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407D8029C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71XRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71WxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A23B01F0" name="LiteralInteger">
+ <ownedComment xmi:id="_rb71YRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A23B01F0">
+ <body>A literal integer is a specification of an integer value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2CC0144" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5A2640253" name="value" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rb71eBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2640253">
+ <body>The specified Integer value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_dugS0GgaEdqfYrlcy8iLFA" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14074A00F3" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rb71ahTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rb71ZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14074A00F3">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71ahTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14074A00F3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71axTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71aRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14077700E4" name="integerValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402DE0204" bodyCondition="_rb71cxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rb71bxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14077700E4">
+ <body>The query integerValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71cxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14077700E4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71dBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71chTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF664BD01AE" name="LiteralUnlimitedNatural">
+ <ownedComment xmi:id="_rcFmUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF664BD01AE">
+ <body>A literal unlimited natural is a specification of an unlimited natural number.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF664D30228" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF664DB022A" name="value" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rcFmahTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF664DB022A">
+ <body>The specified UnlimitedNatural value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ntBxcGgaEdqfYrlcy8iLFA" type="_3ADC7B74022D3DE6A93C0003"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140869018C" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rcFmXBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcFmWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140869018C">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcFmXBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140869018C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcFmXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcFmWxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14088F01CD" name="unlimitedValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E140370027C" bodyCondition="_rcFmZRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcFmYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14088F01CD">
+ <body>The query unlimitedValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcFmZRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14088F01CD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcFmZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcFmZBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF65C06026F" name="Multiplicities">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A42501FE" importedPackage="_3ADC7B74022D3DF78B7503C0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF65EC002AE" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_rcOwSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65EC002AE">
+ <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rciSSBTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D3DF65EC002AE">
+ <ownedComment xmi:id="_rciSRBTaEdqZu-3Jy1-uYg" annotatedElement="_rciSSBTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rciSSRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rciSURTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D3DF65EC002AE">
+ <ownedComment xmi:id="_rciSTRTaEdqZu-3Jy1-uYg" annotatedElement="_rciSURTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rciSUhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcrcMxTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D3DF65EC002AE">
+ <ownedComment xmi:id="_rciSVhTaEdqZu-3Jy1-uYg" annotatedElement="_rcrcMxTaEdqZu-3Jy1-uYg">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcrcNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF65ED2003D" general="_3ADC7B74022D3DF78BA701E1"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65ED50222" name="isOrdered" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rcrcOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65ED50222">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gc6vYBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78C0F008C" name="isUnique" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rcrcPRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78C0F008C">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gc6vYRTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78C160227" name="lower" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rcrcQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78C160227">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rcrcRhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rcrcRRTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_Gc6vYhTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78C21006A" name="upper" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rcrcSRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78C21006A">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rcrcTRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rcrcTBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gc6vYxTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105FFF0120" name="lowerBound" isQuery="true" bodyCondition="_rcYhQxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcOwTRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105FFF0120">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhQxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105FFF0120">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lower->notEmpty() then lower else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhQhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10604500E4" name="upperBound" isQuery="true" bodyCondition="_rcYhTBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10604500E4">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhTBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10604500E4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upper->notEmpty() then upper else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhSxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1060A900DE" name="isMultivalued" isQuery="true" precondition="_rcYhVRTaEdqZu-3Jy1-uYg" bodyCondition="_rcYhVxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1060A900DE">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhVRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1060A900DE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcYhVxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1060A900DE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhWBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhVBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1060D80399" name="includesCardinality" isQuery="true" precondition="_rcYhYRTaEdqZu-3Jy1-uYg" bodyCondition="_rcYhYxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1060D80399">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhYRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1060D80399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhYhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()&#xA;includesCardinality = (lowerBound() &lt;= C) and (upperBound() >= C)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcYhYxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1060D80399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhXxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1060FD0360" name="C" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10616C00C0" name="includesMultiplicity" isQuery="true" precondition="_rcYhbRTaEdqZu-3Jy1-uYg" bodyCondition="_rcYhbxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhaBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10616C00C0">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhbRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E10616C00C0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhbhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcYhbxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10616C00C0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rciSQBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhaxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E10618E0250" name="M" type="_3ADC7B74022D416D57E502DA"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF78B7503C0" name="Elements">
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF78BA701E1" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rc-XJBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78BA701E1">
+ <body>An element is a constituent of a model.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E554B4A028B" name="TypedElements">
+ <packageImport xmi:id="_3ADC7B74022D3E554EDC0181" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E554AF2005E" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_rdR5JBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E554AF2005E">
+ <body>A type constrains the values represented by a typed element.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E554C9B01B3" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedOperation xmi:id="_3ADC7B74022D3E554FFD0353" name="conformsTo" isQuery="true" bodyCondition="_rdR5LhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rdR5KRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E554FFD0353">
+ <body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rdR5LhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E554FFD0353">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rdR5LxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rdR5LBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C0113" name="other" type="_3ADC7B74022D3E554AF2005E"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A3100E5" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_rdR5MxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A3100E5">
+ <body>A typed element has a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E554DC00381" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA00B360130" name="type" type="_3ADC7B74022D3E554AF2005E" association="_3ADC7B74022D3CA00B35031A">
+ <ownedComment xmi:id="_rdR5ORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00B360130">
+ <body>The type of the TypedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rdbDExTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rdbDEhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA00B35031A" name="A_type_typedElement" memberEnd="_3ADC7B74022D3CA00B360130 _3ADC7B74022D3CA00B36013A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA00B36013A" type="_3ADC7B74022D3CA00A3100E5" association="_3ADC7B74022D3CA00B35031A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EnqXUVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EnqXUFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FFCC70354" name="PrimitiveTypes">
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3CA010A4007B" name="Integer">
+ <ownedComment xmi:id="_rdk0FBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA010A4007B">
+ <body>An integer is a primitive type representing integer values.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3CA010AC0090" name="Boolean">
+ <ownedComment xmi:id="_rd3vARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA010AC0090">
+ <body>A Boolean type is used for logical expression, consisting of the predefined values true and false.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3CA010B103C3" name="String">
+ <ownedComment xmi:id="_reBgAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA010B103C3">
+ <body>A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3DE6A93C0003" name="UnlimitedNatural">
+ <ownedComment xmi:id="_reBgDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A93C0003">
+ <body>An unlimited natural is a primitive type representing unlimited natural values.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DE692A401F1" name="Basic">
+ <packageImport xmi:id="_3ADC7B74022D3DE78B4D02BB" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB400163" name="Class">
+ <ownedComment xmi:id="_reeL8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB400163">
+ <body>A class is a type that has objects as its instances.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6ABFA016B" general="_3ADC7B74022D3DE6A6CC00B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC0203C5" name="isAbstract" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_reeL9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC0203C5">
+ <body>True when a class is abstract.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdNqUBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ACA0001F" name="ownedAttribute" type="_3ADC7B74022D3DE6AB4B0001" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6AC9F015E">
+ <ownedComment xmi:id="_rfgt1RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ACA0001F">
+ <body>The attributes owned by a class. These do not include the inherited attributes. Attributes are represented by instances of Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfgt2RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfgt2BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ADE30041" name="ownedOperation" type="_3ADC7B74022D3DE6AB440191" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6ADE20180">
+ <ownedComment xmi:id="_rfzothTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ADE30041">
+ <body>The operations owned by a class. These do not include the inherited operations.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzouhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzouRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AE3D013B" name="superClass" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6AE3B0279">
+ <ownedComment xmi:id="_rfzoxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE3D013B">
+ <body>The immediate superclasses of a class, from which the class inherits.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzoyRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzoyBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB440191" name="Operation">
+ <ownedComment xmi:id="_reeL-xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB440191">
+ <body>An operation is owned by a class and may be invoked in the context of objects that are instances of that class. It is a typed element and a multiplicity element.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E56126B029B" general="_3ADC7B74022D3DE6AA3D016B"/>
+ <generalization xmi:id="_3ADC7B74022D3E56126E03B7" general="_3ADC7B74022D416D57E502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD7B00F6" name="raisedException" type="_3ADC7B74022D3DE6A6CC00B0" association="_3ADC7B74022D3DE6AD7A004B">
+ <ownedComment xmi:id="_rfgtzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD7B00F6">
+ <body>The exceptions that are declared as possible during an invocation of the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfgt0RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfgt0BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD8F022B" name="ownedParameter" type="_3ADC7B74022D3DE6AB5E035B" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6AD8E03A7">
+ <ownedComment xmi:id="_rfqe0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD8F022B">
+ <body>The parameters to the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfqe1BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfqe0xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ADE30056" name="class" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6ADE20180">
+ <ownedComment xmi:id="_rfzovBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ADE30056">
+ <body>The class that owns the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzowBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzovxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB5E035B" name="Parameter">
+ <ownedComment xmi:id="_renV4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB5E035B">
+ <body>A parameter is a typed element that represents a parameter of an operation.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E56125A01BA" general="_3ADC7B74022D3DE6AA3D016B"/>
+ <generalization xmi:id="_3ADC7B74022D3E56125D02B9" general="_3ADC7B74022D416D57E502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD8F023F" name="operation" type="_3ADC7B74022D3DE6AB440191" association="_3ADC7B74022D3DE6AD8E03A7">
+ <ownedComment xmi:id="_rfqe1hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD8F023F">
+ <body>The operation that owns the parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzosxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzoshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB4B0001" name="Property">
+ <ownedComment xmi:id="_renV5xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB4B0001">
+ <body>A property is a typed element that represents an attribute of a class.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AC920169" general="_3ADC7B74022D3DE6AA3D016B"/>
+ <generalization xmi:id="_3ADC7B74022D3E56123A00E1" general="_3ADC7B74022D416D57E502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC2D00E2" name="isReadOnly" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_renV7RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC2D00E2">
+ <body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdNqURTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC4701DA" name="default" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_renV8hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC4701DA">
+ <body>A string that is evaluated to give a default value for the attribute when an object of the owning class is instantiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_renV9hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_renV9RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC5A02DB" name="isComposite" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_renV-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC5A02DB">
+ <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbUBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC630099" name="isDerived" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rexG4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC630099">
+ <body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbURTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ACA00029" name="class" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6AC9F015E">
+ <ownedComment xmi:id="_rfgt2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ACA00029">
+ <body>The class that owns the property, and of which the property is an attribute.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfqewxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfqewhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD01030E" name="opposite" type="_3ADC7B74022D3DE6AB4B0001" association="_3ADC7B74022D3DE6ACFF0224">
+ <ownedComment xmi:id="_rfqeyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD01030E">
+ <body>Two attributes attr1 and attr2 of two objects o1 and o2 (which may be the same object) may be paired with each other so that o1.attr1 refers to o2 if and only if o2.attr2 refers to o1. In such a case attr1 is the opposite of attr2 and attr2 is the opposite of attr1.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfqezBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfqeyxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6A6CC00B0" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_rexG5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A6CC00B0">
+ <body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AA6E01C5" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6B0040398" name="package" type="_3ADC7B74022D3DE6AF3E02D5" association="_3ADC7B74022D3DE6B0040154">
+ <ownedComment xmi:id="_rgGjtRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6B0040398">
+ <body>Specifies the owning package of this classifier, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUoxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6A6B90257" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_rexG6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A6B90257">
+ <body>A named element represents an element with a name.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF78D3B035F" general="_3ADC7B74022D416D58F70035"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6A6EE0069" name="name" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rexG7xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A6EE0069">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rexG8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rexG8hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AA3D016B" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_DR3QwBVsEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DE6AA3D016B">
+ <body>A typed element is a kind of named element that represents an element with a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AAB102B2" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AA7C03B0" name="type" type="_3ADC7B74022D3DE6A6CC00B0" association="_3ADC7B74022D3DE6AA7C00C1">
+ <ownedComment xmi:id="_rf9ZshTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AA7C03B0">
+ <body>The type of the TypedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rf9ZthTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rf9ZtRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AE8B01AC" name="Enumeration">
+ <ownedComment xmi:id="_rexG9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE8B01AC">
+ <body>An enumeration defines a set of literals that can be used as its values.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AEE30176" general="_3ADC7B74022D3DEE7F610363"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AF0702A4" name="ownedLiteral" type="_3ADC7B74022D3DE6AE90034D" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6AF070037">
+ <ownedComment xmi:id="_rf9ZuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AF0702A4">
+ <body>The ordered set of literals for this Enumeration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rf9ZvhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rf9ZvRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AE90034D" name="EnumerationLiteral">
+ <ownedComment xmi:id="_re635BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE90034D">
+ <body>An enumeration literal is a value of an enumeration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AF02012A" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AF0702A6" name="enumeration" type="_3ADC7B74022D3DE6AE8B01AC" association="_3ADC7B74022D3DE6AF070037">
+ <ownedComment xmi:id="_rf9ZwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AF0702A6">
+ <body>The Enumeration that this EnumerationLiteral is a member of.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rf9ZxBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rf9ZwxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AE830128" name="PrimitiveType">
+ <ownedComment xmi:id="_re636RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE830128">
+ <body>A primitive type is a data type implemented by the underlying infrastructure and made available for modeling.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AEDB005C" general="_3ADC7B74022D3DEE7F610363"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AF3E02D5" name="Package">
+ <ownedComment xmi:id="_re637hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AF3E02D5">
+ <body>A package is a container for types and other packages.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AF9101B2" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AFB7015D" name="nestedPackage" type="_3ADC7B74022D3DE6AF3E02D5" aggregation="composite" association="_3ADC7B74022D3DE6AFB5015A">
+ <ownedComment xmi:id="_rgGjohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AFB7015D">
+ <body>The set of contained packages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgGjphTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgGjpRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AFB70171" name="nestingPackage" type="_3ADC7B74022D3DE6AF3E02D5" association="_3ADC7B74022D3DE6AFB5015A">
+ <ownedComment xmi:id="_rgGjqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AFB70171">
+ <body>The containing package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgGjrBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgGjqxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6B0040384" name="ownedType" type="_3ADC7B74022D3DE6A6CC00B0" aggregation="composite" association="_3ADC7B74022D3DE6B0040154">
+ <ownedComment xmi:id="_rgGjrxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6B0040384">
+ <body>The set of contained types.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgGjsxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgGjshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DEE7F610363" name="DataType" isAbstract="true">
+ <ownedComment xmi:id="_re638xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE7F610363">
+ <body>DataType is an abstract class that acts as a common superclass for different kinds of data types.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE7F810066" general="_3ADC7B74022D3DE6A6CC00B0"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D416D57E502DA" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_re63-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57E502DA">
+ <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfNy6xTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D416D57E502DA">
+ <ownedComment xmi:id="_rfNy5xTaEdqZu-3Jy1-uYg" annotatedElement="_rfNy6xTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy7BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfNy9BTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D416D57E502DA">
+ <ownedComment xmi:id="_rfNy8BTaEdqZu-3Jy1-uYg" annotatedElement="_rfNy9BTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy9RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfW8wxTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D416D57E502DA">
+ <ownedComment xmi:id="_rfNy-RTaEdqZu-3Jy1-uYg" annotatedElement="_rfW8wxTaEdqZu-3Jy1-uYg">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfW8xBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B05F2F027F" general="_3ADC7B74022D416D58F70035"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000C3" name="isOrdered" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rfW8yBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000C3">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbUhTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000C4" name="isUnique" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rfW8zRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000C4">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbUxTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000C5" name="lower" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rfW80hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000C5">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfW81hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfW81RTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_GdXbVBTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000CD" name="upper" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rfW82RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000CD">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfW83RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfW83BTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GdXbVRTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B0" name="lowerBound" isQuery="true" bodyCondition="_rfEB2BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B0">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfEB2BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB2RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lower->notEmpty() then lower else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfEB1xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B1" name="upperBound" isQuery="true" bodyCondition="_rfEB4RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B1">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfEB4RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB4hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upper->notEmpty() then upper else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfEB4BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B2" name="isMultivalued" isQuery="true" precondition="_rfEB6hTaEdqZu-3Jy1-uYg" bodyCondition="_rfEB7BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B2">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfEB6hTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D416D580600B2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB6xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfEB7BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfEB6RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B3" name="includesCardinality" isQuery="true" precondition="_rfNy1BTaEdqZu-3Jy1-uYg" bodyCondition="_rfNy1hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B3">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfNy1BTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D416D580600B3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy1RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfNy1hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy1xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfNy0hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D416D580600B4" name="C" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B5" name="includesMultiplicity" isQuery="true" precondition="_rfNy4BTaEdqZu-3Jy1-uYg" bodyCondition="_rfNy4hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfNy2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B5">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfNy4BTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D416D580600B5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy4RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfNy4hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy4xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfNy3hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D416D580600B6" name="M" type="_3ADC7B74022D416D57E502DA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D416D58F70035" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rfW84BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D58F70035">
+ <body>An element is a constituent of a model.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D41937577010A" name="ownedComment" type="_3ADC7B74022D3DFCA934027A" aggregation="composite" association="_3ADC7B74022D4193757202CF">
+ <ownedComment xmi:id="_rgQUrhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41937577010A">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUshTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUsRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFCA934027A" name="Comment">
+ <ownedComment xmi:id="_rfgtwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCA934027A">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41781B9F03B5" general="_3ADC7B74022D416D58F70035"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D417820CB0110" name="body" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rfgtyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D417820CB0110">
+ <body>Specifies a string that is the comment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nL7o0WgVEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nL7o0GgVEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41781BB50371" name="annotatedElement" type="_3ADC7B74022D416D58F70035" association="_3ADC7B74022D41781BB50063">
+ <ownedComment xmi:id="_rgQUphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41781BB50371">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUqhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUqRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AD7A004B" name="A_raisedException_operation" memberEnd="_3ADC7B74022D3DE6AD7B00F6 _3ADC7B74022D3DE6AD7B011E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AD7B011E" type="_3ADC7B74022D3DE6AB440191" association="_3ADC7B74022D3DE6AD7A004B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_a11CoVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a11CoFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AC9F015E" name="A_ownedAttribute_class" memberEnd="_3ADC7B74022D3DE6ACA0001F _3ADC7B74022D3DE6ACA00029"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6ACFF0224" name="A_opposite_property" memberEnd="_3ADC7B74022D3DE6AD01030E _3ADC7B74022D3DE6AD010322">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AD010322" type="_3ADC7B74022D3DE6AB4B0001" association="_3ADC7B74022D3DE6ACFF0224">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6q1gVonEduDzLNvRu8ZxQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6q1gFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AD8E03A7" name="A_ownedParameter_operation" memberEnd="_3ADC7B74022D3DE6AD8F022B _3ADC7B74022D3DE6AD8F023F"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6ADE20180" name="A_ownedOperation_class" memberEnd="_3ADC7B74022D3DE6ADE30041 _3ADC7B74022D3DE6ADE30056"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AE3B0279" name="A_superClass_class" memberEnd="_3ADC7B74022D3DE6AE3D013B _3ADC7B74022D3DE6AE3D0145">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AE3D0145" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6AE3B0279">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZvV7sVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZvV7sFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AA7C00C1" name="A_type_typedElement" memberEnd="_3ADC7B74022D3DE6AA7C03B0 _3ADC7B74022D3DE6AA7C03B2">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AA7C03B2" type="_3ADC7B74022D3DE6AA3D016B" association="_3ADC7B74022D3DE6AA7C00C1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QwwQEVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QwwQEFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AF070037" name="A_ownedLiteral_enumeration" memberEnd="_3ADC7B74022D3DE6AF0702A4 _3ADC7B74022D3DE6AF0702A6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AFB5015A" name="A_nestedPackage_nestingPackage" memberEnd="_3ADC7B74022D3DE6AFB7015D _3ADC7B74022D3DE6AFB70171"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6B0040154" name="A_ownedType_package" memberEnd="_3ADC7B74022D3DE6B0040384 _3ADC7B74022D3DE6B0040398"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41781BB50063" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D41781BB50371 _3ADC7B74022D41781BB5037B">
+ <ownedEnd xmi:id="_3ADC7B74022D41781BB5037B" type="_3ADC7B74022D3DFCA934027A" association="_3ADC7B74022D41781BB50063">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QEgOEVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QEgOEFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4193757202CF" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D41937577010A _3ADC7B74022D419375770114">
+ <ownedEnd xmi:id="_3ADC7B74022D419375770114" name="owningElement" type="_3ADC7B74022D416D58F70035" association="_3ADC7B74022D4193757202CF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUtRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUtBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DE692AD00C7" name="Constructs">
+ <packageImport xmi:id="_3ADC7B74022D41C2C20602EA" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C8630317" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rg2xkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C8630317">
+ <body>A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7oBTaEdqZu-3Jy1-uYg" name="no_cycles_in_generalization" constrainedElement="_3ADC7B74022D3DE6C8630317">
+ <ownedComment xmi:id="_rg_7nBTaEdqZu-3Jy1-uYg" annotatedElement="_rg_7oBTaEdqZu-3Jy1-uYg">
+ <body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7oRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhJsgxTaEdqZu-3Jy1-uYg" name="specialize_type" constrainedElement="_3ADC7B74022D3DE6C8630317">
+ <ownedComment xmi:id="_rg_7pRTaEdqZu-3Jy1-uYg" annotatedElement="_rhJsgxTaEdqZu-3Jy1-uYg">
+ <body>A classifier may only specialize classifiers of a valid type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJshBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.parents()->forAll(c | self.maySpecializeType(c))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6C8A403CF" general="_3ADC7B74022D3DE6C03E0388"/>
+ <generalization xmi:id="_3ADC7B74022D3E55541701A4" general="_3ADC7B74022D3E555229003B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E42E034A" name="attribute" type="_3ADC7B74022D3DE6D57500AC" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCBE7F0246" association="_3ADC7B74022D3DE6E42D0385">
+ <ownedComment xmi:id="_rp8cNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E42E034A">
+ <body>Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqFmExTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqFmEhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBE7F0246" name="feature" type="_3ADC7B74022D3DE6C7BD0034" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D3DFCBE7F0137">
+ <ownedComment xmi:id="_rsLQzxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBE7F0246">
+ <body>Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsLQ0xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsLQ0hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0270BE0395" name="general" type="_3ADC7B74022D3DE6C8630317" association="_3ADC7B74022D3E0270BC02FC">
+ <ownedComment xmi:id="_rseLxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0270BE0395">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rseLyxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rseLyhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4304A13201D9" name="inheritedMember" type="_3ADC7B74022D3DE6BC6B01BD" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D4304A1300282">
+ <ownedComment xmi:id="_hBVxYBVsEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D4304A13201D9">
+ <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rtEoqRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rtEoqBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E555A26019A" name="conformsTo" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C010B" bodyCondition="_rg2xnBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg2xlxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555A26019A">
+ <body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg2xnBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E555A26019A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg2xnRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self=other) or (self.allParents()->includes(other))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg2xmhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E555A8001D6" name="other" type="_3ADC7B74022D3DE6C8630317"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00B1" name="allFeatures" isQuery="true" bodyCondition="_rg_7gxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg2xoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00B1">
+ <body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7gxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7hBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(oclIsKindOf(Feature))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg_7ghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C7BD0034" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd0HQRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd0HQBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00D9" name="general" isQuery="true" bodyCondition="_rg_7jhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg_7iBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00D9">
+ <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7jhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00D9 _3ADC7B74022D3E0270BE0395">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7jxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg_7ixTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd0HQxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd0HQhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00DB" name="parents" isQuery="true" bodyCondition="_rg_7lxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg_7kxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00DB">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7lxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00DB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7mBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = generalization.general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg_7lhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd0HRRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd0HRBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00F1" name="inheritedMember" isQuery="true" bodyCondition="_rhJsjhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJsiBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00F1">
+ <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhJsjhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00F1 _3ADC7B74022D4304A13201D9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsjxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhJsixTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RMRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RMBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00F5" name="allParents" isQuery="true" bodyCondition="_rhJslxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJskxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00F5">
+ <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhJslxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00F5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsmBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()->union(self.parents()->collect(p | p.allParents())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhJslhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RMxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RMhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00F7" name="inheritableMembers" isQuery="true" precondition="_rhJsoBTaEdqZu-3Jy1-uYg" bodyCondition="_rhJsohTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJsnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00F7">
+ <body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhJsoBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D42EE305C00F7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsoRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhJsohTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00F7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsoxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(m | c.hasVisibilityOf(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhJsnxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RNRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RNBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ZmupgB76EdqelquzpYSE-w" name="c" type="_3ADC7B74022D3DE6C8630317" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00FA" name="hasVisibilityOf" isQuery="true" precondition="_rhTdhBTaEdqZu-3Jy1-uYg" bodyCondition="_rhTdhhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJspxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00FA">
+ <body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhTdhBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D42EE305C00FA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.allParents()->collect(c | c.member)->includes(n)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhTdhhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00FA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdhxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if (self.inheritedMember->includes(n)) then (n.visibility &lt;> #private) else true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhTdghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE60AC013F" name="n" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0100" name="inherit" isQuery="true" bodyCondition="_rhTdkBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhTdixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0100">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhTdkBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0100">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdkRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhTdjhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RNxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RNhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE62220395" name="inhs" type="_3ADC7B74022D3DE6BC6B01BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeHCMRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeHCMBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0108" name="maySpecializeType" isQuery="true" bodyCondition="_rhTdmhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhTdlRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0108">
+ <body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhTdmhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0108">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdmxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.oclIsKindOf(c.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhTdmBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE625E00B7" name="c" type="_3ADC7B74022D3DE6C8630317"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C82E03E4" name="DirectedRelationship" isAbstract="true">
+ <ownedComment xmi:id="_rhTdnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C82E03E4">
+ <body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6D02402A4" general="_3ADC7B74022D3DE6C8270177"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCAC7900D9" name="source" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCAC2F019B" association="_3ADC7B74022D3DFCAC780308">
+ <ownedComment xmi:id="_rr4V5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCAC7900D9">
+ <body>Specifies the sources of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsBfwRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsBfwBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCACAF0090" name="target" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCAC2F019B" association="_3ADC7B74022D3DFCACAE01F7">
+ <ownedComment xmi:id="_rsBfxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCACAF0090">
+ <body>Specifies the targets of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsBfyxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsBfyhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6BAB70076" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rhcncBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6BAB70076">
+ <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhcneBTaEdqZu-3Jy1-uYg" name="not_own_self" constrainedElement="_3ADC7B74022D3DE6BAB70076">
+ <ownedComment xmi:id="_rhcndBTaEdqZu-3Jy1-uYg" annotatedElement="_rhcneBTaEdqZu-3Jy1-uYg">
+ <body>An element may not directly or indirectly own itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhcneRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allOwnedElements()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhcngRTaEdqZu-3Jy1-uYg" name="has_owner" constrainedElement="_3ADC7B74022D3DE6BAB70076">
+ <ownedComment xmi:id="_rhcnfRTaEdqZu-3Jy1-uYg" annotatedElement="_rhcngRTaEdqZu-3Jy1-uYg">
+ <body>Elements that must be owned must have an owner.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhcnghTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.mustBeOwned() implies owner->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCA80700B4" name="ownedElement" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="_3ADC7B74022D3DFCA805021A">
+ <ownedComment xmi:id="_rruk2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCA80700B4">
+ <body>The Elements owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rruk3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rruk3RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCA80700BE" name="owner" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCA805021A">
+ <ownedComment xmi:id="_rruk4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCA80700BE">
+ <body>The Element that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rruk5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rruk5RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41781AB80146" name="ownedComment" type="_3ADC7B74022D41781AA6038F" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D41781AB701BD">
+ <ownedComment xmi:id="_rs63rBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41781AB80146">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63sBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63rxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C006A" name="allOwnedElements" isQuery="true" bodyCondition="_rhmYcxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhcnhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C006A">
+ <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhmYcxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C006A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhmYdBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhmYchTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BAB70076" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeHCMxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeHCMhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0073" name="mustBeOwned" isQuery="true" bodyCondition="_rhmYfBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhmYeBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0073">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhmYfBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0073">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhmYfRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhmYexTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C7BD0034" name="Feature" isAbstract="true">
+ <ownedComment xmi:id="_rhmYgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C7BD0034">
+ <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6CEB001C2" general="_3ADC7B74022D3DE6C81D0244"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBE7F025A" name="featuringClassifier" type="_3ADC7B74022D3DE6C8630317" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCBE7F0137">
+ <ownedComment xmi:id="_rsLQ1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBE7F025A">
+ <body>The Classifiers that have this Feature as a feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsVBwxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsVBwhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C66D02F8" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_rhmYhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C66D02F8">
+ <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhmYjxTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D3DE6C66D02F8">
+ <ownedComment xmi:id="_rhmYixTaEdqZu-3Jy1-uYg" annotatedElement="_rhmYjxTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhmYkBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlBf4xTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D3DE6C66D02F8">
+ <ownedComment xmi:id="_rhviYRTaEdqZu-3Jy1-uYg" annotatedElement="_rlBf4xTaEdqZu-3Jy1-uYg">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlBf5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlLQ7hTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D3DE6C66D02F8">
+ <ownedComment xmi:id="_rlLQ6hTaEdqZu-3Jy1-uYg" annotatedElement="_rlLQ7hTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlLQ7xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6C6E702B7" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD027D" name="isOrdered" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rleL2BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD027D">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GeHCNBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD0287" name="isUnique" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rleL3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD0287">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GeHCNRTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD0288" name="lower" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rleL4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD0288">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rleL5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rleL5RTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_GeHCNhTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD0291" name="upper" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rleL6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD0291">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rleL7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rleL7BTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeQMIBTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D41C06EDF02B1" name="isMultivalued" isQuery="true" precondition="_rlUa0xTaEdqZu-3Jy1-uYg" bodyCondition="_rlUa1RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlLQ_hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EDF02B1">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa0xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D41C06EDF02B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlUa1RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D41C06EDF02B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa0hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D41C06EDF02BB" name="includesMultiplicity" isQuery="true" precondition="_rlUa3xTaEdqZu-3Jy1-uYg" bodyCondition="_rlUa4RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EDF02BB">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa3xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D41C06EDF02BB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa4BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlUa4RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D41C06EDF02BB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa4hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa3RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D41C06EDF02BC" name="M" type="_3ADC7B74022D3DE6C66D02F8"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D41C06EDF02BD" name="includesCardinality" isQuery="true" precondition="_rlUa6xTaEdqZu-3Jy1-uYg" bodyCondition="_rlUa7RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EDF02BD">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa6xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D41C06EDF02BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa7BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlUa7RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D41C06EDF02BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa7hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa6RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D41C06EDF02BE" name="C" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C6" name="lowerBound" isQuery="true" bodyCondition="_rlUa9hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa8hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C6">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa9hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa9xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lower->notEmpty() then lower else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa9RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C8" name="upperBound" isQuery="true" bodyCondition="_rleL0xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa-xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C8">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rleL0xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rleL1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upper->notEmpty() then upper else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rleL0hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C03E0388" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_rleL8BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C03E0388">
+ <body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlxGzRTaEdqZu-3Jy1-uYg" name="members_distinguishable" constrainedElement="_3ADC7B74022D3DE6C03E0388">
+ <ownedComment xmi:id="_rlxGyRTaEdqZu-3Jy1-uYg" annotatedElement="_rlxGzRTaEdqZu-3Jy1-uYg">
+ <body>All the members of a Namespace are distinguishable within it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlxGzhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>membersAreDistinguishable()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6C04E0326" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE234B0163" name="importedMember" type="_3ADC7B74022D3DE6C1F002C3" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D3DEE234A0342">
+ <ownedComment xmi:id="_rq-99RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE234B0163">
+ <body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq-9-RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq-9-BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E0040315" name="elementImport" type="_3ADC7B74022D3DE6D5E7016E" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DE6E0040076">
+ <ownedComment xmi:id="_rrIu9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E0040315">
+ <body>References the ElementImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIu-xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIu-hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E00902C3" name="packageImport" type="_3ADC7B74022D3DE6D5E002D7" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DE6E00900B0">
+ <ownedComment xmi:id="_rrIvBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E00902C3">
+ <body>References the PackageImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIvCBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIvBxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCB8650177" name="ownedMember" type="_3ADC7B74022D3DE6BC6B01BD" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB82F00DA _3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DFCB86303CD">
+ <ownedComment xmi:id="_rsn8shTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCB8650177">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsn8thTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsn8tRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCB82F00DA" name="member" type="_3ADC7B74022D3DE6BC6B01BD" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCB82E022D">
+ <ownedComment xmi:id="_rsn8wxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCB82F00DA">
+ <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtsxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_s_9I8R-zEdqIE6mxof-rZA" name="ownedRule" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_s_9I8B-zEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s_9I9B-zEdqIE6mxof-rZA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s_9I8x-zEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142ABF004B" name="importedMember" isQuery="true" bodyCondition="_rln82hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln81BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142ABF004B">
+ <body>The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rln82hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142ABF004B _3ADC7B74022D3DEE234B0163">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rln82xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.importMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rln81xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9IRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9IBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142BF301A2" name="getNamesOfMember" isQuery="true" bodyCondition="_rln85BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln83xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142BF301A2">
+ <body>The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rln85BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142BF301A2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rln85RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.ownedMember->includes(element)&#xA;then Set{}->include(element.name)&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xA; if elementImports->notEmpty()&#xA; then elementImports->collect(el | el.getName())&#xA; else self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xA; endif&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rln84hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9IxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9IhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D41B05E1D014F" name="element" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142CAC03E3" name="importMembers" isQuery="true" bodyCondition="_rln87hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln86RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142CAC03E3">
+ <body>The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rln87hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142CAC03E3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rln87xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rln87BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9JRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9JBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142CD402DC" name="imps" type="_3ADC7B74022D3DE6C1F002C3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9JxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9JhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142D230163" name="excludeCollisions" isQuery="true" bodyCondition="_rlxGxBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln88xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142D230163">
+ <body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlxGxBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142D230163">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlxGxRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlxGwhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9KRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9KBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142D460312" name="imps" type="_3ADC7B74022D3DE6C1F002C3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GejuIRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GejuIBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00AF" name="membersAreDistinguishable" isQuery="true" bodyCondition="_rlxG1hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlxG0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00AF">
+ <body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlxG1hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00AF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlxG1xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.member->forAll( memb |&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlxG1RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C1F002C3" name="PackageableElement" isAbstract="true">
+ <ownedComment xmi:id="_rlxG2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C1F002C3">
+ <body>A packageable element indicates a named element that may be owned directly by a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6C2130328" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C81D0244" name="RedefinableElement" isAbstract="true">
+ <ownedComment xmi:id="_rlxG4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C81D0244">
+ <body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rl63yBTaEdqZu-3Jy1-uYg" name="redefinition_context_valid" constrainedElement="_3ADC7B74022D3DE6C81D0244">
+ <ownedComment xmi:id="_rl63xBTaEdqZu-3Jy1-uYg" annotatedElement="_rl63yBTaEdqZu-3Jy1-uYg">
+ <body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl63yRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rl630RTaEdqZu-3Jy1-uYg" name="redefinition_consistent" constrainedElement="_3ADC7B74022D3DE6C81D0244">
+ <ownedComment xmi:id="_rl63zRTaEdqZu-3Jy1-uYg" annotatedElement="_rl630RTaEdqZu-3Jy1-uYg">
+ <body>A redefining element must be consistent with each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl630hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6CE6B037C" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBDBD028D" name="redefinitionContext" type="_3ADC7B74022D3DE6C8630317" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCBDBD0034">
+ <ownedComment xmi:id="_rsBf0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBDBD028D">
+ <body>References the contexts that this element may be redefined from.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsBf1RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsBf1BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBE1F00FD" name="redefinedElement" type="_3ADC7B74022D3DE6C81D0244" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCBE1D0317">
+ <ownedComment xmi:id="_rsLQxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBE1F00FD">
+ <body>The redefinable element that is being redefined by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsLQyRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsLQyBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00D3" name="isConsistentWith" isQuery="true" bodyCondition="_rl632xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rl631hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00D3">
+ <body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rl632xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00D3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl633BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rl632RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE64AA02E3" name="redefinee" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00D6" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_rl635RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rl634BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00D6">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rl635RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00D6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl635hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.redefinitionContext->exists(c | redefined.redefinitionContext->exists(r | c.allParents()->includes(r)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rl634xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE64EE00CE" name="redefined" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C8270177" name="Relationship" isAbstract="true">
+ <ownedComment xmi:id="_rmEowRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C8270177">
+ <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6CFE2015E" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCAC2F019B" name="relatedElement" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCAC2E0366">
+ <ownedComment xmi:id="_rr4V2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCAC2F019B">
+ <body>Specifies the elements related by the Relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rr4V3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rr4V3RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C7C40188" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rmEoxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C7C40188">
+ <body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6CB390054" general="_3ADC7B74022D3DE6C7BD0034"/>
+ <generalization xmi:id="_3ADC7B74022D3DE6CC05022E" general="_3ADC7B74022D3DE6C3F20254"/>
+ <generalization xmi:id="_3ADC7B74022D3E5613120088" general="_3ADC7B74022D3DE6C66D02F8"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C3F20254" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_rmEozRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C3F20254">
+ <body>A typed element is a kind of named element that represents an element with a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF7855A0232" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6C94D0011" name="type" type="_3ADC7B74022D3E555229003B" association="_3ADC7B74022D3DE6C94B00D6">
+ <ownedComment xmi:id="_rpo6MBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C94D0011">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpo6NBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpo6MxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C7F30294" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_rmEo0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C7F30294">
+ <body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E555E8603B8" general="_3ADC7B74022D3DE6C3F20254"/>
+ <generalization xmi:id="_3ADC7B74022D410311770285" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00B9" name="isComputable" isQuery="true" bodyCondition="_rmNysxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmEo2BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00B9">
+ <body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNysxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00B9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNytBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyshTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00BB" name="integerValue" isQuery="true" bodyCondition="_rmNyvBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNyuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00BB">
+ <body>The query integerValue() gives a single Integer value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNyvBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00BB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNyvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyuxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00BD" name="booleanValue" isQuery="true" bodyCondition="_rmNyxRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNywRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00BD">
+ <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNyxRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNyxhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyxBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00BF" name="stringValue" isQuery="true" bodyCondition="_rmNyzhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNyyhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00BF">
+ <body>The query stringValue() gives a single String value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNyzhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00BF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNyzxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyzRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C2" name="unlimitedValue" isQuery="true" bodyCondition="_rmXjsxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNy0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C2">
+ <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmXjsxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmXjtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmXjshTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C4" name="isNull" isQuery="true" bodyCondition="_rmXjvBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmXjuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C4">
+ <body>The query isNull() returns true when it can be computed that the value is null.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmXjvBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmXjvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmXjuxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6E15D033A" name="Association">
+ <ownedComment xmi:id="_rmXjwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E15D033A">
+ <body>An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmXjyxTaEdqZu-3Jy1-uYg" name="association_ends" constrainedElement="_3ADC7B74022D3DE6E15D033A">
+ <ownedComment xmi:id="_rmXjxxTaEdqZu-3Jy1-uYg" annotatedElement="_rmXjyxTaEdqZu-3Jy1-uYg">
+ <body>Association ends of associations with more than two ends must be owned by the association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmXjzBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6E1D202E8" general="_3ADC7B74022D3DE6C8630317"/>
+ <generalization xmi:id="_3ADC7B74022D3DE75CA3037C" general="_3ADC7B74022D3DE6C8270177"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E7AB0308" name="isDerived" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rmXj0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E7AB0308">
+ <body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ges4EBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E409010C" name="ownedEnd" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E3EF0097 _3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E40802BA">
+ <ownedComment xmi:id="_rp8cKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E409010C">
+ <body>The ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp8cLhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rp8cLRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE75D87003B" name="endType" type="_3ADC7B74022D3E555229003B" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3DFCAC2F019B" association="_3ADC7B74022D3DE75D86027E">
+ <ownedComment xmi:id="_rqZIHRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE75D87003B">
+ <body>References the classifiers that are used as types of the ends of the association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqZIIRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqZIIBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E3EF0097" name="memberEnd" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D3DE6E3EE01F4">
+ <ownedComment xmi:id="_rrbp4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E3EF0097">
+ <body>Each end represents participation of instances of the classifier connected to the end in links of the association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrbp5hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrbp5RTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F14C010058" name="navigableOwnedEnd" type="_3ADC7B74022D3DE6D57500AC" subsettedProperty="_3ADC7B74022D3DE6E409010C" association="_3ADC7B74022D40F14BFF0313">
+ <ownedComment xmi:id="_rsxtwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F14C010058">
+ <body>The navigable ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtxxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtxhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5AD039B" name="Class">
+ <ownedComment xmi:id="_rmXj1RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5AD039B">
+ <body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6E1B0011C" general="_3ADC7B74022D3DE6C8630317"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E37402AD" name="isAbstract" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rmgtrhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E37402AD">
+ <body>True when a class is abstract.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ge2pEBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2E2028F" name="ownedAttribute" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E42E034A _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E2E1037E">
+ <ownedComment xmi:id="_rpo6OBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E2E2028F">
+ <body>The attributes (i.e. the properties) owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpyrIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpyrIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E30F008B" name="ownedOperation" type="_3ADC7B74022D3DE6D56F031A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E30E0260">
+ <ownedComment xmi:id="_rpyrKxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E30F008B">
+ <body>The operations owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpyrLxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpyrLhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E8DF0225" name="superClass" type="_3ADC7B74022D3DE6D5AD039B" redefinedProperty="_3ADC7B74022D3E0270BE0395" association="_3ADC7B74022D3DE6E8DE0061">
+ <ownedComment xmi:id="_rqZIFRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E8DF0225">
+ <body>This gives the superclasses of a class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqZIGRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqZIGBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1420C102C4" name="inherit" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0100" bodyCondition="_rmgtqRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmgtpBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1420C102C4">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmgtqRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1420C102C4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmgtqhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmgtpxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfAaERTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfAaEBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1420FA004F" name="inhs" type="_3ADC7B74022D3DE6BC6B01BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfAaExTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfAaEhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D57500AC" name="Property">
+ <ownedComment xmi:id="_rmgtsxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D57500AC">
+ <body>A property is a structural feature of a classifier that characterizes instances of the classifier. A property related by ownedAttribute to a classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the class to a value or set of values of the type of the attribute. A property related by memberEnd or its specializations to an association represents an end of the association. The type of the property is the type of the end of the association.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmqepxTaEdqZu-3Jy1-uYg" name="multiplicity_of_composite" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqeoxTaEdqZu-3Jy1-uYg" annotatedElement="_rmqepxTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity of a composite aggregation must not have an upper bound greater than 1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqeqBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rmqesBTaEdqZu-3Jy1-uYg" name="subsetting_context_conforms" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqerBTaEdqZu-3Jy1-uYg" annotatedElement="_rmqesBTaEdqZu-3Jy1-uYg">
+ <body>Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqesRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subsettedProperty->notEmpty() implies&#xA; (self.subsettingContext()->notEmpty() and self.subsettingContext()->forAll (sc |&#xA; self.subsettedProperty->forAll(sp |&#xA; sp.subsettingContext()->exists(c | sc.conformsTo(c)))))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rmqeuRTaEdqZu-3Jy1-uYg" name="redefined_property_inherited" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqetRTaEdqZu-3Jy1-uYg" annotatedElement="_rmqeuRTaEdqZu-3Jy1-uYg">
+ <body>A redefined property must be inherited from a more general classifier containing the redefining property.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqeuhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if (redefinedProperty->notEmpty()) then&#xA; (redefinitionContext->notEmpty() and&#xA; redefinedProperty->forAll(rp|&#xA; ((redefinitionContext->collect(fc|&#xA; fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rmqewhTaEdqZu-3Jy1-uYg" name="subsetting_rules" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqevhTaEdqZu-3Jy1-uYg" annotatedElement="_rmqewhTaEdqZu-3Jy1-uYg">
+ <body>A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqewxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subsettedProperty->forAll(sp |&#xA; self.type.conformsTo(sp.type) and&#xA; ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xA; self.upperBound()&lt;=sp.upperBound() ))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rm0PoxTaEdqZu-3Jy1-uYg" name="navigable_readonly" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqexxTaEdqZu-3Jy1-uYg" annotatedElement="_rm0PoxTaEdqZu-3Jy1-uYg">
+ <body>Only a navigable property can be marked as readOnly.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isReadOnly implies isNavigable()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rm0PrBTaEdqZu-3Jy1-uYg" name="derived_union_is_derived" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rm0PqBTaEdqZu-3Jy1-uYg" annotatedElement="_rm0PrBTaEdqZu-3Jy1-uYg">
+ <body>A derived union is derived.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isDerivedUnion implies isDerived</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ATEKgGgEEdqfYrlcy8iLFA" name="subsetted_property_names" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_H7EdsGgEEdqfYrlcy8iLFA" annotatedElement="_ATEKgGgEEdqfYrlcy8iLFA">
+ <body>A property may not subset a property with the same name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ATEKgWgEEdqfYrlcy8iLFA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6E646016A" general="_3ADC7B74022D3DE6C7C40188"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E9C30088" name="isReadOnly" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm0PzxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E9C30088">
+ <body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfAaFBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4201104A02AF" name="default" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rm9ZlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4201104A02AF">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rm9ZmBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rm9ZlxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4201106900A1" name="isComposite" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm9ZmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4201106900A1">
+ <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfAaFRTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D420110720361" name="isDerived" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm9ZnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D420110720361">
+ <body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfJkABTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF85B580203" name="isDerivedUnion" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm9ZpBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF85B580203">
+ <body>Specifies whether the property is derived as the union of all of the properties that are constrained to subset it.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfJkARTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2E20299" name="class" type="_3ADC7B74022D3DE6D5AD039B" subsettedProperty="_3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A _3ADC7B74022D3DE6E42E035E" association="_3ADC7B74022D3DE6E2E1037E">
+ <ownedComment xmi:id="_vBHVQGd5EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3DE6E2E20299">
+ <body>References the Class that owns the Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpyrJhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpyrJRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E4090120" name="owningAssociation" type="_3ADC7B74022D3DE6E15D033A" subsettedProperty="_3ADC7B74022D3DE6E3EF00AB _3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A" association="_3ADC7B74022D3DE6E40802BA">
+ <ownedComment xmi:id="_rp8cMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E4090120">
+ <body>References the owning association of this property, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp8cNBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rp8cMxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E711018A" name="redefinedProperty" type="_3ADC7B74022D3DE6D57500AC" subsettedProperty="_3ADC7B74022D3DFCBE1F00FD" association="_3ADC7B74022D3DE6E70F039A">
+ <ownedComment xmi:id="_rqPXEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E711018A">
+ <body>References the properties that are redefined by this property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqPXFhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqPXFRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E7430363" name="subsettedProperty" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E7410360">
+ <ownedComment xmi:id="_rqPXGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E7430363">
+ <body>References the properties of which this property is constrained to be a subset.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqPXHhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqPXHRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E76603BD" name="opposite" type="_3ADC7B74022D3DE6D57500AC" isDerived="true" association="_3ADC7B74022D3DE6E7650159">
+ <ownedComment xmi:id="_rqPXIhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E76603BD">
+ <body>In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqPXJhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqPXJRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2290166" name="datatype" type="_3ADC7B74022D3DE6D25202A6" subsettedProperty="_3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A _3ADC7B74022D3DE6E42E035E" association="_3ADC7B74022D3DE6E2280287">
+ <ownedComment xmi:id="_rqiSExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E2290166">
+ <body>The DataType that owns this Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSFxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSFhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E3EF00AB" name="association" type="_3ADC7B74022D3DE6E15D033A" association="_3ADC7B74022D3DE6E3EE01F4">
+ <ownedComment xmi:id="_rrbp6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E3EF00AB">
+ <body>References the association of which this property is a member, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrbp7BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrbp6xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14246901E3" name="opposite" isQuery="true" bodyCondition="_rmgtvBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmgtuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14246901E3">
+ <body>If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmgtvBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14246901E3 _3ADC7B74022D3DE6E76603BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmgtvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if owningAssociation->isEmpty() and association.memberEnd->size() = 2&#xA; then&#xA; let otherEnd = (association.memberEnd - self)->any() in&#xA; if otherEnd.owningAssociation->isEmpty() then otherEnd else Set{} endif&#xA; else Set {}&#xA; endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmgtuxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6D57500AC" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1427A80242" name="isConsistentWith" isQuery="true" precondition="_rm0PthTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D42EE305C00D3" bodyCondition="_rm0PuBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rm0PsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1427A80242">
+ <body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property, and the redefining property is derived if the redefined property is derived.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rm0PthTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1427A80242">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PtxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rm0PuBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1427A80242">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PuRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = redefinee.oclIsKindOf(Property) and &#xA; let prop : Property = redefinee.oclAsType(Property) in &#xA; (prop.type.conformsTo(self.type) and &#xA; ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and &#xA; ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and &#xA; (self.isDerived implies prop.isDerived) and&#xA; (self.isComposite implies prop.isComposite))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rm0PtBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1427BE0258" name="redefinee" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1428A50264" name="subsettingContext" isQuery="true" bodyCondition="_rm0PwRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rm0PvRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1428A50264">
+ <body>The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rm0PwRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1428A50264">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PwhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if association->notEmpty()&#xA;then association.endType-type &#xA;else if classifier->notEmpty then Set{classifier} else Set{} endif&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rm0PwBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfdGARTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfdGABTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D430B77C7031C" name="isNavigable" isQuery="true" bodyCondition="_rm0PyhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rm0PxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430B77C7031C">
+ <body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rm0PyhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D430B77C7031C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PyxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = not classifier->isEmpty() or&#xA;association.owningAssociation.navigableOwnedEnd->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rm0PyRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_1PbZwDc2Edqq1tCaRkgBQQ" name="isAttribute" isQuery="true" bodyCondition="_LLHN8Dc3Edqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_BL2vgDc3Edqq1tCaRkgBQQ" annotatedElement="_1PbZwDc2Edqq1tCaRkgBQQ">
+ <body>The query isAttribute() is true if the Property is defined as an attribute of some classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_LLHN8Dc3Edqq1tCaRkgBQQ" name="spec" constrainedElement="_1PbZwDc2Edqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_LLHN8Tc3Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = Classifier->allInstances->exists(c | c.attribute->includes(p))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_61gRcDc2Edqq1tCaRkgBQQ" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_BnHvMDc3Edqq1tCaRkgBQQ" name="p" type="_3ADC7B74022D3DE6D57500AC" effect="read"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D25202A6" name="DataType">
+ <ownedComment xmi:id="_rnHKkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D25202A6">
+ <body>A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE7FF2011D" general="_3ADC7B74022D3DE6C8630317"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2290152" name="ownedAttribute" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E42E034A _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E2280287">
+ <ownedComment xmi:id="_rqiSDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E2290152">
+ <body>The Attributes owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSERTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSEBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E23E008A" name="ownedOperation" type="_3ADC7B74022D3DE6D56F031A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E23D0179">
+ <ownedComment xmi:id="_rqiSGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E23E008A">
+ <body>The Operations owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqsDAxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqsDAhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1423CF02D2" name="inherit" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0100" bodyCondition="_rnHKnRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnHKmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1423CF02D2">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnHKnRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1423CF02D2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnHKnhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnHKmxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfdGAxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfdGAhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1423F502F5" name="inhs" type="_3ADC7B74022D3DE6BC6B01BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfdGBRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfdGBBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D2750152" name="Enumeration">
+ <ownedComment xmi:id="_rnHKohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D2750152">
+ <body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6D2D7038E" general="_3ADC7B74022D3DE6D25202A6"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6D38600DC" name="ownedLiteral" type="_3ADC7B74022D3DE6D2910397" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6D3850275">
+ <ownedComment xmi:id="_rqiSABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D38600DC">
+ <body>The ordered set of literals for this Enumeration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSBBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSAxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D2910397" name="EnumerationLiteral">
+ <ownedComment xmi:id="_rnHKpxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D2910397">
+ <body>An enumeration literal is a user-defined data value for an enumeration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF67B060099" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6D38600E6" name="enumeration" type="_3ADC7B74022D3DE6D2750152" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DE6D3850275">
+ <ownedComment xmi:id="_rqiSBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D38600E6">
+ <body>The Enumeration that this EnumerationLiteral is a member of.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSChTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSCRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D2570393" name="PrimitiveType">
+ <ownedComment xmi:id="_rnHKrBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D2570393">
+ <body>A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6D2C30371" general="_3ADC7B74022D3DE6D25202A6"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE766450007" name="Constraint">
+ <ownedComment xmi:id="_rnQUhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE766450007">
+ <body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnQUjRTaEdqZu-3Jy1-uYg" name="not_apply_to_self" constrainedElement="_3ADC7B74022D3DE766450007">
+ <ownedComment xmi:id="_rnQUiRTaEdqZu-3Jy1-uYg" annotatedElement="_rnQUjRTaEdqZu-3Jy1-uYg">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnQUjhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rnQUlRTaEdqZu-3Jy1-uYg" name="value_specification_boolean" constrainedElement="_3ADC7B74022D3DE766450007">
+ <ownedComment xmi:id="_rnQUkhTaEdqZu-3Jy1-uYg" annotatedElement="_rnQUlRTaEdqZu-3Jy1-uYg">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnQUlhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE76BB00097" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCC85C023D" name="constrainedElement" type="_3ADC7B74022D3DE6BAB70076" isOrdered="true" association="_3ADC7B74022D3DFCC85C000C">
+ <ownedComment xmi:id="_51DioBVsEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DFCC85C023D">
+ <body>The ordered set of Elements referenced by this Constraint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsVB2hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsVB2RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCC88D0337" name="specification" type="_3ADC7B74022D3DE6C7F30294" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DFCC88D0157">
+ <ownedComment xmi:id="_rseLsxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCC88D0337">
+ <body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rseLtxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rseLthTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_s_9I8h-zEdqIE6mxof-rZA" name="context" type="_3ADC7B74022D3DE6C03E0388" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_s_9I8B-zEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zja18R-zEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zja18B-zEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D62D0024" name="OpaqueExpression">
+ <ownedComment xmi:id="_rnQUmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D62D0024">
+ <body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <ownedRule xmi:id="__NpH0DdhEdqq1tCaRkgBQQ" name="language_body_size" constrainedElement="_3ADC7B74022D3DE6D62D0024">
+ <ownedComment xmi:id="_ZctcwDdiEdqq1tCaRkgBQQ" annotatedElement="__NpH0DdhEdqq1tCaRkgBQQ">
+ <body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="__NpH0TdhEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>language->notEmpty() implies (body->size() = language->size())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6D7A30004" general="_3ADC7B74022D3DE6C7F30294"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41FC52E503B5" name="body" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rs63thTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41FC52E503B5">
+ <body>The text of the expression, possibly in multiple languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63uhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63uRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41FC52EF0215" name="language" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rtEooBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41FC52EF0215">
+ <body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rtEopBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rtEooxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D56F031A" name="Operation">
+ <ownedComment xmi:id="_rnaFgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D56F031A">
+ <body>An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rntAexTaEdqZu-3Jy1-uYg" name="only_body_for_query" constrainedElement="_3ADC7B74022D3DE6D56F031A">
+ <ownedComment xmi:id="_rntAdxTaEdqZu-3Jy1-uYg" annotatedElement="_rntAexTaEdqZu-3Jy1-uYg">
+ <body>A bodyCondition can only be specified for a query operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAfBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>bodyCondition->notEmpty() implies isQuery</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rntAkBTaEdqZu-3Jy1-uYg" name="at_most_one_return" constrainedElement="_3ADC7B74022D3DE6D56F031A">
+ <ownedComment xmi:id="_rntAjBTaEdqZu-3Jy1-uYg" annotatedElement="_rntAkBTaEdqZu-3Jy1-uYg">
+ <body>An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAkRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE763490012" general="_3ADC7B74022D3DE7632A0090"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF85B94039A" name="isQuery" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rntAlRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF85B94039A">
+ <body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfmP8BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E03284C0289" name="isOrdered" type="_3ADC7B74022D3CA010AC0090" isDerived="true">
+ <ownedComment xmi:id="_rn2xdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E03284C0289">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_SxMa0CkbEdqPP7hCKvQ4ww"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E032859015B" name="isUnique" type="_3ADC7B74022D3CA010AC0090" isDerived="true">
+ <ownedComment xmi:id="_rn2xehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E032859015B">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_bulzoCkbEdqPP7hCKvQ4ww" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0328B001D9" name="lower" type="_3ADC7B74022D3CA010A4007B" isDerived="true">
+ <ownedComment xmi:id="_rn2xgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0328B001D9">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rn2xhBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rn2xgxTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_IQd8ICkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0328710341" name="upper" type="_3ADC7B74022D3DE6A93C0003" isDerived="true">
+ <ownedComment xmi:id="_roAicxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0328710341">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_roAidxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_roAidhTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JYIu0CkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E30F0095" name="class" type="_3ADC7B74022D3DE6D5AD039B" subsettedProperty="_3ADC7B74022D3DFCBDBD028D _3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A" association="_3ADC7B74022D3DE6E30E0260">
+ <ownedComment xmi:id="_rp8cIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E30F0095">
+ <body>The class that owns the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp8cJRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rp8cJBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E23E0094" name="datatype" type="_3ADC7B74022D3DE6D25202A6" subsettedProperty="_3ADC7B74022D3DFCBDBD028D _3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A" association="_3ADC7B74022D3DE6E23D0179">
+ <ownedComment xmi:id="_rqsDBRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E23E0094">
+ <body>The DataType that owns this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqsDCRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqsDCBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE7654A0345" name="raisedException" type="_3ADC7B74022D3E555229003B" redefinedProperty="_3ADC7B74022D3DE76511013A" association="_3ADC7B74022D3DE7654A013C">
+ <ownedComment xmi:id="_rqsDDBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7654A0345">
+ <body>References the Types representing exceptions that may be raised during an invocation of this operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqsDEBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqsDDxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE767BD001B" name="redefinedOperation" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_3ADC7B74022D3DFCBE1F00FD" association="_3ADC7B74022D3DE767BB0358">
+ <ownedComment xmi:id="_rq10CRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE767BD001B">
+ <body>References the Operations that are redefined by this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq10DRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq10DBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE7BDA017A" name="type" type="_3ADC7B74022D3E555229003B" isDerived="true" association="_3ADC7B74022D3DEE7BD90219">
+ <ownedComment xmi:id="_rrla5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE7BDA017A">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla6hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla6RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4161AA270132" name="ownedParameter" type="_3ADC7B74022D3DE6D57D00A3" isOrdered="true" aggregation="composite" redefinedProperty="_3ADC7B74022D3DE7637803DB" association="_3ADC7B74022D4161AA250298">
+ <ownedComment xmi:id="_rsxtyxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161AA270132">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63oxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63ohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_nWbKER-yEdqIE6mxof-rZA" name="precondition" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_s_9I8R-zEdqIE6mxof-rZA" association="_nWbKEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nWbKFB-yEdqIE6mxof-rZA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nWbKEx-yEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_s0ANER-yEdqIE6mxof-rZA" name="postcondition" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_s_9I8R-zEdqIE6mxof-rZA" association="_s0ANEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0ANFB-yEdqIE6mxof-rZA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0ANEx-yEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_uPMYsR-yEdqIE6mxof-rZA" name="bodyCondition" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_s_9I8R-zEdqIE6mxof-rZA" association="_uPMYsB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uPMYtB-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uPMYsx-yEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142EC50359" name="isOrdered" isQuery="true" bodyCondition="_rnaFihTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnaFhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142EC50359">
+ <body>If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnaFihTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142EC50359 _3ADC7B74022D3E03284C0289">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnaFixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().isOrdered else false endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnaFiRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142F090090" name="isUnique" isQuery="true" bodyCondition="_rnaFkxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnaFjxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142F090090">
+ <body>If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnaFkxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142F090090 _3ADC7B74022D3E032859015B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnaFlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().isUnique else true endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnaFkhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142F3E03CB" name="lower" isQuery="true" bodyCondition="_rnj2hhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnj2gBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142F3E03CB">
+ <body>If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnj2hhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142F3E03CB _3ADC7B74022D3E0328B001D9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnj2hxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().lower else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnj2gxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142F7500B3" name="upper" isQuery="true" bodyCondition="_rnj2kRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnj2ixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142F7500B3">
+ <body>If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnj2kRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142F7500B3 _3ADC7B74022D3E0328710341">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnj2khTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().upper else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnj2jhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142FBB01EA" name="type" isQuery="true" bodyCondition="_rntAchTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnj2lhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142FBB01EA">
+ <body>If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rntAchTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142FBB01EA _3ADC7B74022D3DEE7BDA017A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAcxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().type else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnj2mRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3E555229003B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E143033011B" name="isConsistentWith" isQuery="true" precondition="_rntAhRTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D42EE305C00D3" bodyCondition="_rntAhxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rntAgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E143033011B">
+ <body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rntAhRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E143033011B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAhhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rntAhxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E143033011B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAiBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (redefinee.oclIsKindOf(Operation) and&#xA; let op: Operation = redefinee.oclAsType(Operation) in&#xA; self.formalParameter.size() = op.formalParameter.size() and&#xA; self.returnResult.size() = op.returnResult.size() and&#xA; forAll(i | op.formalParameter[i].type.conformsTo(self.formalParameter[i].type)) and&#xA; forAll(i | op.returnResult[i].type.conformsTo(self.returnResult[i].type))&#xA;)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rntAgxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E14304B03AA" name="redefinee" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ipBfsB8WEdqZ_KzuBfefCA" name="returnResult" isQuery="true" bodyCondition="__KtXgB8WEdqZ_KzuBfefCA">
+ <ownedRule xmi:id="__KtXgB8WEdqZ_KzuBfefCA" name="spec" constrainedElement="_ipBfsB8WEdqZ_KzuBfefCA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="__KtXgR8WEdqZ_KzuBfefCA">
+ <language>OCL</language>
+ <body>result = ownedParameter->select (par | par.direction = #return)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_q_YGoB8WEdqZ_KzuBfefCA" type="_3ADC7B74022D3DE6D57D00A3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wVqO0B8WEdqZ_KzuBfefCA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vYQycB8WEdqZ_KzuBfefCA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D57D00A3" name="Parameter">
+ <ownedComment xmi:id="_roAiexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D57D00A3">
+ <body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE1EF703C3" general="_3ADC7B74022D3DE6C3F20254"/>
+ <generalization xmi:id="_3ADC7B74022D3E56142D01A7" general="_3ADC7B74022D3DE6C66D02F8"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE7647D021E" name="default" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_roAigRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7647D021E">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_roAihRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_roAihBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4161A8A60091" name="direction" type="_3ADC7B74022D4161A8F100CC">
+ <ownedComment xmi:id="_roAihxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A8A60091">
+ <body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_roAiihTaEdqZu-3Jy1-uYg" instance="_3ADC7B74022D4161A93C01BC"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4161AA27013C" name="operation" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D4161AA250298">
+ <ownedComment xmi:id="_rs63pRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161AA27013C">
+ <body>References the Operation owning this parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63qRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63qBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE7632A0090" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_roTdYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7632A0090">
+ <body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE20740031" general="_3ADC7B74022D3DE6C7BD0034"/>
+ <generalization xmi:id="_3ADC7B74022D3DEE21650100" general="_3ADC7B74022D3DE6C03E0388"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE7637803DB" name="ownedParameter" type="_3ADC7B74022D3DE6D57D00A3" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE76378015A">
+ <ownedComment xmi:id="_rq10ERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7637803DB">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq10FRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq10FBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE76511013A" name="raisedException" type="_3ADC7B74022D3E555229003B" association="_3ADC7B74022D3DE7651002AB">
+ <ownedComment xmi:id="_rq10GxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE76511013A">
+ <body>References the Types representing exceptions that may be raised during an invocation of this feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq-98RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq-98BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142E0F01A9" name="isDistinguishableFrom" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0081" bodyCondition="_roTdbRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_roTdZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142E0F01A9">
+ <body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_roTdbRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142E0F01A9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_roTdbhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if n.oclIsKindOf(BehavioralFeature)&#xA;then&#xA; if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()&#xA; then Set{}->include(self)->include(n)->isUnique( bf | bf.parameter->collect(type))&#xA; else true&#xA; endif&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_roTdahTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142E3102A2" name="n" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142E43008B" name="ns" type="_3ADC7B74022D3DE6C03E0388"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5E7016E" name="ElementImport">
+ <ownedComment xmi:id="_roTdchTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5E7016E">
+ <body>An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rodOYxTaEdqZu-3Jy1-uYg" name="visibility_public_or_private" constrainedElement="_3ADC7B74022D3DE6D5E7016E">
+ <ownedComment xmi:id="_roTddxTaEdqZu-3Jy1-uYg" annotatedElement="_rodOYxTaEdqZu-3Jy1-uYg">
+ <body>The visibility of an ElementImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rodOZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rodObBTaEdqZu-3Jy1-uYg" name="imported_element_is_public" constrainedElement="_3ADC7B74022D3DE6D5E7016E">
+ <ownedComment xmi:id="_rodOaBTaEdqZu-3Jy1-uYg" annotatedElement="_rodObBTaEdqZu-3Jy1-uYg">
+ <body>An importedElement has either public visibility or no visibility at all.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rodObRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6DFF400E2" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE87110345" name="visibility" type="_3ADC7B74022D41C2D6020188">
+ <ownedComment xmi:id="_rodOehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE87110345">
+ <body>Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_1VPa8GgXEdqfYrlcy8iLFA" type="_3ADC7B74022D41C2D6020188" instance="_3ADC7B74022D41C2D6140206"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE875F0333" name="alias" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rodOfhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE875F0333">
+ <body>Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rodOghTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rodOgRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6DF6803A7" name="importedElement" type="_3ADC7B74022D3DE6C1F002C3" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3DE6DF68013A">
+ <ownedComment xmi:id="_rq--BxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6DF6803A7">
+ <body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIu8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIu8hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E0040317" name="importingNamespace" type="_3ADC7B74022D3DE6C03E0388" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DE6E0040076">
+ <ownedComment xmi:id="_rrIu_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E0040317">
+ <body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIvARTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIvABTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1429E403A3" name="getName" isQuery="true" bodyCondition="_rodOdRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rodOcRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1429E403A3">
+ <body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rodOdRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1429E403A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rodOdhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.alias->notEmpty() then &#xA; self.alias&#xA;else&#xA; self.importedElement.name&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rodOdBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5DA0183" name="Package">
+ <ownedComment xmi:id="_rodOhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5DA0183">
+ <body>A package is used to group elements, and provides a namespace for the grouped elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_romYWRTaEdqZu-3Jy1-uYg" name="elements_public_or_private" constrainedElement="_3ADC7B74022D3DE6D5DA0183">
+ <ownedComment xmi:id="_romYVRTaEdqZu-3Jy1-uYg" annotatedElement="_romYWRTaEdqZu-3Jy1-uYg">
+ <body>If an element that is owned by a package has visibility, it is public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_romYWhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6DDF7023E" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <generalization xmi:id="_3ADC7B74022D3DE6DFA30185" general="_3ADC7B74022D3DE6C03E0388"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E0F500FF" name="packagedElement" type="_3ADC7B74022D3DE6C1F002C3" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E0F402CA">
+ <ownedComment xmi:id="_rrR45hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E0F500FF">
+ <body>Specifies the packageable elements that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR46hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR46RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE344701CC" name="ownedType" type="_3ADC7B74022D3E555229003B" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0F500FF" association="_3ADC7B74022D3DEE344602C4">
+ <ownedComment xmi:id="_rrR48BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE344701CC">
+ <body>References the packaged elements that are Types.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR49BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR48xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE6FD3029F" name="nestedPackage" type="_3ADC7B74022D3DE6D5DA0183" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0F500FF" association="_3ADC7B74022D3DEE6FD102CF">
+ <ownedComment xmi:id="_rrbp7xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE6FD3029F">
+ <body>References the packaged elements that are Packages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrbp8xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrbp8hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE6FD302F9" name="nestingPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DEE6FD102CF">
+ <ownedComment xmi:id="_rrbp9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE6FD302F9">
+ <body>References the Package that owns this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF68066000E" name="packageMerge" type="_3ADC7B74022D3DEE8DFE0290" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DF68066000C">
+ <ownedComment xmi:id="_rrla9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF68066000E">
+ <body>References the PackageMerges that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla-hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla-RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14315003AF" name="mustBeOwned" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0073" bodyCondition="_romYYhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_romYXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14315003AF">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_romYYhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14315003AF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_romYYxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_romYYRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E143175007D" name="visibleMembers" isQuery="true" bodyCondition="_romYaxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_romYZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E143175007D">
+ <body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_romYaxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E143175007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_romYbBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select( m | self.makesVisible(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_romYahTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GgMs4RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GgMs4BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1431A90385" name="makesVisible" isQuery="true" precondition="_rowJVBTaEdqZu-3Jy1-uYg" bodyCondition="_rowJVhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_romYcBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1431A90385">
+ <body>The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rowJVBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1431A90385">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rowJVRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.member->includes(el)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rowJVhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1431A90385">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rowJVxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (ownedMember->includes(el)) or&#xA; (elementImport->&#xA; select(ei|ei.visibility = #public)->&#xA; collect(ei|ei.importedElement)->includes(el)) or&#xA; (packageImport->&#xA; select(pi|pi.visibility = #public)->&#xA; collect(pi|&#xA; pi.importedPackage.member->includes(el))->notEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rowJUhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1431D80292" name="el" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5E002D7" name="PackageImport">
+ <ownedComment xmi:id="_rowJWxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5E002D7">
+ <body>A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rowJZBTaEdqZu-3Jy1-uYg" name="public_or_private" constrainedElement="_3ADC7B74022D3DE6D5E002D7">
+ <ownedComment xmi:id="_rowJYBTaEdqZu-3Jy1-uYg" annotatedElement="_rowJZBTaEdqZu-3Jy1-uYg">
+ <body>The visibility of a PackageImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rowJZRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6DFFC022E" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE878403C3" name="visibility" type="_3ADC7B74022D41C2D6020188">
+ <ownedComment xmi:id="_rowJaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE878403C3">
+ <body>Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_CTYsYGgYEdqfYrlcy8iLFA" type="_3ADC7B74022D41C2D6020188" instance="_3ADC7B74022D41C2D6140206"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6DEFF023E" name="importedPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3DE6DEFE0106">
+ <ownedComment xmi:id="_rq-9_xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6DEFF023E">
+ <body>Specifies the Package whose members are imported into a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq--AxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq--AhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E00902D7" name="importingNamespace" type="_3ADC7B74022D3DE6C03E0388" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DE6E00900B0">
+ <ownedComment xmi:id="_rrIvChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E00902D7">
+ <body>Specifies the Namespace that imports the members from a Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR44xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR44hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DEE8DFE0290" name="PackageMerge">
+ <ownedComment xmi:id="_rowJbRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE8DFE0290">
+ <body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE8EAA032E" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF68066000D" name="receivingPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DF68066000C">
+ <ownedComment xmi:id="_rrla8BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF68066000D">
+ <body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla9BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla8xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF6806A03A2" name="mergedPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3DF6806A03A1">
+ <ownedComment xmi:id="_rruk0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF6806A03A2">
+ <body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rruk1hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rruk1RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E555229003B" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_ro5TQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555229003B">
+ <body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E5553B3007E" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <generalization xmi:id="_3ADC7B74022D3E5558D50178" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE344701FE" name="package" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DEE344602C4">
+ <ownedComment xmi:id="_rrR4-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE344701FE">
+ <body>Specifies the owning package of this classifier, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR4_BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR4-xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C010B" name="conformsTo" isQuery="true" bodyCondition="_ro5TTBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ro5TRxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C010B">
+ <body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ro5TTBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C010B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ro5TTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ro5TShTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE66DC039F" name="other" type="_3ADC7B74022D3E555229003B"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6BC6B01BD" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_ro5TURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ro5TWhTaEdqZu-3Jy1-uYg" name="has_no_qualified_name" constrainedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <ownedComment xmi:id="_ro5TVhTaEdqZu-3Jy1-uYg" annotatedElement="_ro5TWhTaEdqZu-3Jy1-uYg">
+ <body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ro5TWxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rpDEQxTaEdqZu-3Jy1-uYg" name="has_qualified_name" constrainedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <ownedComment xmi:id="_ro5TXxTaEdqZu-3Jy1-uYg" annotatedElement="_rpDEQxTaEdqZu-3Jy1-uYg">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDERBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA; self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rpM1RxTaEdqZu-3Jy1-uYg" name="visibility_needs_ownership" constrainedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <ownedComment xmi:id="_rpM1QxTaEdqZu-3Jy1-uYg" annotatedElement="_rpM1RxTaEdqZu-3Jy1-uYg">
+ <body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpM1SBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>namespace->isEmpty() implies visibility->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6BC7D03AE" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6BF540255" name="name" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rpM1TBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6BF540255">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpM1UBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpM1TxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C2D63E00EE" name="visibility" type="_3ADC7B74022D41C2D6020188">
+ <ownedComment xmi:id="_rpM1UhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D63E00EE">
+ <body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpM1VhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpM1VRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCB86501A0" name="namespace" type="_3ADC7B74022D3DE6C03E0388" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DFCB86303CD">
+ <ownedComment xmi:id="_rsn8uhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCB86501A0">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsn8vhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsn8vRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7-d1kIa_EdqhgMOAOWpjfQ" name="qualifiedName" type="_3ADC7B74022D3CA010B103C3" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_7-d1k4a_EdqhgMOAOWpjfQ" annotatedElement="_7-d1kIa_EdqhgMOAOWpjfQ">
+ <body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7-d1loa_EdqhgMOAOWpjfQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7-d1l4a_EdqhgMOAOWpjfQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C007F" name="allNamespaces" isQuery="true" bodyCondition="_rpDETBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDESBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C007F">
+ <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDETBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C007F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDETRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDESxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C03E0388" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GgV20RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GgV20BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0081" name="isDistinguishableFrom" isQuery="true" bodyCondition="_rpDEVxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDEURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0081">
+ <body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDEVxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0081">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDEWBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDEVBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE5CF7032F" name="n" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE5CF70330" name="ns" type="_3ADC7B74022D3DE6C03E0388"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00A4" name="separator" isQuery="true" bodyCondition="_rpDEYBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDEXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00A4">
+ <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDEYBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00A4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDEYRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = '::'</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDEXxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00A6" name="qualifiedName" isQuery="true" bodyCondition="_rpDEaRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDEZRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00A6">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDEaRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00A6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDEahTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDEaBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E555F19002A" name="Expression">
+ <ownedComment xmi:id="_rpM1WBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555F19002A">
+ <body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E555F33038E" general="_3ADC7B74022D3DE6C7F30294"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E55630701F3" name="operand" type="_3ADC7B74022D3DE6C7F30294" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3E5563050088">
+ <ownedComment xmi:id="_rsxtuRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E55630701F3">
+ <body>Specifies a sequence of operands.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtvRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtvBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41781AA6038F" name="Comment">
+ <ownedComment xmi:id="_rpfwMxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41781AA6038F">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DFCA9FD02FB" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDD0260325" name="body" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rpfwOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDD0260325">
+ <body>Specifies a string that is the comment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8CfA8WgVEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8CfA8GgVEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCAADC01BB" name="annotatedElement" type="_3ADC7B74022D3DE6BAB70076" association="_3ADC7B74022D3DFCAADB020A">
+ <ownedComment xmi:id="_rr4V0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCAADC01BB">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rr4V1hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rr4V1RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D4161A8F100CC" name="ParameterDirectionKind">
+ <ownedComment xmi:id="_rpM1XRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A8F100CC">
+ <body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A93C01BC" name="in">
+ <ownedComment xmi:id="_rpM1YRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A93C01BC">
+ <body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A94902E7" name="inout">
+ <ownedComment xmi:id="_rpV_MxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A94902E7">
+ <body>Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A95103E3" name="out">
+ <ownedComment xmi:id="_rpV_NxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A95103E3">
+ <body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A9580339" name="return">
+ <ownedComment xmi:id="_rpV_OxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A9580339">
+ <body>Indicates that parameter values are passed as return values from a behavioral element back to the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D41C2D6020188" name="VisibilityKind">
+ <ownedComment xmi:id="_rpfwPBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D6020188">
+ <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00E3" name="bestVisibility" isQuery="true" bodyCondition="_rpfwRRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpfwQBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00E3">
+ <body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpfwRRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00E3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpfwRhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if vis->includes(#public) then #public else #private endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpfwQxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D41C2D6020188" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE668803C7" name="vis" type="_3ADC7B74022D41C2D6020188">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ggfn0RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ggfn0BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedLiteral xmi:id="_3ADC7B74022D41C2D6140206" name="public">
+ <ownedComment xmi:id="_rpfwShTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D6140206">
+ <body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D41C2D61D0245" name="private">
+ <ownedComment xmi:id="_rpo6IxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D61D0245">
+ <body>A private element is only visible inside the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A570218" name="protected">
+ <ownedComment xmi:id="_rpo6JxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A570218">
+ <body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A60004E" name="package">
+ <ownedComment xmi:id="_rpo6KxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A60004E">
+ <body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6C94B00D6" name="A_type_typedElement" memberEnd="_3ADC7B74022D3DE6C94D0011 _3ADC7B74022D3DE6C94D001B">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6C94D001B" type="_3ADC7B74022D3DE6C3F20254" association="_3ADC7B74022D3DE6C94B00D6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E-X8QVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E-X8QFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E2E1037E" name="A_ownedAttribute_class" memberEnd="_3ADC7B74022D3DE6E2E2028F _3ADC7B74022D3DE6E2E20299"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E30E0260" name="A_ownedOperation_class" memberEnd="_3ADC7B74022D3DE6E30F008B _3ADC7B74022D3DE6E30F0095"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E40802BA" name="A_ownedEnd_owningAssociation" memberEnd="_3ADC7B74022D3DE6E409010C _3ADC7B74022D3DE6E4090120"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E42D0385" name="A_attribute_classifier" memberEnd="_3ADC7B74022D3DE6E42E034A _3ADC7B74022D3DE6E42E035E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E42E035E" name="classifier" type="_3ADC7B74022D3DE6C8630317" subsettedProperty="_3ADC7B74022D3DFCBDBD028D" association="_3ADC7B74022D3DE6E42D0385">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqFmGBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqFmFxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E70F039A" name="A_redefinedProperty_property" memberEnd="_3ADC7B74022D3DE6E711018A _3ADC7B74022D3DE6E711019E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E711019E" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E70F039A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WaSO8VooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WaSO8FooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E7410360" name="A_subsettedProperty_property" memberEnd="_3ADC7B74022D3DE6E7430363 _3ADC7B74022D3DE6E7430381">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E7430381" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E7410360">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_arRjAVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_arRjAFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E7650159" name="A_opposite_property" memberEnd="_3ADC7B74022D3DE6E76603BD _3ADC7B74022D3DE6E76603DB">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E76603DB" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E7650159">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eIaYQVooEduDzLNvRu8ZxQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eIaYQFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E8DE0061" name="A_superClass_class" memberEnd="_3ADC7B74022D3DE6E8DF0225 _3ADC7B74022D3DE6E8DF022F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E8DF022F" type="_3ADC7B74022D3DE6D5AD039B" association="_3ADC7B74022D3DE6E8DE0061">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sklG4VooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sklG4FooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE75D86027E" name="A_endType_association" memberEnd="_3ADC7B74022D3DE75D87003B _3ADC7B74022D3DE75D87004F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE75D87004F" type="_3ADC7B74022D3DE6E15D033A" association="_3ADC7B74022D3DE75D86027E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PGi7kVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PGi7kFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6D3850275" name="A_ownedLiteral_enumeration" memberEnd="_3ADC7B74022D3DE6D38600DC _3ADC7B74022D3DE6D38600E6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E2280287" name="A_ownedAttribute_datatype" memberEnd="_3ADC7B74022D3DE6E2290152 _3ADC7B74022D3DE6E2290166"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E23D0179" name="A_ownedOperation_datatype" memberEnd="_3ADC7B74022D3DE6E23E008A _3ADC7B74022D3DE6E23E0094"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE7654A013C" name="A_raisedException_operation" memberEnd="_3ADC7B74022D3DE7654A0345 _3ADC7B74022D3DE7654A0381">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE7654A0381" type="_3ADC7B74022D3DE6D56F031A" association="_3ADC7B74022D3DE7654A013C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l8HTMVoqEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l8HTMFoqEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE767BB0358" name="A_redefinedOperation_operation" memberEnd="_3ADC7B74022D3DE767BD001B _3ADC7B74022D3DE767BD0043">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE767BD0043" type="_3ADC7B74022D3DE6D56F031A" association="_3ADC7B74022D3DE767BB0358">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h-fnEVoqEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h-fnEFoqEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE76378015A" name="A_ownedParameter_ownerFormalParam" memberEnd="_3ADC7B74022D3DE7637803DB _3ADC7B74022D3DE7637901B6">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE7637901B6" name="ownerFormalParam" type="_3ADC7B74022D3DE7632A0090" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DE76378015A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq10GBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq10FxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE7651002AB" name="A_raisedException_behavioralFeature" memberEnd="_3ADC7B74022D3DE76511013A _3ADC7B74022D3DE76511016C">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE76511016C" type="_3ADC7B74022D3DE7632A0090" association="_3ADC7B74022D3DE7651002AB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0_lu4VopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0_lu4FopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE234A0342" name="A_importedMember_namespace" memberEnd="_3ADC7B74022D3DEE234B0163 _3ADC7B74022D3DEE234B0181">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE234B0181" type="_3ADC7B74022D3DE6C03E0388" association="_3ADC7B74022D3DEE234A0342">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pG4bgVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pG4bgFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6DEFE0106" name="A_importedPackage_packageImport" memberEnd="_3ADC7B74022D3DE6DEFF023E _3ADC7B74022D3DE6DEFF0252">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6DEFF0252" type="_3ADC7B74022D3DE6D5E002D7" association="_3ADC7B74022D3DE6DEFE0106">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k0_vkVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k0_vkFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6DF68013A" name="A_importedElement_elementImport" memberEnd="_3ADC7B74022D3DE6DF6803A7 _3ADC7B74022D3DE6DF6803B1">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6DF6803B1" type="_3ADC7B74022D3DE6D5E7016E" association="_3ADC7B74022D3DE6DF68013A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i6z60VopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i6z60FopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E0040076" name="A_elementImport_importingNamespace" memberEnd="_3ADC7B74022D3DE6E0040315 _3ADC7B74022D3DE6E0040317"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E00900B0" name="A_packageImport_importingNamespace" memberEnd="_3ADC7B74022D3DE6E00902C3 _3ADC7B74022D3DE6E00902D7"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E0F402CA" name="A_packagedElement_owningPackage" memberEnd="_3ADC7B74022D3DE6E0F500FF _3ADC7B74022D3DE6E0F50113">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E0F50113" name="owningPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DE6E0F402CA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR47RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR47BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE344602C4" name="A_ownedType_package" memberEnd="_3ADC7B74022D3DEE344701CC _3ADC7B74022D3DEE344701FE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E3EE01F4" name="A_memberEnd_association" memberEnd="_3ADC7B74022D3DE6E3EF0097 _3ADC7B74022D3DE6E3EF00AB"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE6FD102CF" name="A_nestedPackage_nestingPackage" memberEnd="_3ADC7B74022D3DEE6FD3029F _3ADC7B74022D3DEE6FD302F9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE7BD90219" name="A_type_operation" memberEnd="_3ADC7B74022D3DEE7BDA017A _3ADC7B74022D3DEE7BDA01A2">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE7BDA01A2" type="_3ADC7B74022D3DE6D56F031A" association="_3ADC7B74022D3DEE7BD90219">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oI7JAVoqEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oI7JAFoqEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF68066000C" name="A_receivingPackage_packageMerge" memberEnd="_3ADC7B74022D3DF68066000D _3ADC7B74022D3DF68066000E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF6806A03A1" name="A_mergedPackage_packageMerge" memberEnd="_3ADC7B74022D3DF6806A03A2 _3ADC7B74022D3DF6806A03A3">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF6806A03A3" type="_3ADC7B74022D3DEE8DFE0290" association="_3ADC7B74022D3DF6806A03A1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aFq0MVorEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aFq0MForEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCA805021A" name="A_ownedElement_owner" memberEnd="_3ADC7B74022D3DFCA80700B4 _3ADC7B74022D3DFCA80700BE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCAADB020A" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D3DFCAADC01BB _3ADC7B74022D3DFCAADC01D9">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCAADC01D9" type="_3ADC7B74022D41781AA6038F" association="_3ADC7B74022D3DFCAADB020A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5bF7wVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5bF7wFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCAC2E0366" name="A_relatedElement_relationship" memberEnd="_3ADC7B74022D3DFCAC2F019B _3ADC7B74022D3DFCAC2F01AF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCAC2F01AF" type="_3ADC7B74022D3DE6C8270177" association="_3ADC7B74022D3DFCAC2E0366">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xkxfwVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xkxfwFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCAC780308" name="A_source_directedRelationship" memberEnd="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCAC790101">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCAC790101" type="_3ADC7B74022D3DE6C82E03E4" association="_3ADC7B74022D3DFCAC780308">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zRHFwVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zRHFwFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCACAE01F7" name="A_target_directedRelationship" memberEnd="_3ADC7B74022D3DFCACAF0090 _3ADC7B74022D3DFCACAF00AE">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCACAF00AE" type="_3ADC7B74022D3DE6C82E03E4" association="_3ADC7B74022D3DFCACAE01F7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_z7SEIVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_z7SEIFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCBDBD0034" name="A_redefinitionContext_redefinableElement" memberEnd="_3ADC7B74022D3DFCBDBD028D _3ADC7B74022D3DFCBDBD02BF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCBDBD02BF" type="_3ADC7B74022D3DE6C81D0244" association="_3ADC7B74022D3DFCBDBD0034">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6jQBMVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6jQBMFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCBE1D0317" name="A_redefinedElement_redefinableElement" memberEnd="_3ADC7B74022D3DFCBE1F00FD _3ADC7B74022D3DFCBE1F0111">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCBE1F0111" type="_3ADC7B74022D3DE6C81D0244" association="_3ADC7B74022D3DFCBE1D0317">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__ZMccVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__ZMccFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCBE7F0137" name="A_feature_featuringClassifier" memberEnd="_3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCBE7F025A"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCC85C000C" name="A_constrainedElement_constraint" memberEnd="_3ADC7B74022D3DFCC85C023D _3ADC7B74022D3DFCC85C026F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCC85C026F" type="_3ADC7B74022D3DE766450007" association="_3ADC7B74022D3DFCC85C000C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VH6ysVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VH6ysFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCC88D0157" name="A_specification_owningConstraint" memberEnd="_3ADC7B74022D3DFCC88D0337 _3ADC7B74022D3DFCC88D0341">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCC88D0341" name="owningConstraint" type="_3ADC7B74022D3DE766450007" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DFCC88D0157">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rseLuhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rseLuRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0270BC02FC" name="A_general_classifier" memberEnd="_3ADC7B74022D3E0270BE0395 _3ADC7B74022D3E0270BE03C7">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0270BE03C7" type="_3ADC7B74022D3DE6C8630317" association="_3ADC7B74022D3E0270BC02FC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8cieEVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8cieEFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCB86303CD" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D3DFCB8650177 _3ADC7B74022D3DFCB86501A0"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCB82E022D" name="A_member_namespace" memberEnd="_3ADC7B74022D3DFCB82F00DA _3ADC7B74022D3DFCB82F00F8">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCB82F00F8" type="_3ADC7B74022D3DE6C03E0388" association="_3ADC7B74022D3DFCB82E022D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gR1GYVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gR1GYFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E5563050088" name="A_operand_expression" memberEnd="_3ADC7B74022D3E55630701F3 _3ADC7B74022D3E5563070207">
+ <ownedEnd xmi:id="_3ADC7B74022D3E5563070207" name="expression" type="_3ADC7B74022D3E555F19002A" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3E5563050088">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtwBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtvxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F14BFF0313" name="A_navigableOwnedEnd_association" memberEnd="_3ADC7B74022D40F14C010058 _3ADC7B74022D40F14C010062">
+ <ownedEnd xmi:id="_3ADC7B74022D40F14C010062" type="_3ADC7B74022D3DE6E15D033A" association="_3ADC7B74022D40F14BFF0313">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLw9YVooEduDzLNvRu8ZxQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLw9YFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4161AA250298" name="A_ownedParameter_operation" memberEnd="_3ADC7B74022D4161AA270132 _3ADC7B74022D4161AA27013C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41781AB701BD" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D41781AB80146 _3ADC7B74022D41781AB80148">
+ <ownedEnd xmi:id="_3ADC7B74022D41781AB80148" name="owningElement" type="_3ADC7B74022D3DE6BAB70076" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D41781AB701BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63sxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63shTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4304A1300282" name="A_inheritedMember_classifier" memberEnd="_3ADC7B74022D4304A13201D9 _3ADC7B74022D4304A13201ED">
+ <ownedEnd xmi:id="_3ADC7B74022D4304A13201ED" type="_3ADC7B74022D3DE6C8630317" association="_3ADC7B74022D4304A1300282">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CWbpoVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CWbpoFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_nWbKEB-yEdqIE6mxof-rZA" name="A_precondition_preContext" memberEnd="_nWbKER-yEdqIE6mxof-rZA _nWbKEh-yEdqIE6mxof-rZA">
+ <ownedEnd xmi:id="_nWbKEh-yEdqIE6mxof-rZA" name="preContext" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_s_9I8h-zEdqIE6mxof-rZA" association="_nWbKEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__kScQR-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__kScQB-yEdqIE6mxof-rZA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_s0ANEB-yEdqIE6mxof-rZA" name="A_postcondition_postContext" memberEnd="_s0ANER-yEdqIE6mxof-rZA _s0ANEh-yEdqIE6mxof-rZA">
+ <ownedEnd xmi:id="_s0ANEh-yEdqIE6mxof-rZA" name="postContext" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_s_9I8h-zEdqIE6mxof-rZA" association="_s0ANEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6bRUAR-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6bRUAB-yEdqIE6mxof-rZA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_uPMYsB-yEdqIE6mxof-rZA" name="A_bodyCondition_bodyContext" memberEnd="_uPMYsR-yEdqIE6mxof-rZA _uPMYsh-yEdqIE6mxof-rZA">
+ <ownedEnd xmi:id="_uPMYsh-yEdqIE6mxof-rZA" name="bodyContext" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_s_9I8h-zEdqIE6mxof-rZA" association="_uPMYsB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w8DAgR-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w8DAgB-yEdqIE6mxof-rZA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_s_9I8B-zEdqIE6mxof-rZA" name="A_ownedRule_context" memberEnd="_s_9I8R-zEdqIE6mxof-rZA _s_9I8h-zEdqIE6mxof-rZA"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA186CB00FB" name="Profiles">
+ <packageImport xmi:id="_3ADC7B74022D3DE7959801E8" importedPackage="_3ADC7B74022D3DE692AD00C7"/>
+ <packageImport xmi:id="_3ADC7B74022D41B0672E00DE" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA186DB0022" name="Stereotype">
+ <ownedComment xmi:id="_rt-AgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA186DB0022">
+ <body>A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rt-AihTaEdqZu-3Jy1-uYg" name="name_not_clash" constrainedElement="_3ADC7B74022D3CA186DB0022">
+ <ownedComment xmi:id="_rt-AhhTaEdqZu-3Jy1-uYg" annotatedElement="_rt-AihTaEdqZu-3Jy1-uYg">
+ <body>Stereotype names should not clash with keyword names for the extended model element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rt-AixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rt-AkxTaEdqZu-3Jy1-uYg" name="generalize" constrainedElement="_3ADC7B74022D3CA186DB0022">
+ <ownedComment xmi:id="_rt-AjxTaEdqZu-3Jy1-uYg" annotatedElement="_rt-AkxTaEdqZu-3Jy1-uYg">
+ <body>A Stereotype may only generalize or specialize another Stereotype.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rt-AlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) </body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_SYvTsEfJEdq0rbStTpEubg" general="_3ADC7B74022D3CA22B8803DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40E7EE3603C0" name="icon" type="_3ADC7B74022D40E7EDE1009F" aggregation="composite" association="_3ADC7B74022D40E7EE3402D7">
+ <ownedComment xmi:id="_rutnbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40E7EE3603C0">
+ <body>Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutncBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnbxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA186E10085" name="Profile">
+ <ownedComment xmi:id="_rt-AmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA186E10085">
+ <body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_dCELMDakEdqq1tCaRkgBQQ" name="metaclass_reference_not_specialized" constrainedElement="_3ADC7B74022D3CA186E10085">
+ <ownedComment xmi:id="_e_p_UDqAEdq16aujGBCOZg" annotatedElement="_dCELMDakEdqq1tCaRkgBQQ">
+ <body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_dCELMTakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>self.metaclassReference.importedElement->&#xD;&#xA; select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA; (c.generalization.namespace = self or&#xD;&#xA; (c.specialization.namespace = self) )->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ichowDakEdqq1tCaRkgBQQ" name="references_same_metamodel" constrainedElement="_3ADC7B74022D3CA186E10085">
+ <ownedComment xmi:id="_h85zkDqAEdq16aujGBCOZg" annotatedElement="_ichowDakEdqq1tCaRkgBQQ">
+ <body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ichowTakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA; union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_bC_LMEfCEdq0rbStTpEubg" general="_3ADC7B74022D3DE6D5DA0183"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB24B21030C" name="ownedStereotype" type="_3ADC7B74022D3CA186DB0022" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0F500FF" association="_3ADC7B74022D3CB24B21012C">
+ <ownedComment xmi:id="_ruQ7iRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB24B21030C">
+ <body>References the Stereotypes that are owned by the Profile.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFYxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE705703B8" name="metaclassReference" type="_3ADC7B74022D3DE6D5E7016E" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0040315" association="_3ADC7B74022D3DEE705700FB">
+ <ownedComment xmi:id="_ruj2eBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE705703B8">
+ <body>References a metaclass that may be extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2fBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2exTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE70D10178" name="metamodelReference" type="_3ADC7B74022D3DE6D5E002D7" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E00902C3" association="_3ADC7B74022D3DEE70D002B7">
+ <ownedComment xmi:id="_rutnYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE70D10178">
+ <body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutnZhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnZRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA18745029B" name="Package">
+ <ownedComment xmi:id="_ruHKcBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA18745029B">
+ <body>A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D416D69D00339" general="_3ADC7B74022D3DE6C03E0388"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA1877301CF" name="profileApplication" type="_3ADC7B74022D3CBDA36602FA" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3CA187710277">
+ <ownedComment xmi:id="_ruQ7fxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA1877301CF">
+ <body>References the ProfileApplications that indicate which profiles have been applied to the Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruQ7gxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruQ7ghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA22B8803DA" name="Class">
+ <ownedComment xmi:id="_ruHKdRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA22B8803DA">
+ <body>Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA7FB03DD" name="extension" type="_3ADC7B74022D3CBDA5E903C7" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3CBDA7FA0395">
+ <ownedComment xmi:id="_ruaFcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA7FB03DD">
+ <body>References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFdxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFdhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CBDA36602FA" name="ProfileApplication">
+ <ownedComment xmi:id="_ruHKeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA36602FA">
+ <body>A profile application is used to show which profiles have been applied to a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_EAyg0GgBEdqfYrlcy8iLFA" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA3A302D0" name="appliedProfile" type="_3ADC7B74022D3CA186E10085" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3CBDA3A20057">
+ <ownedComment xmi:id="_ruaFaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA3A302D0">
+ <body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFbRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFbBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7409kDdgEdqq1tCaRkgBQQ" name="isStrict" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_JwfQ8DdhEdqq1tCaRkgBQQ" annotatedElement="_7409kDdgEdqq1tCaRkgBQQ">
+ <body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_l1JQAF0oEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA1877301D1" name="applyingPackage" type="_3ADC7B74022D3CA18745029B" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3CA187710277">
+ <ownedComment xmi:id="_6Jad4PZcEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3CA1877301D1">
+ <body>The package that owns the profile application.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruQ7hhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruQ7hRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CBDA5E903C7" name="Extension">
+ <ownedComment xmi:id="_ruHKfhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA5E903C7">
+ <body>An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_mF1uQDajEdqq1tCaRkgBQQ" name="non_owned_end" constrainedElement="_3ADC7B74022D3CBDA5E903C7">
+ <ownedComment xmi:id="_FymhADqAEdq16aujGBCOZg" annotatedElement="_mF1uQDajEdqq1tCaRkgBQQ">
+ <body>The non-owned end of an Extension is typed by a Class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_mF1uQTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_vJ8MADajEdqq1tCaRkgBQQ" name="is_binary" constrainedElement="_3ADC7B74022D3CBDA5E903C7">
+ <ownedComment xmi:id="_Iq7ZADqAEdq16aujGBCOZg" annotatedElement="_vJ8MADajEdqq1tCaRkgBQQ">
+ <body>An Extension is binary, i.e., it has only two memberEnds.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_vJ8MATajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>memberEnd->size() = 2</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DEE788500D3" general="_3ADC7B74022D3DE6E15D033A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA7B50011" name="isRequired" type="_3ADC7B74022D3CA010AC0090" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_ruHKgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA7B50011">
+ <body>Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_EFEnwF0oEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA7FB03E7" name="metaclass" type="_3ADC7B74022D3CA22B8803DA" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3CBDA7FA0395">
+ <ownedComment xmi:id="_ruaFexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA7FB03E7">
+ <body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFfxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFfhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA88400D7" name="ownedEnd" type="_3ADC7B74022D3CBDA5F701B4" aggregation="composite" redefinedProperty="_3ADC7B74022D3DE6E409010C" association="_3ADC7B74022D3CBDA88302E8">
+ <ownedComment xmi:id="_ruj2ZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA88400D7">
+ <body>References the end of the extension that is typed by a Stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2aBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2ZxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_17RV4DajEdqq1tCaRkgBQQ" name="metaclassEnd" isQuery="true" bodyCondition="_-tfZcDajEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_QggOIDqAEdq16aujGBCOZg" annotatedElement="_17RV4DajEdqq1tCaRkgBQQ">
+ <body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
+ </ownedComment>
+ <ownedRule xmi:id="_-tfZcDajEdqq1tCaRkgBQQ" name="spec" constrainedElement="_17RV4DajEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tfZcTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = memberEnd->reject(ownedEnd)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_7E4UADajEdqq1tCaRkgBQQ" type="_3ADC7B74022D3DE6D57500AC" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ccgo4DakEdqq1tCaRkgBQQ" name="metaclass" isQuery="true" bodyCondition="_IyQqADakEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_O8Em8DqAEdq16aujGBCOZg" annotatedElement="_Ccgo4DakEdqq1tCaRkgBQQ">
+ <body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
+ </ownedComment>
+ <ownedRule xmi:id="_IyQqADakEdqq1tCaRkgBQQ" name="spec" constrainedElement="_Ccgo4DakEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_IyQqATakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = metaclassEnd().type</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_HSTTIDakEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA22B8803DA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LziCoDakEdqq1tCaRkgBQQ" name="isRequired" isQuery="true" bodyCondition="_SD7CoDakEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_NjHP8DqAEdq16aujGBCOZg" annotatedElement="_LziCoDakEdqq1tCaRkgBQQ">
+ <body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_SD7CoDakEdqq1tCaRkgBQQ" name="spec" constrainedElement="_LziCoDakEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_SD7CoTakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = (ownedEnd->lowerBound() = 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Qhu3IDakEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CBDA5F701B4" name="ExtensionEnd">
+ <ownedComment xmi:id="_ruQ7cRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA5F701B4">
+ <body>An extension end is used to tie an extension to a stereotype when extending a metaclass.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_9UWRsDaiEdqq1tCaRkgBQQ" name="multiplicity" constrainedElement="_3ADC7B74022D3CBDA5F701B4">
+ <ownedComment xmi:id="_CQ_x4DajEdqq1tCaRkgBQQ" annotatedElement="_9UWRsDaiEdqq1tCaRkgBQQ">
+ <body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_9UWRsTaiEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_DubZMDajEdqq1tCaRkgBQQ" name="aggregation" constrainedElement="_3ADC7B74022D3CBDA5F701B4">
+ <ownedComment xmi:id="_HXMPoDajEdqq1tCaRkgBQQ" annotatedElement="_DubZMDajEdqq1tCaRkgBQQ">
+ <body>The aggregation of an ExtensionEnd is composite.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_DubZMTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>self.aggregation = #composite</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DEE78E20023" general="_3ADC7B74022D3DE6D57500AC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA8C50030" name="type" type="_3ADC7B74022D3CA186DB0022" redefinedProperty="_3ADC7B74022D3DE6C94D0011" association="_3ADC7B74022D3CBDA8C3000F">
+ <ownedComment xmi:id="_ruj2bhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA8C50030">
+ <body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2chTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2cRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Kh5YcDagEdqq1tCaRkgBQQ" name="lower" type="_3ADC7B74022D3CA010A4007B" redefinedProperty="_3ADC7B74022D41C06EAD0288">
+ <ownedComment xmi:id="_se8FsDagEdqq1tCaRkgBQQ" annotatedElement="_Kh5YcDagEdqq1tCaRkgBQQ">
+ <body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dAT0gTagEdqq1tCaRkgBQQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dAT0gDagEdqq1tCaRkgBQQ"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_hSCvcDagEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_InW3ADajEdqq1tCaRkgBQQ" name="lowerBound" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C00C6" bodyCondition="_ZWJvkDajEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_YkFZcDajEdqq1tCaRkgBQQ" annotatedElement="_InW3ADajEdqq1tCaRkgBQQ">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default&#xD;
+lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ZWJvkDajEdqq1tCaRkgBQQ" name="spec" constrainedElement="_InW3ADajEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZWJvkTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = lowerBound = if lowerValue->isEmpty() then 0 else lowerValue->IntegerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Ni0EYDajEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40E7EDE1009F" name="Image">
+ <ownedComment xmi:id="_ruQ7dhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40E7EDE1009F">
+ <body>Physical definition of a graphical image.</body>
+ </ownedComment>
+ <generalization xmi:id="_CT0zEHGhEdqziYxiZo0YtA" general="_3ADC7B74022D41925B100079"/>
+ <ownedAttribute xmi:id="_GgC74HGhEdqziYxiZo0YtA" name="content" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_it2uEHGkEdqziYxiZo0YtA" annotatedElement="_GgC74HGhEdqziYxiZo0YtA">
+ <body>This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J0FfgXGhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J0FfgHGhEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_LCBSQHGhEdqziYxiZo0YtA" name="location" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_LLrnwHGlEdqziYxiZo0YtA" annotatedElement="_LCBSQHGhEdqziYxiZo0YtA">
+ <body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O6uCIXGhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O6uCIHGhEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_P1lH4HGhEdqziYxiZo0YtA" name="format" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_EbshsHGlEdqziYxiZo0YtA" annotatedElement="_P1lH4HGhEdqziYxiZo0YtA">
+ <body>This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP.&#xD;
+&#xD;
+In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ssj8EXGhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ssj8EHGhEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41925B100079" name="Element" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6OXXoXDLEdqziYxiZo0YtA" name="NamedElement" isAbstract="true">
+ <ownedOperation xmi:id="_qifDQDakEdqq1tCaRkgBQQ" name="allOwningPackages" isQuery="true" bodyCondition="_3LBREDakEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_5-hO8Dp_Edq16aujGBCOZg" annotatedElement="_qifDQDakEdqq1tCaRkgBQQ">
+ <body>The query allOwningPackages() returns all the directly or indirectly owning packages.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_3LBREDakEdqq1tCaRkgBQQ" name="spec" constrainedElement="_qifDQDakEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_3LBRETakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = self.namespace->select(p | p.oclIsKindOf(Package))->union(p.allOwningPackages())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_yH9m4DakEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA18745029B" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0rlaMTakEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0rlaMDakEdqq1tCaRkgBQQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA187710277" name="A_profileApplication_applyingPackage" memberEnd="_3ADC7B74022D3CA1877301CF _3ADC7B74022D3CA1877301D1"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB24B21012C" name="A_ownedStereotype_profile" memberEnd="_3ADC7B74022D3CB24B21030C _3ADC7B74022D3CB24B210316">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB24B210316" type="_3ADC7B74022D3CA186E10085" association="_3ADC7B74022D3CB24B21012C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFZRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA3A20057" name="A_appliedProfile_profileApplication" memberEnd="_3ADC7B74022D3CBDA3A302D0 _3ADC7B74022D3CBDA3A302DA">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBDA3A302DA" type="_3ADC7B74022D3CBDA36602FA" association="_3ADC7B74022D3CBDA3A20057">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFcBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFbxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA7FA0395" name="A_extension_metaclass" memberEnd="_3ADC7B74022D3CBDA7FB03DD _3ADC7B74022D3CBDA7FB03E7" isDerived="true"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA88302E8" name="A_ownedEnd_extension" memberEnd="_3ADC7B74022D3CBDA88400D7 _3ADC7B74022D3CBDA88400E2">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBDA88400E2" type="_3ADC7B74022D3CBDA5E903C7" association="_3ADC7B74022D3CBDA88302E8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2axTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2ahTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA8C3000F" name="A_type_extensionEnd" memberEnd="_3ADC7B74022D3CBDA8C50030 _3ADC7B74022D3CBDA8C5003A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBDA8C5003A" type="_3ADC7B74022D3CBDA5F701B4" association="_3ADC7B74022D3CBDA8C3000F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2dRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2dBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE705700FB" name="A_metaclassReference_profile" memberEnd="_3ADC7B74022D3DEE705703B8 _3ADC7B74022D3DEE705703CC">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE705703CC" type="_3ADC7B74022D3CA186E10085" association="_3ADC7B74022D3DEE705700FB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2fxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2fhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE70D002B7" name="A_metamodelReference_profile" memberEnd="_3ADC7B74022D3DEE70D10178 _3ADC7B74022D3DEE70D10196">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE70D10196" type="_3ADC7B74022D3CA186E10085" association="_3ADC7B74022D3DEE70D002B7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutnaRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnaBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40E7EE3402D7" name="A_icon_stereotype" memberEnd="_3ADC7B74022D40E7EE3603C0 _3ADC7B74022D40E7EE3603CA">
+ <ownedEnd xmi:id="_3ADC7B74022D40E7EE3603CA" type="_3ADC7B74022D3CA186DB0022" association="_3ADC7B74022D40E7EE3402D7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutncxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnchTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_z9-BUBZaEdqs4ZsykdgStg">
+ <eAnnotations xmi:id="_z9-BURZaEdqs4ZsykdgStg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_DeIvwMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CADCD85009B"/>
+ <Ecore:EReference xmi:id="_DeIvwcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CADCD8500A5"/>
+ <Ecore:EAttribute xmi:id="_DeIvwsYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CA0080E03C3"/>
+ <Ecore:EAttribute xmi:id="_DeIvw8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA008400375"/>
+ <Ecore:EReference xmi:id="_DeIvxMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA008A2036C"/>
+ <Ecore:EOperation xmi:id="_DeSgwMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E1065EF023E" operationName="getQualifiedName"/>
+ <Ecore:EReference xmi:id="_DeSgwcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA008A20358"/>
+ <Ecore:EReference xmi:id="_DeSgwsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA0098401B9"/>
+ <Ecore:EReference xmi:id="_DeSgw8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA00B92018D"/>
+ <Ecore:EReference xmi:id="_DeSgxMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA00B920183"/>
+ <Ecore:EAttribute xmi:id="_DeSgxcYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41AE11E501C8"/>
+ <Ecore:EAttribute xmi:id="_DeSgxsYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41AE120C0319"/>
+ <Ecore:EAttribute xmi:id="_DeSgx8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E555C7702E8"/>
+ <Ecore:EAttribute xmi:id="_DeSgyMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF78F1C034C"/>
+ <Ecore:EAttribute xmi:id="_DecRwMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF78F2B0290"/>
+ <Ecore:EOperation xmi:id="_DecRwcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E140A3102FA" operationName="getLower"/>
+ <Ecore:EOperation xmi:id="_DecRwsYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E140A6C013C" operationName="getUpper"/>
+ <Ecore:EReference xmi:id="_DecRw8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA02BDB0015"/>
+ <Ecore:EReference xmi:id="_DecRxMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA01B20019D"/>
+ <Ecore:EReference xmi:id="_DecRxcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CADABFE01E3"/>
+ <Ecore:EReference xmi:id="_DecRxsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF65B8D0134"/>
+ <Ecore:EOperation xmi:id="_DecRx8YdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E105DC8003E" operationName="getGenerals"/>
+ <Ecore:EAttribute xmi:id="_DecRyMYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D3CAC072502E2"/>
+ <Ecore:EReference xmi:id="_DecRycYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6A15F02E3"/>
+ <Ecore:EReference xmi:id="_DelbsMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6A1830227"/>
+ <Ecore:EReference xmi:id="_DelbscYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D7A3113026A"/>
+ <Ecore:EReference xmi:id="_DelbssYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9C1A000D5"/>
+ <Ecore:EReference xmi:id="_Delbs8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9EF3300FA"/>
+ <Ecore:EReference xmi:id="_DelbtMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9C1A000FD"/>
+ <Ecore:EAttribute xmi:id="_DelbtcYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CADC5B702BE"/>
+ <Ecore:EReference xmi:id="_DelbtsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF65A9D02E0"/>
+ <Ecore:EOperation xmi:id="_Delbt8YdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E10722C00E4" operationName="getInheritedMembers"/>
+ <Ecore:EAttribute xmi:id="_DelbuMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CB5A28802FF"/>
+ <Ecore:EDataType xmi:id="_DevMsMYdEduPJbEsMYXjUQ" instanceClassName="int" base_PrimitiveType="_3ADC7B74022D3CA010A4007B"/>
+ <Ecore:EDataType xmi:id="_De49sMYdEduPJbEsMYXjUQ" instanceClassName="boolean" base_PrimitiveType="_3ADC7B74022D3CA010AC0090"/>
+ <Ecore:EDataType xmi:id="_De49scYdEduPJbEsMYXjUQ" instanceClassName="java.lang.String" base_PrimitiveType="_3ADC7B74022D3CA010B103C3"/>
+ <Ecore:EDataType xmi:id="_De49ssYdEduPJbEsMYXjUQ" instanceClassName="int" base_PrimitiveType="_3ADC7B74022D3DE6A93C0003"/>
+ <Ecore:EAttribute xmi:id="_De49s8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE6AC4701DA"/>
+ <Ecore:EAttribute xmi:id="_De49tMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE6A6EE0069"/>
+ <Ecore:EAttribute xmi:id="_DfCHoMYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D417820CB0110"/>
+ <Ecore:EReference xmi:id="_DfCHocYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6E42E034A"/>
+ <Ecore:EReference xmi:id="_DfCHosYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBE7F0246"/>
+ <Ecore:EReference xmi:id="_DfCHo8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D4304A13201D9"/>
+ <Ecore:EOperation xmi:id="_DfCHpMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D42EE305C00D9" operationName="getGenerals"/>
+ <Ecore:EOperation xmi:id="_DfCHpcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D42EE305C00F1" operationName="getInheritedMembers"/>
+ <Ecore:EReference xmi:id="_DfCHpsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCAC7900D9"/>
+ <Ecore:EReference xmi:id="_DfCHp8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCACAF0090"/>
+ <Ecore:EReference xmi:id="_DfCHqMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCA80700B4"/>
+ <Ecore:EReference xmi:id="_DfCHqcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCA80700BE"/>
+ <Ecore:EReference xmi:id="_DfCHqsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBE7F025A"/>
+ <Ecore:EReference xmi:id="_DfL4oMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE234B0163"/>
+ <Ecore:EReference xmi:id="_DfL4ocYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCB8650177"/>
+ <Ecore:EReference xmi:id="_DfL4osYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCB82F00DA"/>
+ <Ecore:EOperation xmi:id="_DfL4o8YdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142ABF004B" operationName="getImportedMembers"/>
+ <Ecore:EReference xmi:id="_DfL4pMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBDBD028D"/>
+ <Ecore:EReference xmi:id="_DfL4pcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBE1F00FD"/>
+ <Ecore:EReference xmi:id="_DfL4psYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCAC2F019B"/>
+ <Ecore:EReference xmi:id="_DfL4p8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE75D87003B"/>
+ <Ecore:EAttribute xmi:id="_DfL4qMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D4201104A02AF"/>
+ <Ecore:EReference xmi:id="_DfL4qcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6E76603BD"/>
+ <Ecore:EOperation xmi:id="_DfVpoMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E14246901E3" operationName="getOpposite"/>
+ <Ecore:EAttribute xmi:id="_DfVpocYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41FC52E503B5"/>
+ <Ecore:EAttribute xmi:id="_DfVposYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41FC52EF0215"/>
+ <Ecore:EAttribute xmi:id="_DfVpo8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E03284C0289"/>
+ <Ecore:EAttribute xmi:id="_DfVppMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E032859015B"/>
+ <Ecore:EAttribute xmi:id="_DfVppcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0328B001D9"/>
+ <Ecore:EAttribute xmi:id="_DfVppsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0328710341"/>
+ <Ecore:EReference xmi:id="_DfVpp8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE7BDA017A"/>
+ <Ecore:EOperation xmi:id="_DfVpqMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142F3E03CB" operationName="lowerBound"/>
+ <Ecore:EOperation xmi:id="_DfVpqcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142F7500B3" operationName="upperBound"/>
+ <Ecore:EOperation xmi:id="_DfVpqsYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142FBB01EA" operationName="getType"/>
+ <Ecore:EAttribute xmi:id="_DfVpq8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE7647D021E"/>
+ <Ecore:EAttribute xmi:id="_DfVprMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DEE875F0333"/>
+ <Ecore:EReference xmi:id="_DfVprcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE344701CC"/>
+ <Ecore:EReference xmi:id="_DfVprsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE6FD3029F"/>
+ <Ecore:EReference xmi:id="_DfVpr8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE6FD302F9"/>
+ <Ecore:EReference xmi:id="_DfVpsMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE344701FE"/>
+ <Ecore:EAttribute xmi:id="_DfVpscYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE6BF540255"/>
+ <Ecore:EAttribute xmi:id="_DfVpssYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41C2D63E00EE"/>
+ <Ecore:EReference xmi:id="_DfVps8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCB86501A0"/>
+ <Ecore:EAttribute xmi:id="_DfVptMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_7-d1kIa_EdqhgMOAOWpjfQ"/>
+ <Ecore:EOperation xmi:id="_DfVptcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D42EE305C00A6" operationName="getQualifiedName"/>
+ <Ecore:EAttribute xmi:id="_DfVptsYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41BDD0260325"/>
+ <Ecore:EReference xmi:id="_DfezkMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CB24B21030C"/>
+ <Ecore:EReference xmi:id="_DfezkcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CBDA7FB03DD"/>
+ <Ecore:EAttribute xmi:id="_DfezksYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CBDA7B50011"/>
+ <Ecore:EReference xmi:id="_Dfezk8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CBDA7FB03E7"/>
+ <Ecore:EOperation xmi:id="_DfezlMYdEduPJbEsMYXjUQ" base_Operation="_Ccgo4DakEdqq1tCaRkgBQQ" operationName="getMetaclass"/>
+ <Ecore:EAttribute xmi:id="_DfezlcYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_GgC74HGhEdqziYxiZo0YtA"/>
+ <Ecore:EAttribute xmi:id="_DfezlsYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_LCBSQHGhEdqziYxiZo0YtA"/>
+ <Ecore:EAttribute xmi:id="_Dfezl8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_P1lH4HGhEdqziYxiZo0YtA"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml
new file mode 100644
index 0000000000..5feb26ffef
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="__yy3ABmLEdqvcs97umGEYQ" name="L0">
+ <packageMerge xmi:id="_HW4daxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3DE692A401F1"/>
+ </packageMerge>
+ <packageMerge xmi:id="_7lASMGf-EdqfYrlcy8iLFA">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3C9FFCC70354"/>
+ </packageMerge>
+ <profileApplication xmi:id="_APtcgBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_APtcgRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_HIMmsMYdEduPJbEsMYXjUQ" base_Package="__yy3ABmLEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/umlL0.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml
new file mode 100644
index 0000000000..d26bd08f32
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_BWooUBmMEdqvcs97umGEYQ" name="L1">
+ <packageMerge xmi:id="_HWusRBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF124E700CB"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusRRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3388DA6E014A"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusRhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D336185C00118"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusRxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CFC224902BF"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusSBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3BAE542B0121"/>
+ </packageMerge>
+ <packageMerge xmi:id="_qbMZEHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D410C264F010C"/>
+ </packageMerge>
+ <packageMerge xmi:id="_4JxB4HxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3ADF556A0044"/>
+ </packageMerge>
+ <packageMerge xmi:id="_4e6ygHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3BAF164701DA"/>
+ </packageMerge>
+ <packageMerge xmi:id="_4xP4oHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3C9FD9B900CF"/>
+ </packageMerge>
+ <packageMerge xmi:id="_5EeWoHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D335C122001A4"/>
+ </packageMerge>
+ <packageMerge xmi:id="_c_XvgHygEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D410D001C03C2"/>
+ </packageMerge>
+ <profileApplication xmi:id="_BbZzkBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_BbZzkRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_8njScMYcEduPJbEsMYXjUQ" base_Package="_BWooUBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/uml.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml
new file mode 100644
index 0000000000..c9983ad274
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_CTvJwBmMEdqvcs97umGEYQ" name="L2">
+ <packageMerge xmi:id="_HW4dQRTbEdqZu-3Jy1-uYg">
+ <mergedPackage xmi:type="uml:Model" href="L1.uml#_BWooUBmMEdqvcs97umGEYQ"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dRxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF124FB03B9"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dSBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0251EF01F0"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dShTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0235B10207"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dSxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DC8ED110289"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dTBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D381B1F00F7"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dTRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0C9C9E02E6"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dThTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D334A99B00208"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dUBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF1252E035B"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dURTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF1253C0119"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dUhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D0259DF00A8"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dUxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D5EC5B702B8"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dVBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0235D10308"/>
+ </packageMerge>
+ <packageMerge xmi:id="_hP_vwEoiEdq2-6lg1JCB1A">
+ <mergedPackage href="Superstructure.uml#_euHIYEfeEdq0rbStTpEubg"/>
+ </packageMerge>
+ <packageMerge xmi:id="_frzRQFK2EdqxB6Bl62AbBg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D410C265D0152"/>
+ </packageMerge>
+ <profileApplication xmi:id="_CZsAwBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_CZsAwRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_4o7gwMYcEduPJbEsMYXjUQ" base_Package="_CTvJwBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/uml.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml
new file mode 100644
index 0000000000..644863c8cf
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_EBtHcBmMEdqvcs97umGEYQ" name="L3">
+ <packageMerge xmi:id="_HW4dWRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E8A0682039B"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dWhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3ADCA176014F"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dWxTbEdqZu-3Jy1-uYg">
+ <mergedPackage xmi:type="uml:Model" href="L2.uml#_CTvJwBmMEdqvcs97umGEYQ"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dXhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CF19F41017F"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dXxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CF19F4B02C4"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CC978D2033F"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF127D50109"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF125060148"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF41CB50210"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF3B10302DE"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D5531EE03C3"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3B8856200320"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D0266EE027C"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4daBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3BAF182F0290"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dahTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E2803C80047"/>
+ </packageMerge>
+ <profileApplication xmi:id="_EF31wBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_EF31wRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_xo824MYcEduPJbEsMYXjUQ" base_Package="_EBtHcBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/uml.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml
new file mode 100644
index 0000000000..80fa99255a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_FA4sgBmMEdqvcs97umGEYQ" name="LM">
+ <packageMerge xmi:id="_HW4dbBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3DE692AD00C7"/>
+ </packageMerge>
+ <packageMerge xmi:id="_1pzpoGf_EdqfYrlcy8iLFA">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3C9FFCC70354"/>
+ </packageMerge>
+ <profileApplication xmi:id="_FETz8BmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_FETz8RmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_Ka_NIMYdEduPJbEsMYXjUQ" base_Package="_FA4sgBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/umlLM.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml
new file mode 100644
index 0000000000..019ddd3aaa
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml
@@ -0,0 +1,14306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_s-vBgBjPEdqPB8O80Bm3OQ" name="UML">
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E0C8A930168" name="Actions">
+ <packageImport xmi:id="_87aKwD9JEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3DF124BC006D"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF127D50109" name="CompleteActions">
+ <packageImport xmi:id="_3ADC7B74022D4162B96F03C3" importedPackage="_3ADC7B74022D334A99B00208"/>
+ <packageImport xmi:id="_3ADC7B74022D4162B98300B5" importedPackage="_3ADC7B74022D3BAF182F0290"/>
+ <packageImport xmi:id="_6NdBoD9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageImport xmi:id="_-OywID9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D335C122001A4"/>
+ <packageMerge xmi:id="_HR0XERTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF1252E035B"/>
+ <packageMerge xmi:id="_4KGkcFK8EdqGjp-dS1uluA" mergedPackage="_3ADC7B74022D410C265D0152"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C95C100257" name="ReadExtentAction">
+ <ownedComment xmi:id="_sqw_9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C95C100257">
+ <body>A read extent action is an action that retrieves the current instances of a classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sqw__RTaEdqZu-3Jy1-uYg" name="type_is_classifier" constrainedElement="_3ADC7B74022D38C95C100257">
+ <ownedComment xmi:id="_sqw_-RTaEdqZu-3Jy1-uYg" annotatedElement="_sqw__RTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sqw__hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sqxABhTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D38C95C100257">
+ <ownedComment xmi:id="_sqxAAhTaEdqZu-3Jy1-uYg" annotatedElement="_sqxABhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 0..*.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sqxABxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(0,#null)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF408230127" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CFBA30150" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CFBA20393">
+ <ownedComment xmi:id="_sss5shTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CFBA30150">
+ <body>The runtime instances of the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5thTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5tRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C95C8402C2" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D38C95C8303C5">
+ <ownedComment xmi:id="_sss5vBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C95C8402C2">
+ <body>The classifier whose instances are to be retrieved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5wBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5vxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DBEACB029B" name="ReclassifyObjectAction">
+ <ownedComment xmi:id="_sqxACxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DBEACB029B">
+ <body>A reclassify object action is an action that changes which classifiers classify an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sq6J4xTaEdqZu-3Jy1-uYg" name="classifier_not_abstract" constrainedElement="_3ADC7B74022D38DBEACB029B">
+ <ownedComment xmi:id="_sqxAEBTaEdqZu-3Jy1-uYg" annotatedElement="_sq6J4xTaEdqZu-3Jy1-uYg">
+ <body>None of the new classifiers may be abstract.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sq6J5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.newClassifier->exists(isAbstract = true)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sq6J7BTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38DBEACB029B">
+ <ownedComment xmi:id="_sq6J6BTaEdqZu-3Jy1-uYg" annotatedElement="_sq6J7BTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sq6J7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.argument.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sq6J9RTaEdqZu-3Jy1-uYg" name="input_pin" constrainedElement="_3ADC7B74022D38DBEACB029B">
+ <ownedComment xmi:id="_sq6J8RTaEdqZu-3Jy1-uYg" annotatedElement="_sq6J9RTaEdqZu-3Jy1-uYg">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sq6J9hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.argument.type->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4081F02EE" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CCDFA2D00F4" name="isReplaceAll">
+ <ownedComment xmi:id="_sq6J-hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CCDFA2D00F4">
+ <body>Specifies whether existing classifiers should be removed before adding the new classifiers.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HR9hABTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DBEB11022D" name="oldClassifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D38DBEB100312">
+ <ownedComment xmi:id="_sss5xhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DBEB11022D">
+ <body>A set of classifiers to be removed from the classifiers of the object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DkxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DkhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DBEB4201CA" name="newClassifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D38DBEB4102EB">
+ <ownedComment xmi:id="_ss2DmRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DBEB4201CA">
+ <body>A set of classifiers to be added to the classifiers of the object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DnRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DnBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF3A5BE02BF" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3DF3A5BD03D8">
+ <ownedComment xmi:id="_stcgkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3A5BE02BF">
+ <body>Holds the object to be reclassified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stcglxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stcglhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D39739DB102CF" name="ReadIsClassifiedObjectAction">
+ <ownedComment xmi:id="_sq6J_xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739DB102CF">
+ <body>A read is classified object action is an action that determines whether a runtime object is classified by a given classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srD64xTaEdqZu-3Jy1-uYg" name="multiplicity_of_input" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_sq6KBBTaEdqZu-3Jy1-uYg" annotatedElement="_srD64xTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD65BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srD67BTaEdqZu-3Jy1-uYg" name="no_type" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_srD66BTaEdqZu-3Jy1-uYg" annotatedElement="_srD67BTaEdqZu-3Jy1-uYg">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD67RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.type->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srD69RTaEdqZu-3Jy1-uYg" name="multiplicity_of_output" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_srD68RTaEdqZu-3Jy1-uYg" annotatedElement="_srD69RTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD69hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srD6_hTaEdqZu-3Jy1-uYg" name="boolean_result" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_srD6-hTaEdqZu-3Jy1-uYg" annotatedElement="_srD6_hTaEdqZu-3Jy1-uYg">
+ <body>The type of the output pin is Boolean</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD6_xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = Boolean</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4082902E8" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739DEF0061" name="isDirect">
+ <ownedComment xmi:id="_srD7AxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739DEF0061">
+ <body>Indicates whether the classifier must directly classify the input object.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HR9hARTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739E2C01D1" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D39739E2B0324">
+ <ownedComment xmi:id="_ss2DoxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739E2C01D1">
+ <body>The classifier against which the classification of the input object is tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DpxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DphTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739EA70341" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D39739EA700DE">
+ <ownedComment xmi:id="_ss2DqxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739EA70341">
+ <body>After termination of the action, will hold the result of the test.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DrxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DrhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739E5C00B8" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D39739E5B0251">
+ <ownedComment xmi:id="_ss_0kRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739E5C00B8">
+ <body>Holds the object whose classification is to be tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0lRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0lBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A78587C0167" name="StartClassifierBehaviorAction">
+ <ownedComment xmi:id="_srD7CBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78587C0167">
+ <body>A start classifier behavior action is an action that starts the classifier behavior of the input.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srNr6BTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3A78587C0167">
+ <ownedComment xmi:id="_srNr5BTaEdqZu-3Jy1-uYg" annotatedElement="_srNr6BTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srNr6RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srNr8RTaEdqZu-3Jy1-uYg" name="type_has_classifier" constrainedElement="_3ADC7B74022D3A78587C0167">
+ <ownedComment xmi:id="_srNr7RTaEdqZu-3Jy1-uYg" annotatedElement="_srNr8RTaEdqZu-3Jy1-uYg">
+ <body>If the input pin has a type, then the type must have a classifier behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srNr8hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4084103AB" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A7858D00276" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3A7858D00028">
+ <ownedComment xmi:id="_ss_0mxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A7858D00276">
+ <body>Holds the object on which to start the owned behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0nxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0nhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C965F70052" name="QualifierValue">
+ <ownedComment xmi:id="_srNr9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C965F70052">
+ <body>A qualifier value is not an action. It is an element that identifies links. It gives a single qualifier within a link end data specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srNr_xTaEdqZu-3Jy1-uYg" name="qualifier_attribute" constrainedElement="_3ADC7B74022D38C965F70052">
+ <ownedComment xmi:id="_srNr-xTaEdqZu-3Jy1-uYg" annotatedElement="_srNr_xTaEdqZu-3Jy1-uYg">
+ <body>The qualifier attribute must be a qualifier of the association end of the link-end data.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srNsABTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srW10BTaEdqZu-3Jy1-uYg" name="type_of_qualifier" constrainedElement="_3ADC7B74022D38C965F70052">
+ <ownedComment xmi:id="_srNsBBTaEdqZu-3Jy1-uYg" annotatedElement="_srW10BTaEdqZu-3Jy1-uYg">
+ <body>The type of the qualifier value input pin is the same as the type of the qualifier attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srW10RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.qualifier.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srW12RTaEdqZu-3Jy1-uYg" name="multiplicity_of_qualifier" constrainedElement="_3ADC7B74022D38C965F70052">
+ <ownedComment xmi:id="_srW11RTaEdqZu-3Jy1-uYg" annotatedElement="_srW12RTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the qualifier value input pin is &quot;1..1&quot;.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srW12hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C32A13B036E" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C966870334" name="qualifier" type="_3ADC7B74022D3CC0DAE103AD" association="_3ADC7B74022D38C9668602D9">
+ <ownedComment xmi:id="_ss_0rxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C966870334">
+ <body>Attribute representing the qualifier for which the value is to be specified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0sxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0shTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C966B200C9" name="value" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D38C966AF03DC">
+ <ownedComment xmi:id="_stJlkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C966B200C9">
+ <body>Input pin from which the specified value for the qualifier is taken.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJllhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJllRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D03F9C80242" name="LinkEndData">
+ <ownedRule xmi:id="_srW15hTaEdqZu-3Jy1-uYg" name="qualifiers" constrainedElement="_3ADC7B74022D3D03F9C80242">
+ <ownedComment xmi:id="_srW14hTaEdqZu-3Jy1-uYg" annotatedElement="_srW15hTaEdqZu-3Jy1-uYg">
+ <body>The qualifiers include all and only the qualifiers of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srW15xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier->collect(qualifier) = self.end.qualifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srW17xTaEdqZu-3Jy1-uYg" name="end_object_input_pin" constrainedElement="_3ADC7B74022D3D03F9C80242">
+ <ownedComment xmi:id="_srW16xTaEdqZu-3Jy1-uYg" annotatedElement="_srW17xTaEdqZu-3Jy1-uYg">
+ <body>The end object input pin is not also a qualifier value input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value->excludesAll(self.qualifier.value)</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C966380182" name="qualifier" type="_3ADC7B74022D38C965F70052" aggregation="composite" association="_3ADC7B74022D38C96637032F">
+ <ownedComment xmi:id="_ss_0pRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C966380182">
+ <body>List of qualifier values</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0qRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0qBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C968BA0212" name="ReadLinkObjectEndAction">
+ <ownedComment xmi:id="_srgm1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C968BA0212">
+ <body>A read link object end action is an action that retrieves an end object from a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srgm3RTaEdqZu-3Jy1-uYg" name="property" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm2RTaEdqZu-3Jy1-uYg" annotatedElement="_srgm3RTaEdqZu-3Jy1-uYg">
+ <body>The property must be an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm3hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.association.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srgm5hTaEdqZu-3Jy1-uYg" name="association_of_association" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm4hTaEdqZu-3Jy1-uYg" annotatedElement="_srgm5hTaEdqZu-3Jy1-uYg">
+ <body>The association of the association end must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm5xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.Association.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srgm7xTaEdqZu-3Jy1-uYg" name="ends_of_association" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm6xTaEdqZu-3Jy1-uYg" annotatedElement="_srgm7xTaEdqZu-3Jy1-uYg">
+ <body>The ends of the association must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm8BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.association.memberEnd->forall(e | not e.isStatic)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpwwxTaEdqZu-3Jy1-uYg" name="type_of_object" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm9BTaEdqZu-3Jy1-uYg" annotatedElement="_srpwwxTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin is the association class that owns the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpwxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.type = self.end.association</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpwzBTaEdqZu-3Jy1-uYg" name="multiplicity_of_object" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srpwyBTaEdqZu-3Jy1-uYg" annotatedElement="_srpwzBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the object input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpwzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpw1RTaEdqZu-3Jy1-uYg" name="type_of_result" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srpw0RTaEdqZu-3Jy1-uYg" annotatedElement="_srpw1RTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the same as the type of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpw1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.end.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpw3hTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srpw2hTaEdqZu-3Jy1-uYg" annotatedElement="_srpw3hTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpw3xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF408C60140" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C968E2011F" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D38C968E002AC">
+ <ownedComment xmi:id="_stJlnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C968E2011F">
+ <body>Gives the input pin from which the link object is obtained.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJloBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlnxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C969090139" name="end" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D38C9690800B5">
+ <ownedComment xmi:id="_stJlphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C969090139">
+ <body>Link end to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJlqhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlqRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CD5AF009B" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CD5AD0098">
+ <ownedComment xmi:id="_stJlsBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD5AF009B">
+ <body>Pin where the result value is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJltBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlsxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C9697C024D" name="ReadLinkObjectEndQualifierAction">
+ <ownedComment xmi:id="_srpw4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C9697C024D">
+ <body>A read link object end qualifier action is an action that retrieves a qualifier end value from a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srzhwxTaEdqZu-3Jy1-uYg" name="qualifier_attribute" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srpw6BTaEdqZu-3Jy1-uYg" annotatedElement="_srzhwxTaEdqZu-3Jy1-uYg">
+ <body>The qualifier attribute must be a qualifier attribute of an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzhxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzhzBTaEdqZu-3Jy1-uYg" name="association_of_association" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzhyBTaEdqZu-3Jy1-uYg" annotatedElement="_srzhzBTaEdqZu-3Jy1-uYg">
+ <body>The association of the association end of the qualifier attribute must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzhzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzh1RTaEdqZu-3Jy1-uYg" name="ends_of_association" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh0RTaEdqZu-3Jy1-uYg" annotatedElement="_srzh1RTaEdqZu-3Jy1-uYg">
+ <body>The ends of the association must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzh1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzh3hTaEdqZu-3Jy1-uYg" name="type_of_object" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh2hTaEdqZu-3Jy1-uYg" annotatedElement="_srzh3hTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin is the association class that owns the association end that has the given qualifier attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzh3xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.type = self.qualifier.associationEnd.association</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzh5xTaEdqZu-3Jy1-uYg" name="multiplicity_of_qualifier" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh4xTaEdqZu-3Jy1-uYg" annotatedElement="_srzh5xTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the qualifier attribute is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzh6BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sr9SwxTaEdqZu-3Jy1-uYg" name="multiplicity_of_object" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh7BTaEdqZu-3Jy1-uYg" annotatedElement="_sr9SwxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the object input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9SxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sr9SzBTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_sr9SyBTaEdqZu-3Jy1-uYg" annotatedElement="_sr9SzBTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the same as the type of the qualifier attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9SzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.qualifier.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sr9S1RTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_sr9S0RTaEdqZu-3Jy1-uYg" annotatedElement="_sr9S1RTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9S1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF408C9018A" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C969A203C4" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D38C9699F00D0">
+ <ownedComment xmi:id="_stSvghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C969A203C4">
+ <body>Gives the input pin from which the link object is obtained.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvhhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvhRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CD5C7010D" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CD5C602EC">
+ <ownedComment xmi:id="_stSvjBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD5C7010D">
+ <body>Pin where the result value is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvkBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvjxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C96A0F006D" name="qualifier" type="_3ADC7B74022D3CC0DAE103AD" association="_3ADC7B74022D38C96A0A0283">
+ <ownedComment xmi:id="_stSvlhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C96A0F006D">
+ <body>The attribute representing the qualifier to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvmhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvmRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DA9AA00136" name="CreateLinkObjectAction">
+ <ownedComment xmi:id="_sr9S2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DA9AA00136">
+ <body>A create link object action creates a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sr9S4xTaEdqZu-3Jy1-uYg" name="association_class" constrainedElement="_3ADC7B74022D38DA9AA00136">
+ <ownedComment xmi:id="_sr9S3xTaEdqZu-3Jy1-uYg" annotatedElement="_sr9S4xTaEdqZu-3Jy1-uYg">
+ <body>The association must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9S5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.association().oclIsKindOf(Class)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssGcsRTaEdqZu-3Jy1-uYg" name="type_of_result" constrainedElement="_3ADC7B74022D38DA9AA00136">
+ <ownedComment xmi:id="_sr9S6BTaEdqZu-3Jy1-uYg" annotatedElement="_ssGcsRTaEdqZu-3Jy1-uYg">
+ <body>The type of the result pin must be the same as the association of the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGcshTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.association()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssGcuhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38DA9AA00136">
+ <ownedComment xmi:id="_ssGcthTaEdqZu-3Jy1-uYg" annotatedElement="_ssGcuhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGcuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38DA9AB80307" general="_3ADC7B74022D3745C9F20140"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38D7E682031D" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D38D7E68103B2">
+ <ownedComment xmi:id="_stSvoBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38D7E682031D">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvpBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvoxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF1414A01C5" name="AcceptEventAction">
+ <ownedComment xmi:id="_ssGcwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF1414A01C5">
+ <body>A accept event action is an action that waits for the occurrence of an event meeting specified conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssGczBTaEdqZu-3Jy1-uYg" name="no_input_pins" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssGcyBTaEdqZu-3Jy1-uYg" annotatedElement="_ssGczBTaEdqZu-3Jy1-uYg">
+ <body>AcceptEventActions may have no input pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGczRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssGc1RTaEdqZu-3Jy1-uYg" name="no_output_pins" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssGc0RTaEdqZu-3Jy1-uYg" annotatedElement="_ssGc1RTaEdqZu-3Jy1-uYg">
+ <body>There are no output pins if the trigger events are only ChangeEvents, or if they are only CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGc1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssQNsxTaEdqZu-3Jy1-uYg" name="trigger_events" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssGc2hTaEdqZu-3Jy1-uYg" annotatedElement="_ssQNsxTaEdqZu-3Jy1-uYg">
+ <body>If the trigger events are all TimeEvents, there is exactly one output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssQNtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssQNvBTaEdqZu-3Jy1-uYg" name="unmarshall_signal_events" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssQNuBTaEdqZu-3Jy1-uYg" annotatedElement="_ssQNvBTaEdqZu-3Jy1-uYg">
+ <body>If isUnmarshall is true, there must be exactly one trigger for events of type SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssQNvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A9F003B" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F19F1C02BD" name="isUnmarshall">
+ <ownedComment xmi:id="_ssQNwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F19F1C02BD">
+ <body>Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HSj98BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF142BB00AB" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3DF142BA002E">
+ <ownedComment xmi:id="_stcgmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF142BB00AB">
+ <body>Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stcgnhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stcgnRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4162A85001D0" name="trigger" type="_3ADC7B74022D3B9D229602A5" aggregation="composite" association="_3ADC7B74022D4162A84F00F1">
+ <ownedComment xmi:id="_st5McBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162A85001D0">
+ <body>The type of events accepted by the action, as specified by triggers. For triggers with signal events, a signal of the specified type or any subtype of the specified signal type is accepted.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_st5MdBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_st5McxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA834C0399" name="AcceptCallAction">
+ <ownedComment xmi:id="_ssQNxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA834C0399">
+ <body>An accept call action is an accept event action representing the receipt of a synchronous call request. In addition to the normal operation parameters, the action produces an output that is needed later to supply the information to the reply action necessary to return control to the caller. This action is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent reply action will complete immediately with no effects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssQNzxTaEdqZu-3Jy1-uYg" name="result_pins" constrainedElement="_3ADC7B74022D3DFA834C0399">
+ <ownedComment xmi:id="_ssQNyxTaEdqZu-3Jy1-uYg" annotatedElement="_ssQNzxTaEdqZu-3Jy1-uYg">
+ <body>The result pins must match the in and inout parameters of the operation specified by the trigger event in number, type, and order.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssQN0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssZXoxTaEdqZu-3Jy1-uYg" name="trigger_call_event" constrainedElement="_3ADC7B74022D3DFA834C0399">
+ <ownedComment xmi:id="_ssQN1BTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXoxTaEdqZu-3Jy1-uYg">
+ <body>The trigger event must be a CallEvent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>trigger.event.oclIsKindOf(CallEvent)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssZXrBTaEdqZu-3Jy1-uYg" name="unmarshall" constrainedElement="_3ADC7B74022D3DFA834C0399">
+ <ownedComment xmi:id="_ssZXqBTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXrBTaEdqZu-3Jy1-uYg">
+ <body>isUnmrashall must be true for an AcceptCallAction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isUnmarshall = true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E11B33703E6" general="_3ADC7B74022D3DF1414A01C5"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA85570271" name="returnInformation" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3DFA855603D8">
+ <ownedComment xmi:id="_stmRghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA85570271">
+ <body>Pin where a value is placed containing sufficient information to perform a subsequent reply and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRhhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRhRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA89FE003E" name="ReplyAction">
+ <ownedComment xmi:id="_ssZXsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA89FE003E">
+ <body>A reply action is an action that accepts a set of return values and a value containing return information produced by a previous accept call action. The reply action returns the values to the caller of the previous call, completing execution of the call.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssZXuhTaEdqZu-3Jy1-uYg" name="pins_match_parameter" constrainedElement="_3ADC7B74022D3DFA89FE003E">
+ <ownedComment xmi:id="_ssZXthTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXuhTaEdqZu-3Jy1-uYg">
+ <body>The reply value pins must match the return, out, and inout parameters of the operation on the event on the trigger in number, type, and order.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssZXwxTaEdqZu-3Jy1-uYg" name="event_on_reply_to_call_trigger" constrainedElement="_3ADC7B74022D3DFA89FE003E">
+ <ownedComment xmi:id="_ssZXvxTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXwxTaEdqZu-3Jy1-uYg">
+ <body>The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>replyToCallEvent.oclIsKindOf(CallEvent)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DFA8A2600FA" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA8A2D032C" name="replyToCall" type="_3ADC7B74022D3B9D229602A5" association="_3ADC7B74022D3DFA8A2C02AF">
+ <ownedComment xmi:id="_stmRihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA8A2D032C">
+ <body>The trigger specifying the operation whose call is being replied to.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRjhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRjRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4132131A0369" name="returnInformation" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D413213190090">
+ <ownedComment xmi:id="_stvbghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4132131A0369">
+ <body>A pin containing the return information value produced by an earlier AcceptCallAction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbhhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbhRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D413213720229" name="replyValue" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D4132136F01C0">
+ <ownedComment xmi:id="_stvbjBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D413213720229">
+ <body>A list of pins containing the reply values of the operation. These values are returned to the caller.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbkBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbjxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40F19F8103B3" name="UnmarshallAction">
+ <ownedComment xmi:id="_ssZXyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F19F8103B3">
+ <body>An unmarshall action is an action that breaks an object of a known type into outputs each of which is equal to a value from a structural feature of the object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssjIqBTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIpBTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIqBTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin must be the same as the unmarshall classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIqRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssjIsRTaEdqZu-3Jy1-uYg" name="multiplicity_of_object" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIrRTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIsRTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the object input pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIshTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssjIuhTaEdqZu-3Jy1-uYg" name="number_of_result" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIthTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIuhTaEdqZu-3Jy1-uYg">
+ <body>The number of result output pins must be the same as the number of structural features of the unmarshall classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssjIwxTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIvxTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIwxTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of each result output pin must be the same as the corresponding structural feature of the unmarshall classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sss5oxTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIyBTaEdqZu-3Jy1-uYg" annotatedElement="_sss5oxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding structural features of the unmarshall classifier.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sss5pBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sss5rBTaEdqZu-3Jy1-uYg" name="structural_feature" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_sss5qBTaEdqZu-3Jy1-uYg" annotatedElement="_sss5rBTaEdqZu-3Jy1-uYg">
+ <body>The unmarshall classifier must have at least one structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sss5rRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_skhF0Dc7Edqq1tCaRkgBQQ" name="unmarshallType_is_classifier" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_3CncYDc7Edqq1tCaRkgBQQ" annotatedElement="_skhF0Dc7Edqq1tCaRkgBQQ">
+ <body>unmarshallType must be a Classifier with ordered attributes</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skhF0Tc7Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D40F19F9D013C" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F19FE601AF" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D40F19FE00355">
+ <ownedComment xmi:id="_stmRkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F19FE601AF">
+ <body>The values of the structural features of the input object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRlhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRlRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F1A01F0107" name="unmarshallType" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D40F1A01D0104">
+ <ownedComment xmi:id="_stmRnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F1A01F0107">
+ <body>The type of the object to be unmarshalled.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbchTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbcRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D413212B50086" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D413212B201B1">
+ <ownedComment xmi:id="_stvbeBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D413212B50086">
+ <body>The object to be unmarshalled.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbfBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbexTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3M4wwGdhEdqCCpdUvbQY5w" name="ReduceAction">
+ <ownedComment xmi:id="_JKP4wGdjEdqCCpdUvbQY5w" annotatedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <body>A reduce action is an action that reduces a collection to a single value by combining the elements of the collection.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_qhlQ4GdjEdqCCpdUvbQY5w" name="input_type_is_collection" constrainedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_xUiycGdjEdqCCpdUvbQY5w" annotatedElement="_qhlQ4GdjEdqCCpdUvbQY5w">
+ <body>The type of the input must be a collection.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_qhlQ4WdjEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_y9vk4GdjEdqCCpdUvbQY5w" name="output_types_are_compatible" constrainedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_7-t2IGdjEdqCCpdUvbQY5w" annotatedElement="_y9vk4GdjEdqCCpdUvbQY5w">
+ <body>The type of the output must be compatible with the type of the output of the reducer behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9vk4WdjEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_DTENgGdkEdqCCpdUvbQY5w" name="reducer_inputs_output" constrainedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_QVrIMGdkEdqCCpdUvbQY5w" annotatedElement="_DTENgGdkEdqCCpdUvbQY5w">
+ <body>The reducer behavior must have two input parameters and one output parameter, of types compatible with the types of elements of the input collection.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_DTENgWdkEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_7ku6wGdhEdqCCpdUvbQY5w" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_DCUGoWdiEdqCCpdUvbQY5w" name="reducer" type="_3ADC7B74022D3B9A6F4F0008" association="_DCUGoGdiEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_eR7dIGdjEdqCCpdUvbQY5w" annotatedElement="_DCUGoWdiEdqCCpdUvbQY5w">
+ <body>Behavior that is applied to two elements of the input collection to produce a value that is the same type as elements of the collection.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DCdQkWdiEdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DCdQkGdiEdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_U4on8WdiEdqCCpdUvbQY5w" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_U4on8GdiEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_hMyrwGdjEdqCCpdUvbQY5w" annotatedElement="_U4on8WdiEdqCCpdUvbQY5w">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U4on9GdiEdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U4on82diEdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Y5-WcWdiEdqCCpdUvbQY5w" name="collection" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_Y5-WcGdiEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_PZvg4GdjEdqCCpdUvbQY5w" annotatedElement="_Y5-WcWdiEdqCCpdUvbQY5w">
+ <body>The collection to be reduced.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Y6IHcmdiEdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Y6IHcWdiEdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_whZ6wGdiEdqCCpdUvbQY5w" name="isOrdered">
+ <ownedComment xmi:id="_PrVAIGdjEdqCCpdUvbQY5w" annotatedElement="_whZ6wGdiEdqCCpdUvbQY5w">
+ <body>Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_0rYn4GdiEdqCCpdUvbQY5w">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CFBA20393" name="A_result_readExtentAction" memberEnd="_3ADC7B74022D395CFBA30150 _3ADC7B74022D395CFBA301F0">
+ <ownedEnd xmi:id="_3ADC7B74022D395CFBA301F0" type="_3ADC7B74022D38C95C100257" association="_3ADC7B74022D395CFBA20393">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5uRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5uBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C95C8303C5" name="A_classifier_readExtentAction" memberEnd="_3ADC7B74022D38C95C8402C2 _3ADC7B74022D38C95C840330">
+ <ownedEnd xmi:id="_3ADC7B74022D38C95C840330" type="_3ADC7B74022D38C95C100257" association="_3ADC7B74022D38C95C8303C5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5wxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5whTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DBEB100312" name="A_oldClassifier_reclassifyObjectAction" memberEnd="_3ADC7B74022D38DBEB11022D _3ADC7B74022D38DBEB11029B">
+ <ownedEnd xmi:id="_3ADC7B74022D38DBEB11029B" type="_3ADC7B74022D38DBEACB029B" association="_3ADC7B74022D38DBEB100312">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DlhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DlRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DBEB4102EB" name="A_newClassifier_reclassifyObjectAction" memberEnd="_3ADC7B74022D38DBEB4201CA _3ADC7B74022D38DBEB4201F2">
+ <ownedEnd xmi:id="_3ADC7B74022D38DBEB4201F2" type="_3ADC7B74022D38DBEACB029B" association="_3ADC7B74022D38DBEB4102EB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DoBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DnxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39739E2B0324" name="A_classifier_readIsClassifiedObjectAction" memberEnd="_3ADC7B74022D39739E2C01D1 _3ADC7B74022D39739E2C02A4">
+ <ownedEnd xmi:id="_3ADC7B74022D39739E2C02A4" type="_3ADC7B74022D39739DB102CF" association="_3ADC7B74022D39739E2B0324">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPqhMU-4EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPqhME-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39739EA700DE" name="A_result_readIsClassifiedObjectAction" memberEnd="_3ADC7B74022D39739EA70341 _3ADC7B74022D39739EA80003">
+ <ownedEnd xmi:id="_3ADC7B74022D39739EA80003" type="_3ADC7B74022D39739DB102CF" association="_3ADC7B74022D39739EA700DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DshTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DsRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39739E5B0251" name="A_object_readIsClassifiedObjectAction" memberEnd="_3ADC7B74022D39739E5C00B8 _3ADC7B74022D39739E5C01A8">
+ <ownedEnd xmi:id="_3ADC7B74022D39739E5C01A8" type="_3ADC7B74022D39739DB102CF" association="_3ADC7B74022D39739E5B0251">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0mBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0lxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3A7858D00028" name="A_object_startClassifierBehaviorAction" memberEnd="_3ADC7B74022D3A7858D00276 _3ADC7B74022D3A7858D0033F">
+ <ownedEnd xmi:id="_3ADC7B74022D3A7858D0033F" type="_3ADC7B74022D3A78587C0167" association="_3ADC7B74022D3A7858D00028">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0ohTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0oRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C96637032F" name="A_qualifier_linkEndData" memberEnd="_3ADC7B74022D38C966380182 _3ADC7B74022D38C966380183">
+ <ownedEnd xmi:id="_3ADC7B74022D38C966380183" type="_3ADC7B74022D3D03F9C80242" association="_3ADC7B74022D38C96637032F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0rBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0qxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C9668602D9" name="A_qualifier_qualifierValue" memberEnd="_3ADC7B74022D38C966870334 _3ADC7B74022D38C96687035C">
+ <ownedEnd xmi:id="_3ADC7B74022D38C96687035C" type="_3ADC7B74022D38C965F70052" association="_3ADC7B74022D38C9668602D9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0thTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0tRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C966AF03DC" name="A_value_qualifierValue" memberEnd="_3ADC7B74022D38C966B200C9 _3ADC7B74022D38C966B200E7">
+ <ownedEnd xmi:id="_3ADC7B74022D38C966B200E7" type="_3ADC7B74022D38C965F70052" association="_3ADC7B74022D38C966AF03DC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJlmRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlmBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C968E002AC" name="A_object_readLinkObjectEndAction" memberEnd="_3ADC7B74022D38C968E2011F _3ADC7B74022D38C968E20147">
+ <ownedEnd xmi:id="_3ADC7B74022D38C968E20147" type="_3ADC7B74022D38C968BA0212" association="_3ADC7B74022D38C968E002AC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJloxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlohTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C9690800B5" name="A_end_readLinkObjectEndAction" memberEnd="_3ADC7B74022D38C969090139 _3ADC7B74022D38C969090157">
+ <ownedEnd xmi:id="_3ADC7B74022D38C969090157" type="_3ADC7B74022D38C968BA0212" association="_3ADC7B74022D38C9690800B5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJlrRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlrBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CD5AD0098" name="A_result_readLinkObjectEndAction" memberEnd="_3ADC7B74022D395CD5AF009B _3ADC7B74022D395CD5AF0145">
+ <ownedEnd xmi:id="_3ADC7B74022D395CD5AF0145" type="_3ADC7B74022D38C968BA0212" association="_3ADC7B74022D395CD5AD0098">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJltxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlthTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C9699F00D0" name="A_object_readLinkObjectEndQualifierAction" memberEnd="_3ADC7B74022D38C969A203C4 _3ADC7B74022D38C969A203E2">
+ <ownedEnd xmi:id="_3ADC7B74022D38C969A203E2" type="_3ADC7B74022D38C9697C024D" association="_3ADC7B74022D38C9699F00D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSviRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSviBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CD5C602EC" name="A_result_readLinkObjectEndQualifierAction" memberEnd="_3ADC7B74022D395CD5C7010D _3ADC7B74022D395CD5C70199">
+ <ownedEnd xmi:id="_3ADC7B74022D395CD5C70199" type="_3ADC7B74022D38C9697C024D" association="_3ADC7B74022D395CD5C602EC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvkxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvkhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C96A0A0283" name="A_qualifier_readLinkObjectEndQualifierAction" memberEnd="_3ADC7B74022D38C96A0F006D _3ADC7B74022D38C96A0F009F">
+ <ownedEnd xmi:id="_3ADC7B74022D38C96A0F009F" type="_3ADC7B74022D38C9697C024D" association="_3ADC7B74022D38C96A0A0283">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvnRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvnBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38D7E68103B2" name="A_result_createLinkObjectAction" memberEnd="_3ADC7B74022D38D7E682031D _3ADC7B74022D38D7E6820346">
+ <ownedEnd xmi:id="_3ADC7B74022D38D7E6820346" type="_3ADC7B74022D38DA9AA00136" association="_3ADC7B74022D38D7E68103B2">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvpxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvphTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF3A5BD03D8" name="A_reclassifyObjectAction_object" memberEnd="_3ADC7B74022D3DF3A5BE02AF _3ADC7B74022D3DF3A5BE02BF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF3A5BE02AF" type="_3ADC7B74022D38DBEACB029B" association="_3ADC7B74022D3DF3A5BD03D8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QGbXYU-4EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QGbXYE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF142BA002E" name="A_result_acceptEventAction" memberEnd="_3ADC7B74022D3DF142BB00AB _3ADC7B74022D3DF142BB0138">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF142BB0138" type="_3ADC7B74022D3DF1414A01C5" association="_3ADC7B74022D3DF142BA002E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mbH98U-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mbH98E-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA855603D8" name="A_returnInformation_acceptCallAction" memberEnd="_3ADC7B74022D3DFA85570271 _3ADC7B74022D3DFA855702AF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA855702AF" type="_3ADC7B74022D3DFA834C0399" association="_3ADC7B74022D3DFA855603D8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oIzAsU-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oIzAsE-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA8A2C02AF" name="A_replyToCall_replyAction" memberEnd="_3ADC7B74022D3DFA8A2D032C _3ADC7B74022D3DFA8A2D034B">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA8A2D034B" type="_3ADC7B74022D3DFA89FE003E" association="_3ADC7B74022D3DFA8A2C02AF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wuWhQU-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wuWhQE-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F19FE00355" name="A_result_unmarshallAction" memberEnd="_3ADC7B74022D40F19FE601AF _3ADC7B74022D40F19FE601E1">
+ <ownedEnd xmi:id="_3ADC7B74022D40F19FE601E1" type="_3ADC7B74022D40F19F8103B3" association="_3ADC7B74022D40F19FE00355">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRmRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRmBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F1A01D0104" name="A_unmarshallType_unmarshallAction" memberEnd="_3ADC7B74022D40F1A01F0107 _3ADC7B74022D40F1A01F0157">
+ <ownedEnd xmi:id="_3ADC7B74022D40F1A01F0157" type="_3ADC7B74022D40F19F8103B3" association="_3ADC7B74022D40F1A01D0104">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbdRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbdBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D413212B201B1" name="A_object_unmarshallAction" memberEnd="_3ADC7B74022D413212B50086 _3ADC7B74022D413212B500A4">
+ <ownedEnd xmi:id="_3ADC7B74022D413212B500A4" type="_3ADC7B74022D40F19F8103B3" association="_3ADC7B74022D413212B201B1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbfxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbfhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D413213190090" name="A_returnInformation_replyAction" memberEnd="_3ADC7B74022D4132131A0369 _3ADC7B74022D4132131A0387">
+ <ownedEnd xmi:id="_3ADC7B74022D4132131A0387" type="_3ADC7B74022D3DFA89FE003E" association="_3ADC7B74022D413213190090">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbiRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbiBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4132136F01C0" name="A_replyValue_replyAction" memberEnd="_3ADC7B74022D413213720229 _3ADC7B74022D41321372023D">
+ <ownedEnd xmi:id="_3ADC7B74022D41321372023D" type="_3ADC7B74022D3DFA89FE003E" association="_3ADC7B74022D4132136F01C0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbkxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbkhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4162A84F00F1" name="A_trigger_acceptEventAction" memberEnd="_3ADC7B74022D4162A85001D0 _3ADC7B74022D4162A85001D2">
+ <ownedEnd xmi:id="_3ADC7B74022D4162A85001D2" type="_3ADC7B74022D3DF1414A01C5" association="_3ADC7B74022D4162A84F00F1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_st5MdxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_st5MdhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_U4on8GdiEdqCCpdUvbQY5w" name="A_result_reduceAction" memberEnd="_U4on8WdiEdqCCpdUvbQY5w _U4on8mdiEdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_U4on8mdiEdqCCpdUvbQY5w" type="_3M4wwGdhEdqCCpdUvbQY5w" association="_U4on8GdiEdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b43qsU-4EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b43qsE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Y5-WcGdiEdqCCpdUvbQY5w" name="A_collection_reduceAction" memberEnd="_Y5-WcWdiEdqCCpdUvbQY5w _Y6IHcGdiEdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_Y6IHcGdiEdqCCpdUvbQY5w" type="_3M4wwGdhEdqCCpdUvbQY5w" association="_Y5-WcGdiEdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_amxJoU-4EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_amxJoE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_DCUGoGdiEdqCCpdUvbQY5w" name="A_reducer_reduceAction" memberEnd="_DCUGoWdiEdqCCpdUvbQY5w _DCUGomdiEdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_DCUGomdiEdqCCpdUvbQY5w" type="_3M4wwGdhEdqCCpdUvbQY5w" association="_DCUGoGdiEdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gfnzYU-4EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gfnzYE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF1252E035B" name="IntermediateActions">
+ <packageImport xmi:id="_3ADC7B74022D4162B99E012D" importedPackage="_3ADC7B74022D410C264F010C"/>
+ <packageImport xmi:id="_Es5cAD9IEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_HTmfwBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745CA3B0096" name="CreateObjectAction">
+ <ownedComment xmi:id="_suV4ZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745CA3B0096">
+ <body>A create object action is an action that creates an object that conforms to a statically specified classifier and puts it on an output pin at runtime.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_suV4bRTaEdqZu-3Jy1-uYg" name="classifier_not_abstract" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_suV4aRTaEdqZu-3Jy1-uYg" annotatedElement="_suV4bRTaEdqZu-3Jy1-uYg">
+ <body>The classifier cannot be abstract.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suV4bhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not (self.classifier.isAbstract = #true)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suV4dhTaEdqZu-3Jy1-uYg" name="classifier_not_association_class" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_suV4chTaEdqZu-3Jy1-uYg" annotatedElement="_suV4dhTaEdqZu-3Jy1-uYg">
+ <body>The classifier cannot be an association class</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suV4dxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.classifier.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suV4fxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_suV4exTaEdqZu-3Jy1-uYg" annotatedElement="_suV4fxTaEdqZu-3Jy1-uYg">
+ <body>The type of the result pin must be the same as the classifier of the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCUBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.classifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sufCWBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_sufCVBTaEdqZu-3Jy1-uYg" annotatedElement="_sufCWBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCWRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A4A035A" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D381D094D0268" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D381D094C0361">
+ <ownedComment xmi:id="_swueABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D381D094D0268">
+ <body>Classifier to be instantiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueAxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38D6B21303BC" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D38D6B2130145">
+ <ownedComment xmi:id="_swueChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38D6B21303BC">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueDhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueDRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745CA280212" name="DestroyObjectAction">
+ <ownedComment xmi:id="_sufCXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745CA280212">
+ <body>A destroy object action is an action that destroys objects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sufCZhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3745CA280212">
+ <ownedComment xmi:id="_sufCYhTaEdqZu-3Jy1-uYg" annotatedElement="_sufCZhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCZxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.target.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sufCbxTaEdqZu-3Jy1-uYg" name="no_type" constrainedElement="_3ADC7B74022D3745CA280212">
+ <ownedComment xmi:id="_sufCaxTaEdqZu-3Jy1-uYg" annotatedElement="_sufCbxTaEdqZu-3Jy1-uYg">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCcBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.target.type->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A4D0336" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D408A5B510111" name="isDestroyLinks">
+ <ownedComment xmi:id="_sufCdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D408A5B510111">
+ <body>Specifies whether links in which the object participates are destroyed along with the object.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HT6BwBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D408A5B5D0399" name="isDestroyOwnedObjects">
+ <ownedComment xmi:id="_sufCeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D408A5B5D0399">
+ <body>Specifies whether objects owned by the object are destroyed along with the object.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HT6BwRTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D37497F3F02E4" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D37497F3E0320">
+ <ownedComment xmi:id="_swueFBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D37497F3F02E4">
+ <body>The input pin providing the object to be destroyed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueGBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueFxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3AA55DF5017C" name="TestIdentityAction">
+ <ownedComment xmi:id="_suozVBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AA55DF5017C">
+ <body>A test identity action is an action that tests if two values are identical objects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_suozXRTaEdqZu-3Jy1-uYg" name="no_type" constrainedElement="_3ADC7B74022D3AA55DF5017C">
+ <ownedComment xmi:id="_suozWRTaEdqZu-3Jy1-uYg" annotatedElement="_suozXRTaEdqZu-3Jy1-uYg">
+ <body>The input pins have no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suozXhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suozZhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3AA55DF5017C">
+ <ownedComment xmi:id="_suozYhTaEdqZu-3Jy1-uYg" annotatedElement="_suozZhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pins is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suozZxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.first.multiplicity.is(1,1)&#xA;and self.second.multiplicity.is(1,1)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suozbxTaEdqZu-3Jy1-uYg" name="result_is_boolean" constrainedElement="_3ADC7B74022D3AA55DF5017C">
+ <ownedComment xmi:id="_suozaxTaEdqZu-3Jy1-uYg" annotatedElement="_suozbxTaEdqZu-3Jy1-uYg">
+ <body>The type of the result is Boolean.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suozcBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type.oclIsTypeOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A5201B7" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5C7280139" name="first" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3CB5C7270200">
+ <ownedComment xmi:id="_swueHhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5C7280139">
+ <body>Gives the pin on which an object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3n8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n8hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5C7300343" name="second" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3CB5C72F02DE">
+ <ownedComment xmi:id="_sw3n-RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5C7300343">
+ <body>Gives the pin on which an object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3n_RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n_BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5C6940046" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3CB5C6930149">
+ <ownedComment xmi:id="_sw3oAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5C6940046">
+ <body>Tells whether the two input objects are identical.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oBxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oBhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C96A5A00A7" name="ReadSelfAction">
+ <ownedComment xmi:id="_sux9QRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C96A5A00A7">
+ <body>A read self action is an action that retrieves the host object of an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sux9ShTaEdqZu-3Jy1-uYg" name="contained" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9RhTaEdqZu-3Jy1-uYg" annotatedElement="_sux9ShTaEdqZu-3Jy1-uYg">
+ <body>The action must be contained in an behavior that has a host classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9SxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.context->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sux9UxTaEdqZu-3Jy1-uYg" name="not_static" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9TxTaEdqZu-3Jy1-uYg" annotatedElement="_sux9UxTaEdqZu-3Jy1-uYg">
+ <body>If the action is contained in an behavior that is acting as the body of a method, then the operation of the method must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9VBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sux9XBTaEdqZu-3Jy1-uYg" name="type" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9WBTaEdqZu-3Jy1-uYg" annotatedElement="_sux9XBTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the host classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9XRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.context</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sux9ZRTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9YRTaEdqZu-3Jy1-uYg" annotatedElement="_sux9ZRTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9ZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A55039C" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CFBA10125" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CFBA0032C">
+ <ownedComment xmi:id="_sw3oDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CFBA10125">
+ <body>Gives the output pin on which the hosting object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oERTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oEBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DC060A01A0" name="StructuralFeatureAction" isAbstract="true">
+ <ownedComment xmi:id="_su7uQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC060A01A0">
+ <body>StructuralFeatureAction is an abstract class for all structural feature actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_su7uShTaEdqZu-3Jy1-uYg" name="not_static" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uRhTaEdqZu-3Jy1-uYg" annotatedElement="_su7uShTaEdqZu-3Jy1-uYg">
+ <body>The structural feature must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uSxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.structuralFeature.isStatic = #false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_su7uUxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uTxTaEdqZu-3Jy1-uYg" annotatedElement="_su7uUxTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin is the same as the classifier of the object passed on this pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_su7uXBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uWBTaEdqZu-3Jy1-uYg" annotatedElement="_su7uXBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin must be 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_su7uZRTaEdqZu-3Jy1-uYg" name="visibility" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uYRTaEdqZu-3Jy1-uYg" annotatedElement="_su7uZRTaEdqZu-3Jy1-uYg">
+ <body>Visibility of structural feature must allow access to the object performing the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let host : Classifier = self.context in&#xA;self.structuralFeature.visibility = #public&#xA;or host = self.structuralFeature.featuringClassifier.type&#xA;or (self.structuralFeature.visibility = #protected and host.allSupertypes&#xA;->includes(self.structuralFeature.featuringClassifier.type)))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svFfQxTaEdqZu-3Jy1-uYg" name="one_featuring_classifier" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uahTaEdqZu-3Jy1-uYg" annotatedElement="_svFfQxTaEdqZu-3Jy1-uYg">
+ <body>A structural feature has exactly one featuringClassifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svFfRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.structuralFeature.featuringClassifier->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A1500E7" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DC08B8027B" name="structuralFeature" type="_3ADC7B74022D3CAB08ED000D" association="_3ADC7B74022D38DC08B80279">
+ <ownedComment xmi:id="_sxBY8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC08B8027B">
+ <body>Structural feature to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBY9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBY9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DC073A03E2" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D38DC073A0161">
+ <ownedComment xmi:id="_sxBY-hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC073A03E2">
+ <body>Gives the input pin from which the object whose structural feature is to be read or written is obtained.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBY_hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBY_RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D395CE0A502DA" name="ReadStructuralFeatureAction">
+ <ownedComment xmi:id="_svFfSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CE0A502DA">
+ <body>A read structural feature action is a structural feature action that retrieves the values of a structural feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svFfURTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D395CE0A502DA">
+ <ownedComment xmi:id="_svFfTRTaEdqZu-3Jy1-uYg" annotatedElement="_svFfURTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of the result output pin are the same as the type and ordering of the structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svFfUhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.structuralFeature.type&#xA;and self.result.ordering = self.structuralFeature.ordering&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svFfWhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D395CE0A502DA">
+ <ownedComment xmi:id="_svFfVhTaEdqZu-3Jy1-uYg" annotatedElement="_svFfWhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the structural feature must be compatible with the multiplicity of the output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svFfWxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D395CE0B10255" general="_3ADC7B74022D38DC060A01A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CE0B3033E" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CE0B30154">
+ <ownedComment xmi:id="_sxBZBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CE0B3033E">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi4hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D380F43690262" name="WriteStructuralFeatureAction" isAbstract="true">
+ <ownedComment xmi:id="_svFfXxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D380F43690262">
+ <body>WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svOpMxTaEdqZu-3Jy1-uYg" name="input_pin" constrainedElement="_3ADC7B74022D380F43690262">
+ <ownedComment xmi:id="_svFfZBTaEdqZu-3Jy1-uYg" annotatedElement="_svOpMxTaEdqZu-3Jy1-uYg">
+ <body>The type input pin is the same as the classifier of the structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svOpNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.structuralFeature.featuringClassifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svOpPBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D380F43690262">
+ <ownedComment xmi:id="_svOpOBTaEdqZu-3Jy1-uYg" annotatedElement="_svOpPBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svOpPRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38DC062A00DE" general="_3ADC7B74022D38DC060A01A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39073965015A" name="value" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3907396402D5">
+ <ownedComment xmi:id="_sxKi6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39073965015A">
+ <body>Value to be added or removed from the structural feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A78723F03E1" name="ClearStructuralFeatureAction">
+ <ownedComment xmi:id="_svOpQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78723F03E1">
+ <body>A clear structural feature action is a structural feature action that removes all values of a structural feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3A7872B7039E" general="_3ADC7B74022D38DC060A01A0"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A7870670003" name="RemoveStructuralFeatureValueAction">
+ <ownedComment xmi:id="_svYaMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A7870670003">
+ <body>A remove structural feature value action is a write structural feature action that removes values from structural features.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svYaORTaEdqZu-3Jy1-uYg" name="non_unique_removal" constrainedElement="_3ADC7B74022D3A7870670003">
+ <ownedComment xmi:id="_svYaNRTaEdqZu-3Jy1-uYg" annotatedElement="_svYaORTaEdqZu-3Jy1-uYg">
+ <body>Actions removing a value from ordered nonunique structural features must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the action has no removeAt input pin.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svYaOhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A7872050103" general="_3ADC7B74022D380F43690262"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B0860159" name="isRemoveDuplicates">
+ <ownedComment xmi:id="_svYaPhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B0860159">
+ <body>Specifies whether to remove duplicates of the value in nonunique structural features.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUM8sBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B01C03C3" name="removeAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D40F9B01A029E">
+ <ownedComment xmi:id="_sxw_4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B01C03C3">
+ <body>Specifies the position of an existing value to remove in ordered nonunique structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_5RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_5BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787176007B" name="AddStructuralFeatureValueAction">
+ <ownedComment xmi:id="_svYaQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787176007B">
+ <body>An add structural feature value action is a write structural feature action for adding values to a structural feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svYaTBTaEdqZu-3Jy1-uYg" name="unlimited_natural_and_multiplicity" constrainedElement="_3ADC7B74022D3A787176007B">
+ <ownedComment xmi:id="_svYaSBTaEdqZu-3Jy1-uYg" annotatedElement="_svYaTBTaEdqZu-3Jy1-uYg">
+ <body>Actions adding a value to ordered structural features must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svYaTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let insertAtPins : Collection = self.insertAt in&#xA;if self.structuralFeature.isOrdered = #false&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin= insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A7871820371" general="_3ADC7B74022D380F43690262"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A78A64D0112" name="isReplaceAll">
+ <ownedComment xmi:id="_svYaURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78A64D0112">
+ <body>Specifies whether existing values of the structural feature of the object should be removed before adding the new value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUWGoBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3960D15E0004" name="insertAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3960D15B0367">
+ <ownedComment xmi:id="_sxKi8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3960D15E0004">
+ <body>Gives the position at which to insert a new value or move an existing value in ordered structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero. This pin is omitted for unordered structural features.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi9hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DC038F0193" name="LinkAction" isAbstract="true">
+ <ownedComment xmi:id="_sviLNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC038F0193">
+ <body>LinkAction is an abstract class for all link actions that identify their links by the objects at the ends of the links and by the qualifiers at ends of the links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sviLPRTaEdqZu-3Jy1-uYg" name="same_association" constrainedElement="_3ADC7B74022D38DC038F0193">
+ <ownedComment xmi:id="_sviLORTaEdqZu-3Jy1-uYg" annotatedElement="_sviLPRTaEdqZu-3Jy1-uYg">
+ <body>The association ends of the link end data must all be from the same association and include all and only the association ends of that association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sviLPhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endData->collect(end) = self.association()->collect(connection))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sviLRhTaEdqZu-3Jy1-uYg" name="not_static" constrainedElement="_3ADC7B74022D38DC038F0193">
+ <ownedComment xmi:id="_sviLQhTaEdqZu-3Jy1-uYg" annotatedElement="_sviLRhTaEdqZu-3Jy1-uYg">
+ <body>The association ends of the link end data must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sviLRxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sviLTxTaEdqZu-3Jy1-uYg" name="same_pins" constrainedElement="_3ADC7B74022D38DC038F0193">
+ <ownedComment xmi:id="_sviLSxTaEdqZu-3Jy1-uYg" annotatedElement="_sviLTxTaEdqZu-3Jy1-uYg">
+ <body>The input pins of the action are the same as the pins of the link end data and insertion pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sviLUBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.input->asSet() =&#xA;let ledpins : Set = self.endData->collect(value) in&#xA;if self.oclIsKindOf(LinkEndCreationData)&#xA;then ledpins->union(self.endData.oclAsType(LinkEndCreationData).insertAt)&#xA;else ledpins&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A35011F" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DC04A0013B" name="endData" type="_3ADC7B74022D37497C230140" aggregation="composite" association="_3ADC7B74022D38DC049F0298">
+ <ownedComment xmi:id="_sxKi_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC04A0013B">
+ <body>Data identifying one end of a link by the objects on its ends and qualifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKjARTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKjABTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_TWk18TanEdqq1tCaRkgBQQ" name="inputValue" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_TWk18DanEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_JGDp8EDPEdqY8ZY2jW2jkQ" annotatedElement="_TWk18TanEdqq1tCaRkgBQQ">
+ <body>Pins taking end objects and qualifier values as input.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TWk19DanEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TWk18zanEdqq1tCaRkgBQQ" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300909101D4" name="association" isQuery="true" bodyCondition="_svrVJRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_svrVIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300909101D4">
+ <body>The association operates on LinkAction. It returns the association of the action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svrVJRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300909101D4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVJhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.endData->asSequence().first().end.association</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_svrVJBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAB1DD70016" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D37497C230140" name="LinkEndData">
+ <ownedComment xmi:id="_svrVKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D37497C230140">
+ <body>A link end data is not an action. It is an element that identifies links. It identifies one end of a link to be read or written by the children of a link action. A link cannot be passed as a runtime value to or from an action. Instead, a link is identified by its end objects and qualifier values, if any. This requires more than one piece of data, namely, the statically-specified end in the user model, the object on the end, and the qualifier values for that end, if any. These pieces are brought together around a link end data. Each association end is identified separately with an instance of the LinkEndData class.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svrVMxTaEdqZu-3Jy1-uYg" name="property_is_association_end" constrainedElement="_3ADC7B74022D37497C230140">
+ <ownedComment xmi:id="_svrVLxTaEdqZu-3Jy1-uYg" annotatedElement="_svrVMxTaEdqZu-3Jy1-uYg">
+ <body>The property must be an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.association->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svrVOxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D37497C230140">
+ <ownedComment xmi:id="_svrVOBTaEdqZu-3Jy1-uYg" annotatedElement="_svrVOxTaEdqZu-3Jy1-uYg">
+ <body>The type of the end object input pin is the same as the type of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVPBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.end.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svrVRBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D37497C230140">
+ <ownedComment xmi:id="_svrVQBTaEdqZu-3Jy1-uYg" annotatedElement="_svrVRBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the end object input pin must be 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVRRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E033D670182" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C965AE012A" name="value" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D38C965AD0164">
+ <ownedComment xmi:id="_sxKjBxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C965AE012A">
+ <body>Input pin that provides the specified object for the given end. This pin is omitted if the link-end data specifies an 'open' end for reading.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D0CD47D03BA" name="end" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D3D0CD47D0139">
+ <ownedComment xmi:id="_sxUT6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0CD47D03BA">
+ <body>Association end for which this link-end data specifies values.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D395CD503027E" name="ReadLinkAction">
+ <ownedComment xmi:id="_sv1GIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD503027E">
+ <body>A read link action is a link action that navigates across associations to retrieve objects on one end.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sv1GKhTaEdqZu-3Jy1-uYg" name="one_open_end" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv1GJhTaEdqZu-3Jy1-uYg" annotatedElement="_sv1GKhTaEdqZu-3Jy1-uYg">
+ <body>Exactly one link-end data specification (the 'open' end) must not have an end object input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv1GKxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endData->select(ed | ed.value->size() = 0)->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv1GMxTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv1GLxTaEdqZu-3Jy1-uYg" annotatedElement="_sv1GMxTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of the result output pin are same as the type and ordering of the open association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv1GNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;self.result.type = openend.type&#xA;and self.result.ordering = openend.ordering&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv-3JBTaEdqZu-3Jy1-uYg" name="compatible_multiplicity" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv-3IBTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3JBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the open association end must be compatible with the multiplicity of the result output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3JRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.multiplicity.compatibleWith(self.result.multiplicity)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv-3LRTaEdqZu-3Jy1-uYg" name="navigable_open_end" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv-3KRTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3LRTaEdqZu-3Jy1-uYg">
+ <body>The open end must be navigable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3LhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.isNavigable()&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv-3NhTaEdqZu-3Jy1-uYg" name="visibility" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv-3MhTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3NhTaEdqZu-3Jy1-uYg">
+ <body>Visibility of the open end must allow access to the object performing the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3NxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let host : Classifier = self.context in&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.visibility = #public&#xA;or self.endData->exists(oed | not oed.end = openend&#xA;and (host = oed.end.participant&#xA;or (openend.visibility = #protected&#xA;and host.allSupertypes->includes(oed.end.participant))))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D395CD51203AC" general="_3ADC7B74022D38DC038F0193"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CD52102DB" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CD521012D">
+ <ownedComment xmi:id="_sxUT8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD52102DB">
+ <body>The pin on which are put the objects participating in the association at the end not specified by the inputs.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D393AD8B602EE" name="LinkEndCreationData">
+ <ownedComment xmi:id="_sv-3OxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D393AD8B602EE">
+ <body>A link end creation data is not an action. It is an element that identifies links. It identifies one end of a link to be created by a create link action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sv-3RBTaEdqZu-3Jy1-uYg" name="create_link_action" constrainedElement="_3ADC7B74022D393AD8B602EE">
+ <ownedComment xmi:id="_sv-3QBTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3RBTaEdqZu-3Jy1-uYg">
+ <body>LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3RRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.LinkAction.oclIsKindOf(CreateLinkAction)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swIBFRTaEdqZu-3Jy1-uYg" name="single_input_pin" constrainedElement="_3ADC7B74022D393AD8B602EE">
+ <ownedComment xmi:id="_swIBERTaEdqZu-3Jy1-uYg" annotatedElement="_swIBFRTaEdqZu-3Jy1-uYg">
+ <body>Link end creation data for ordered association ends must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swIBFhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let insertAtPins : Collection = self.insertAt in&#xA;if self.end.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAts->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38DA8D750084" general="_3ADC7B74022D37497C230140"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A785E8003E3" name="isReplaceAll">
+ <ownedComment xmi:id="_swIBGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A785E8003E3">
+ <body>Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUf3oBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3960C17401FA" name="insertAt" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D3960C173020D">
+ <ownedComment xmi:id="_sxUT_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3960C17401FA">
+ <body>Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUUARTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUUABTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745C9F20140" name="CreateLinkAction">
+ <ownedComment xmi:id="_swIBHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745C9F20140">
+ <body>A create link action is a write link action for creating links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swIBKBTaEdqZu-3Jy1-uYg" name="association_not_abstract" constrainedElement="_3ADC7B74022D3745C9F20140">
+ <ownedComment xmi:id="_swIBJBTaEdqZu-3Jy1-uYg" annotatedElement="_swIBKBTaEdqZu-3Jy1-uYg">
+ <body>The association cannot be an abstract classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swIBKRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.association().isAbstract = #false</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3907702B036F" general="_3ADC7B74022D39076FFD0233"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D393AD8C30256" name="endData" type="_3ADC7B74022D393AD8B602EE" aggregation="composite" redefinedProperty="_3ADC7B74022D38DC04A0013B" association="_3ADC7B74022D393AD8C202F5">
+ <ownedComment xmi:id="_sxUUBxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D393AD8C30256">
+ <body>Specifies ends of association and inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE4hTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745CA190280" name="DestroyLinkAction">
+ <ownedComment xmi:id="_swIBLRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745CA190280">
+ <body>A destroy link action is a write link action that destroys links and link objects.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3907702E02A1" general="_3ADC7B74022D39076FFD0233"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B1D1008D" name="endData" type="_3ADC7B74022D40F9B109007B" aggregation="composite" redefinedProperty="_3ADC7B74022D38DC04A0013B" association="_3ADC7B74022D40F9B1CF0008">
+ <ownedComment xmi:id="_sxw_9RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B1D1008D">
+ <body>Specifies ends of association and inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w0xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w0hTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D39076FFD0233" name="WriteLinkAction" isAbstract="true">
+ <ownedComment xmi:id="_swRyExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39076FFD0233">
+ <body>WriteLinkAction is an abstract class for link actions that create and destroy links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_nWosAEbvEdq0rbStTpEubg" name="allow_access" constrainedElement="_3ADC7B74022D39076FFD0233">
+ <ownedComment xmi:id="_qqPKwEbvEdq0rbStTpEubg" annotatedElement="_nWosAEbvEdq0rbStTpEubg">
+ <body>The visibility of at least one end must allow access to the class using the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_nWosAUbvEdq0rbStTpEubg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D395CE59D00D0" general="_3ADC7B74022D38DC038F0193"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787BA00221" name="ClearAssociationAction">
+ <ownedComment xmi:id="_swRyGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787BA00221">
+ <body>A clear association action is an action that destroys all links of an association in which a particular object participates.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swRyIRTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D3A787BA00221">
+ <ownedComment xmi:id="_swRyHRTaEdqZu-3Jy1-uYg" annotatedElement="_swRyIRTaEdqZu-3Jy1-uYg">
+ <body>The type of the input pin must be the same as the type of at least one of the association ends of the association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swRyIhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.association->exists(end.type = self.object.type)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swRyKhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3A787BA00221">
+ <ownedComment xmi:id="_swRyJhTaEdqZu-3Jy1-uYg" annotatedElement="_swRyKhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swRyKxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40B1600AB" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A78829900DD" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3A78829802EF">
+ <ownedComment xmi:id="_sxeE6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78829900DD">
+ <body>Gives the input pin from which is obtained the object whose participation in the association is to be cleared.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A787C7500FB" name="association" type="_3ADC7B74022D3CAB1DD70016" association="_3ADC7B74022D3A787C74030C">
+ <ownedComment xmi:id="_sxeE8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787C7500FB">
+ <body>Association to be cleared.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B68A64C002F" name="BroadcastSignalAction">
+ <ownedComment xmi:id="_swRyLxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A64C002F">
+ <body>A broadcast signal action is an action that transmits a signal instance to all the potential target objects in the system, which may cause the firing of a state machine transitions or the execution of associated activities of a target object. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately after the signals are sent out. It does not wait for receipt. Any reply messages are ignored and are not transmitted to the requestor.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swa8AxTaEdqZu-3Jy1-uYg" name="number_and_order" constrainedElement="_3ADC7B74022D3B68A64C002F">
+ <ownedComment xmi:id="_swRyNBTaEdqZu-3Jy1-uYg" annotatedElement="_swa8AxTaEdqZu-3Jy1-uYg">
+ <body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swa8BBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swa8DBTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3B68A64C002F">
+ <ownedComment xmi:id="_swa8CBTaEdqZu-3Jy1-uYg" annotatedElement="_swa8DBTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swa8DRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B68A66901E0" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B68A6DF00F9" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D3B68A6DE01E8">
+ <ownedComment xmi:id="_sxw_1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A6DF00F9">
+ <body>The specification of signal object transmitted to the target objects.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_2xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_2hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D63D34B001F" name="SendObjectAction">
+ <ownedComment xmi:id="_swa8ERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D63D34B001F">
+ <body>A send object action is an action that transmits an object to the target object, where it may invoke behavior such as the firing of state machine transitions or the execution of an activity. The value of the object is available to the execution of invoked behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D63D6D602CE" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D63D6EC034B" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3D63D6EA030D">
+ <ownedComment xmi:id="_sxnO1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D63D6EC034B">
+ <body>The target object to which the object is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxnO2BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxnO1xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D63D78001E4" name="request" type="_3ADC7B74022D384B237E021A" aggregation="composite" redefinedProperty="_3ADC7B74022D3CA72E450074" association="_3ADC7B74022D3D63D77F0213">
+ <ownedComment xmi:id="_sxnO3BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D63D78001E4">
+ <body>The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_0xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_0hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40F9B109007B" name="LinkEndDestructionData">
+ <ownedComment xmi:id="_swa8FhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B109007B">
+ <body>A link end destruction data is not an action. It is an element that identifies links. It identifies one end of a link to be destroyed by destroy link action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swa8HxTaEdqZu-3Jy1-uYg" name="destroy_link_action" constrainedElement="_3ADC7B74022D40F9B109007B">
+ <ownedComment xmi:id="_swa8GxTaEdqZu-3Jy1-uYg" annotatedElement="_swa8HxTaEdqZu-3Jy1-uYg">
+ <body>LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swa8IBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swktAxTaEdqZu-3Jy1-uYg" name="unlimited_natural_and_multiplicity" constrainedElement="_3ADC7B74022D40F9B109007B">
+ <ownedComment xmi:id="_swa8JBTaEdqZu-3Jy1-uYg" annotatedElement="_swktAxTaEdqZu-3Jy1-uYg">
+ <body>LinkEndDestructionData for ordered nonunique association ends must have a single destroyAt input pin if isDestroyDuplicates is false. It must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no input pin for the removal position.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swktBBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D40F9B18A0167" general="_3ADC7B74022D37497C230140"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B147032D" name="isDestroyDuplicates">
+ <ownedComment xmi:id="_swktCBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B147032D">
+ <body>Specifies whether to destroy duplicates of the value in nonunique association ends.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUpooBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B19B036A" name="destroyAt" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D40F9B19902E5">
+ <ownedComment xmi:id="_sxw_6xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B19B036A">
+ <body>Specifies the position of an existing link to be destroyed in ordered nonunique association ends. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_7xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_7hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40FAD18F0202" name="ValueSpecificationAction">
+ <ownedComment xmi:id="_swktDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40FAD18F0202">
+ <body>A value specification action is an action that evaluates a value specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swktFhTaEdqZu-3Jy1-uYg" name="compatible_type" constrainedElement="_3ADC7B74022D40FAD18F0202">
+ <ownedComment xmi:id="_swktEhTaEdqZu-3Jy1-uYg" annotatedElement="_swktFhTaEdqZu-3Jy1-uYg">
+ <body>The type of value specification must be compatible with the type of the result pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swktFxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swktHxTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D40FAD18F0202">
+ <ownedComment xmi:id="_swktGxTaEdqZu-3Jy1-uYg" annotatedElement="_swktHxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swktIBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D40FAD24503D0" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B0DA9403C3" name="value" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" association="_3ADC7B74022D41B0DA9400E8">
+ <ownedComment xmi:id="_sx6w2RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B0DA9403C3">
+ <body>Value specification to be evaluated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w3RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w3BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40FAD236031A" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D40FAD23502E7">
+ <ownedComment xmi:id="_sx6w4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40FAD236031A">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w5xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w5hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D381D094C0361" name="A_classifier_createObjectAction" memberEnd="_3ADC7B74022D381D094D0268 _3ADC7B74022D381D094D0286">
+ <ownedEnd xmi:id="_3ADC7B74022D381D094D0286" type="_3ADC7B74022D3745CA3B0096" association="_3ADC7B74022D381D094C0361">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueBxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueBhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38D6B2130145" name="A_result_createObjectAction" memberEnd="_3ADC7B74022D38D6B21303BC _3ADC7B74022D38D6B21303DA">
+ <ownedEnd xmi:id="_3ADC7B74022D38D6B21303DA" type="_3ADC7B74022D3745CA3B0096" association="_3ADC7B74022D38D6B2130145">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueERTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueEBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D37497F3E0320" name="A_target_destroyObjectAction" memberEnd="_3ADC7B74022D37497F3F02E4 _3ADC7B74022D37497F3F02E5">
+ <ownedEnd xmi:id="_3ADC7B74022D37497F3F02E5" type="_3ADC7B74022D3745CA280212" association="_3ADC7B74022D37497F3E0320">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueGxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueGhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5C7270200" name="A_first_testIdentityAction" memberEnd="_3ADC7B74022D3CB5C7280139 _3ADC7B74022D3CB5C72801CF">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5C72801CF" type="_3ADC7B74022D3AA55DF5017C" association="_3ADC7B74022D3CB5C7270200">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3n9hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n9RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5C72F02DE" name="A_second_testIdentityAction" memberEnd="_3ADC7B74022D3CB5C7300343 _3ADC7B74022D3CB5C73003BB">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5C73003BB" type="_3ADC7B74022D3AA55DF5017C" association="_3ADC7B74022D3CB5C72F02DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oABTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n_xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5C6930149" name="A_result_testIdentityAction" memberEnd="_3ADC7B74022D3CB5C6940046 _3ADC7B74022D3CB5C69400BE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5C69400BE" type="_3ADC7B74022D3AA55DF5017C" association="_3ADC7B74022D3CB5C6930149">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oChTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oCRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CFBA0032C" name="A_result_readSelfAction" memberEnd="_3ADC7B74022D395CFBA10125 _3ADC7B74022D395CFBA101CF">
+ <ownedEnd xmi:id="_3ADC7B74022D395CFBA101CF" type="_3ADC7B74022D38C96A5A00A7" association="_3ADC7B74022D395CFBA0032C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oFBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oExTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DC08B80279" name="A_structuralFeatureAction_structuralFeature" memberEnd="_3ADC7B74022D38DC08B8027A _3ADC7B74022D38DC08B8027B">
+ <ownedEnd xmi:id="_3ADC7B74022D38DC08B8027A" type="_3ADC7B74022D38DC060A01A0" association="_3ADC7B74022D38DC08B80279">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBY8RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBY8BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DC073A0161" name="A_object_structuralFeatureAction" memberEnd="_3ADC7B74022D38DC073A03E2 _3ADC7B74022D38DC073B0036">
+ <ownedEnd xmi:id="_3ADC7B74022D38DC073B0036" type="_3ADC7B74022D38DC060A01A0" association="_3ADC7B74022D38DC073A0161">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBZARTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBZABTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CE0B30154" name="A_result_readStructuralFeatureAction" memberEnd="_3ADC7B74022D395CE0B3033E _3ADC7B74022D395CE0B303CB">
+ <ownedEnd xmi:id="_3ADC7B74022D395CE0B303CB" type="_3ADC7B74022D395CE0A502DA" association="_3ADC7B74022D395CE0B30154">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi5RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3907396402D5" name="A_value_writeStructuralFeatureAction" memberEnd="_3ADC7B74022D39073965015A _3ADC7B74022D390739650182">
+ <ownedEnd xmi:id="_3ADC7B74022D390739650182" type="_3ADC7B74022D380F43690262" association="_3ADC7B74022D3907396402D5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi8BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3960D15B0367" name="A_insertAt_addStructuralFeatureValueAction" memberEnd="_3ADC7B74022D3960D15E0004 _3ADC7B74022D3960D15E00F4">
+ <ownedEnd xmi:id="_3ADC7B74022D3960D15E00F4" type="_3ADC7B74022D3A787176007B" association="_3ADC7B74022D3960D15B0367">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi-hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DC049F0298" name="A_endData_linkAction" memberEnd="_3ADC7B74022D38DC04A0013B _3ADC7B74022D38DC04A0014F">
+ <ownedEnd xmi:id="_3ADC7B74022D38DC04A0014F" type="_3ADC7B74022D38DC038F0193" association="_3ADC7B74022D38DC049F0298">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKjBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKjAxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C965AD0164" name="A_value_linkEndData" memberEnd="_3ADC7B74022D38C965AE012A _3ADC7B74022D38C965AE0148">
+ <ownedEnd xmi:id="_3ADC7B74022D38C965AE0148" type="_3ADC7B74022D37497C230140" association="_3ADC7B74022D38C965AD0164">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT5RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D0CD47D0139" name="A_end_linkEndData" memberEnd="_3ADC7B74022D3D0CD47D03BA _3ADC7B74022D3D0CD47E000E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D0CD47E000E" type="_3ADC7B74022D37497C230140" association="_3ADC7B74022D3D0CD47D0139">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT8BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CD521012D" name="A_result_readLinkAction" memberEnd="_3ADC7B74022D395CD52102DB _3ADC7B74022D395CD5210367">
+ <ownedEnd xmi:id="_3ADC7B74022D395CD5210367" type="_3ADC7B74022D395CD503027E" association="_3ADC7B74022D395CD521012D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT-hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3960C173020D" name="A_insertAt_linkEndCreationData" memberEnd="_3ADC7B74022D3960C17401FA _3ADC7B74022D3960C17402CD">
+ <ownedEnd xmi:id="_3ADC7B74022D3960C17402CD" type="_3ADC7B74022D393AD8B602EE" association="_3ADC7B74022D3960C173020D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUUBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUUAxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D393AD8C202F5" name="A_endData_createLinkAction" memberEnd="_3ADC7B74022D393AD8C30256 _3ADC7B74022D393AD8C30260">
+ <ownedEnd xmi:id="_3ADC7B74022D393AD8C30260" type="_3ADC7B74022D3745C9F20140" association="_3ADC7B74022D393AD8C202F5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE5RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3A78829802EF" name="A_object_clearAssociationAction" memberEnd="_3ADC7B74022D3A78829900DD _3ADC7B74022D3A7882990278">
+ <ownedEnd xmi:id="_3ADC7B74022D3A7882990278" type="_3ADC7B74022D3A787BA00221" association="_3ADC7B74022D3A78829802EF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE8BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3A787C74030C" name="A_association_clearAssociationAction" memberEnd="_3ADC7B74022D3A787C7500FB _3ADC7B74022D3A787C75015F">
+ <ownedEnd xmi:id="_3ADC7B74022D3A787C75015F" type="_3ADC7B74022D3A787BA00221" association="_3ADC7B74022D3A787C74030C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxnO0RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxnO0BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D63D6EA030D" name="A_target_sendObjectAction" memberEnd="_3ADC7B74022D3D63D6EC034B _3ADC7B74022D3D63D6EC03D8">
+ <ownedEnd xmi:id="_3ADC7B74022D3D63D6EC03D8" type="_3ADC7B74022D3D63D34B001F" association="_3ADC7B74022D3D63D6EA030D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6K2tYU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6K2tYE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D63D77F0213" name="A_request_sendObjectAction" memberEnd="_3ADC7B74022D3D63D78001E4 _3ADC7B74022D3D63D7800271">
+ <ownedEnd xmi:id="_3ADC7B74022D3D63D7800271" type="_3ADC7B74022D3D63D34B001F" association="_3ADC7B74022D3D63D77F0213">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9kaqMU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9kaqME-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B68A6DE01E8" name="A_signal_broadcastSignalAction" memberEnd="_3ADC7B74022D3B68A6DF00F9 _3ADC7B74022D3B68A6DF012B">
+ <ownedEnd xmi:id="_3ADC7B74022D3B68A6DF012B" type="_3ADC7B74022D3B68A64C002F" association="_3ADC7B74022D3B68A6DE01E8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_3RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B01A029E" name="A_removeAt_removeStructuralFeatureValueAction" memberEnd="_3ADC7B74022D40F9B01C03C3 _3ADC7B74022D40F9B01D0017">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B01D0017" type="_3ADC7B74022D3A7870670003" association="_3ADC7B74022D40F9B01A029E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_6BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_5xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B19902E5" name="A_destroyAt_linkEndDestructionData" memberEnd="_3ADC7B74022D40F9B19B036A _3ADC7B74022D40F9B19B039C">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B19B039C" type="_3ADC7B74022D40F9B109007B" association="_3ADC7B74022D40F9B19902E5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_8hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_8RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B1CF0008" name="A_endData_destroyLinkAction" memberEnd="_3ADC7B74022D40F9B1D1008D _3ADC7B74022D40F9B1D1008F">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B1D1008F" type="_3ADC7B74022D3745CA190280" association="_3ADC7B74022D40F9B1CF0008">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w1hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w1RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B0DA9400E8" name="A_value_valueSpecificationAction" memberEnd="_3ADC7B74022D41B0DA9403C3 _3ADC7B74022D41B0DA95000D">
+ <ownedEnd xmi:id="_3ADC7B74022D41B0DA95000D" type="_3ADC7B74022D40FAD18F0202" association="_3ADC7B74022D41B0DA9400E8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w4BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w3xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40FAD23502E7" name="A_result_valueSpecificationAction" memberEnd="_3ADC7B74022D40FAD236031A _3ADC7B74022D40FAD23603A7">
+ <ownedEnd xmi:id="_3ADC7B74022D40FAD23603A7" type="_3ADC7B74022D40FAD18F0202" association="_3ADC7B74022D40FAD23502E7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w6hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w6RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_TWk18DanEdqq1tCaRkgBQQ" name="A_inputValue_linkAction" memberEnd="_TWk18TanEdqq1tCaRkgBQQ _TWk18janEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_TWk18janEdqq1tCaRkgBQQ" type="_3ADC7B74022D38DC038F0193" association="_TWk18DanEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LKyZQU-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LKyZQE-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D410C264F010C" name="BasicActions">
+ <packageImport xmi:id="_3ADC7B74022D410C26E9038F" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageImport xmi:id="_vL3DMDXVEdqq1tCaRkgBQQ" importedPackage="_3ADC7B74022D3CFC224902BF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40FACF5B017F" name="OpaqueAction">
+ <ownedComment xmi:id="_syXczhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40FACF5B017F">
+ <body>An action with implementation-specific semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D40FAD0F10287" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF6DCF011E" name="body" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_sz2qhRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF6DCF011E">
+ <body>Specifies the action in one or more languages.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sz2qiRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sz2qiBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF6E0300D3" name="language" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_sz2qjRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF6E0300D3">
+ <body>Languages the body strings use, in the same order as the body strings</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sz2qkRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sz2qkBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JYX74TaxEdqq1tCaRkgBQQ" name="inputValue" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_JYX74DaxEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_hrwAMDaxEdqq1tCaRkgBQQ" annotatedElement="_JYX74TaxEdqq1tCaRkgBQQ">
+ <body>Provides input to the action.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JYX75DaxEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JYX74zaxEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_LizMETaxEdqq1tCaRkgBQQ" name="outputValue" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_LizMEDaxEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_jJ7OYDaxEdqq1tCaRkgBQQ" annotatedElement="_LizMETaxEdqq1tCaRkgBQQ">
+ <body>Takes output from the action.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Li89ETaxEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Li89EDaxEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF3DB6F0383" name="Pin" isAbstract="true">
+ <ownedComment xmi:id="_sygmtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3DB6F0383">
+ <body>A pin is a typed element and multiplicity element that provides values to actions and accept result values from them.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410C2D9D0328" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <generalization xmi:id="_0vqmIInsEdq0WtDJCT4EaQ" general="_3ADC7B74022D3CAAFD5202DC"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E53FBAE027A" name="ValuePin">
+ <ownedComment xmi:id="_sygmuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E53FBAE027A">
+ <body>A value pin is an input pin that provides a value by evaluating a value specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sygmwxTaEdqZu-3Jy1-uYg" name="compatible_type" constrainedElement="_3ADC7B74022D3E53FBAE027A">
+ <ownedComment xmi:id="_sygmvxTaEdqZu-3Jy1-uYg" annotatedElement="_sygmwxTaEdqZu-3Jy1-uYg">
+ <body>The type of value specification must be compatible with the type of the value pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sygmxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E53FBC5009C" general="_3ADC7B74022D384B237E021A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E53FE62030B" name="value" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" association="_3ADC7B74022D3E53FE620076">
+ <ownedComment xmi:id="_szs5jhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E53FE62030B">
+ <body>Value that the pin will provide.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5khTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5kRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D384B2387039A" name="OutputPin">
+ <ownedComment xmi:id="_sygmyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D384B2387039A">
+ <body>An output pin is a pin that holds output values produced by an action.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF3DF160285" general="_3ADC7B74022D3DF3DB6F0383"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D384B237E021A" name="InputPin">
+ <ownedComment xmi:id="_syqXtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D384B237E021A">
+ <body>An input pin is a pin that holds input values to be consumed by an action.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF3DF190302" general="_3ADC7B74022D3DF3DB6F0383"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF129D8035B" name="InvocationAction" isAbstract="true">
+ <ownedComment xmi:id="_syqXuRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF129D8035B">
+ <body>InvocationAction is an abstract class for the various actions that invoke behavior.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF409A801B3" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA72E450074" name="argument" type="_3ADC7B74022D384B237E021A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3CA72E44013A">
+ <ownedComment xmi:id="_szjIkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA72E450074">
+ <body>Specification of the ordered set of argument values that appears during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIlRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIlBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF12EC000DA" name="CallAction" isAbstract="true">
+ <ownedComment xmi:id="_syqXvhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF12EC000DA">
+ <body>CallAction is an abstract class for actions that invoke behavior and receive return values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_syqXxxTaEdqZu-3Jy1-uYg" name="synchronous_call" constrainedElement="_3ADC7B74022D3DF12EC000DA">
+ <ownedComment xmi:id="_syqXwxTaEdqZu-3Jy1-uYg" annotatedElement="_syqXxxTaEdqZu-3Jy1-uYg">
+ <body>Only synchronous call actions can have result pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syqXyBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_syqX0BTaEdqZu-3Jy1-uYg" name="number_and_order" constrainedElement="_3ADC7B74022D3DF12EC000DA">
+ <ownedComment xmi:id="_syqXzBTaEdqZu-3Jy1-uYg" annotatedElement="_syqX0BTaEdqZu-3Jy1-uYg">
+ <body>The number and order of argument pins must be the same as the number and order of parameters of the invoked behavior or behavioral feature. Pins are matched to parameters by order.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syqX0RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_syzhphTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3DF12EC000DA">
+ <ownedComment xmi:id="_syzhohTaEdqZu-3Jy1-uYg" annotatedElement="_syzhphTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syzhpxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF12EFA009C" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E54F8A40273" name="isSynchronous">
+ <ownedComment xmi:id="_syzhqxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E54F8A40273">
+ <body>If true, the call is synchronous and the caller waits for completion of the invoked behavior.&#xD;
+If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values.&#xD;
+</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HVsKcBTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA72E0400E8" name="result" type="_3ADC7B74022D384B2387039A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3CA72E030263">
+ <ownedComment xmi:id="_szjIiRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA72E0400E8">
+ <body>A list of output pins where the results of performing the invocation are placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIjRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIjBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B68A63A0228" name="SendSignalAction">
+ <ownedComment xmi:id="_syzhsBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A63A0228">
+ <body>A send signal action is an action that creates a signal instance from its inputs, and transmits it to the target object, where it may cause the firing of a state machine transition or the execution of an activity. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. If the input is already a signal instance, use a send object action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_syzhuRTaEdqZu-3Jy1-uYg" name="number_order" constrainedElement="_3ADC7B74022D3B68A63A0228">
+ <ownedComment xmi:id="_syzhtRTaEdqZu-3Jy1-uYg" annotatedElement="_syzhuRTaEdqZu-3Jy1-uYg">
+ <body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syzhuhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_syzhwhTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3B68A63A0228">
+ <ownedComment xmi:id="_syzhvhTaEdqZu-3Jy1-uYg" annotatedElement="_syzhwhTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syzhwxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B68A6420161" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B68A72101DA" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3B68A72002C9">
+ <ownedComment xmi:id="_szZ-rRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A72101DA">
+ <body>The target object to which the signal is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-sRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-sBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B68A6EF0188" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D3B68A6EE028B">
+ <ownedComment xmi:id="_szZ-txTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A6EF0188">
+ <body>The type of signal transmitted to the target object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIgxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIghTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3AA6D36700D2" name="CallOperationAction">
+ <ownedComment xmi:id="_006MEBV4EdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3AA6D36700D2">
+ <body>A call operation action is an action that transmits an operation call request to the target object, where it may cause the invocation of associated behavior. The argument values of the action are available to the execution of the invoked behavior. If the action is marked synchronous, the execution of the call operation action waits until the execution of the invoked behavior completes and a reply transmission is returned to the caller; otherwise execution of the action is complete when the invocation of the operation is established and the execution of the invoked operation proceeds concurrently with the execution of the calling behavior. Any values returned as part of the reply transmission are put on the result output pins of the call operation action. Upon receipt of the reply transmission, execution of the call operation action is complete.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sy9SpxTaEdqZu-3Jy1-uYg" name="argument_pin_equal_parameter" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_sy9SoxTaEdqZu-3Jy1-uYg" annotatedElement="_sy9SpxTaEdqZu-3Jy1-uYg">
+ <body>The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sy9SqBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sy9SsBTaEdqZu-3Jy1-uYg" name="result_pin_equal_parameter" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_sy9SrBTaEdqZu-3Jy1-uYg" annotatedElement="_sy9SsBTaEdqZu-3Jy1-uYg">
+ <body>The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sy9SsRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szHDoxTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_sy9StRTaEdqZu-3Jy1-uYg" annotatedElement="_szHDoxTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding owned parameter of the operation.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szHDrBTaEdqZu-3Jy1-uYg" name="type_target_pin" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_szHDqBTaEdqZu-3Jy1-uYg" annotatedElement="_szHDrBTaEdqZu-3Jy1-uYg">
+ <body>The type of the target pin must be the same as the type that owns the operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B68A3DF0195" general="_3ADC7B74022D3DF12EC000DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AA6D2B501A4" name="operation" type="_3ADC7B74022D3CAB1D710164" association="_3ADC7B74022D3AA6D2B301EA">
+ <ownedComment xmi:id="_szZ-mRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AA6D2B501A4">
+ <body>The operation to be invoked by the action execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-nRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-nBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AA6D29D008C" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3AA6D29A02D0">
+ <ownedComment xmi:id="_szZ-oxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AA6D29D008C">
+ <body>The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-pxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-phTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5CA3200A1" name="CallBehaviorAction">
+ <ownedComment xmi:id="_szHDsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5CA3200A1">
+ <body>A call behavior action is a call action that invokes a behavior directly rather than invoking a behavioral feature that, in turn, results in the invocation of that behavior. The argument values of the action are available to the execution of the invoked behavior. For synchronous calls the execution of the call behavior action waits until the execution of the invoked behavior completes and a result is returned on its output pin. The action completes immediately without a result, if the call is asynchronous. In particular, the invoked behavior may be an activity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_szHDuhTaEdqZu-3Jy1-uYg" name="argument_pin_equal_parameter" constrainedElement="_3ADC7B74022D3CB5CA3200A1">
+ <ownedComment xmi:id="_szHDthTaEdqZu-3Jy1-uYg" annotatedElement="_szHDuhTaEdqZu-3Jy1-uYg">
+ <body>The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szHDwxTaEdqZu-3Jy1-uYg" name="result_pin_equal_parameter" constrainedElement="_3ADC7B74022D3CB5CA3200A1">
+ <ownedComment xmi:id="_szHDvxTaEdqZu-3Jy1-uYg" annotatedElement="_szHDwxTaEdqZu-3Jy1-uYg">
+ <body>The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szQNkxTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3CB5CA3200A1">
+ <ownedComment xmi:id="_szHDyBTaEdqZu-3Jy1-uYg" annotatedElement="_szQNkxTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding parameter of the behavior.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szQNlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF1300D006D" general="_3ADC7B74022D3DF12EC000DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF13035035B" name="behavior" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3DF130350000">
+ <ownedComment xmi:id="_szQNohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF13035035B">
+ <body>The invoked behavior. It must be capable of accepting and returning control.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-kxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-khTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF3DB6F036B" name="Action" isAbstract="true">
+ <ownedComment xmi:id="_szQNmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3DB6F036B">
+ <body>An action is a named element that is the fundamental unit of executable functionality. The execution of an action represents some transformation or processing in the modeled system, be it a computer system or otherwise.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410C2ECD031D" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D716DC100E9" name="output" type="_3ADC7B74022D384B2387039A" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D716DC100E7">
+ <ownedComment xmi:id="_szjInBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D716DC100E9">
+ <body>The ordered set of output pins connected to the Action. The action places its results onto pins in this set.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIoBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjInxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D716DF5031E" name="input" type="_3ADC7B74022D384B237E021A" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D716DF5031C">
+ <ownedComment xmi:id="_szs5hRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D716DF5031E">
+ <body>The ordered set of input pins connected to the Action. These are among the total set of inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5iRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5iBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF3D8E90137" name="context" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3DF3D8E703BF">
+ <ownedComment xmi:id="_szs5mBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3D8E90137">
+ <body>The classifier that owns the behavior of which this action is a part.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5nBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5mxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_7gKt8ORfEdqI1ohUEQYFdg" name="MultiplicityElement" isAbstract="true">
+ <ownedOperation xmi:id="_JJOkoORgEdqI1ohUEQYFdg" name="compatibleWith" isQuery="true" bodyCondition="_JJOkpuRgEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_JJOkoeRgEdqI1ohUEQYFdg" annotatedElement="_JJOkoORgEdqI1ohUEQYFdg">
+ <body>The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_JJOkpuRgEdqI1ohUEQYFdg" name="spec" constrainedElement="_JJOkoORgEdqI1ohUEQYFdg">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_JJOkp-RgEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_JJOkqORgEdqI1ohUEQYFdg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_JJOkqeRgEdqI1ohUEQYFdg" name="other" type="_7gKt8ORfEdqI1ohUEQYFdg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ds2ZsORgEdqI1ohUEQYFdg" name="is" isQuery="true" bodyCondition="_ds2ZtuRgEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_ds2ZseRgEdqI1ohUEQYFdg" annotatedElement="_ds2ZsORgEdqI1ohUEQYFdg">
+ <body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ds2ZtuRgEdqI1ohUEQYFdg" name="spec" constrainedElement="_ds2ZsORgEdqI1ohUEQYFdg">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ds2Zt-RgEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>result = (lowerbound = self.lowerbound and upperbound = self.upperbound)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ds2ZuORgEdqI1ohUEQYFdg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ds2ZueRgEdqI1ohUEQYFdg" name="lowerbound">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_jgelMORgEdqI1ohUEQYFdg" name="upperbound">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF130350000" name="A_behavior_callBehaviorAction" memberEnd="_3ADC7B74022D3DF13035035B _3ADC7B74022D3DF13035038A">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF13035038A" type="_3ADC7B74022D3CB5CA3200A1" association="_3ADC7B74022D3DF130350000">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-lhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-lRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3AA6D2B301EA" name="A_operation_callOperationAction" memberEnd="_3ADC7B74022D3AA6D2B501A4 _3ADC7B74022D3AA6D2B501D6">
+ <ownedEnd xmi:id="_3ADC7B74022D3AA6D2B501D6" type="_3ADC7B74022D3AA6D36700D2" association="_3ADC7B74022D3AA6D2B301EA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-oBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-nxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3AA6D29A02D0" name="A_target_callOperationAction" memberEnd="_3ADC7B74022D3AA6D29D008C _3ADC7B74022D3AA6D29D0168">
+ <ownedEnd xmi:id="_3ADC7B74022D3AA6D29D0168" type="_3ADC7B74022D3AA6D36700D2" association="_3ADC7B74022D3AA6D29A02D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-qhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-qRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B68A72002C9" name="A_target_sendSignalAction" memberEnd="_3ADC7B74022D3B68A72101DA _3ADC7B74022D3B68A72103B1">
+ <ownedEnd xmi:id="_3ADC7B74022D3B68A72103B1" type="_3ADC7B74022D3B68A63A0228" association="_3ADC7B74022D3B68A72002C9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-tBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-sxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B68A6EE028B" name="A_signal_sendSignalAction" memberEnd="_3ADC7B74022D3B68A6EF0188 _3ADC7B74022D3B68A6EF0305">
+ <ownedEnd xmi:id="_3ADC7B74022D3B68A6EF0305" type="_3ADC7B74022D3B68A63A0228" association="_3ADC7B74022D3B68A6EE028B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIhhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIhRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA72E030263" name="A_result_callAction" memberEnd="_3ADC7B74022D3CA72E0400E8 _3ADC7B74022D3CA72E04016A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA72E04016A" type="_3ADC7B74022D3DF12EC000DA" association="_3ADC7B74022D3CA72E030263">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vEhSIU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vEhSIE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA72E44013A" name="A_argument_invocationAction" memberEnd="_3ADC7B74022D3CA72E450074 _3ADC7B74022D3CA72E4500CE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA72E4500CE" type="_3ADC7B74022D3DF129D8035B" association="_3ADC7B74022D3CA72E44013A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uGPE8U-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uGPE8E-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D716DC100E7" name="A_action_output" memberEnd="_3ADC7B74022D3D716DC100E8 _3ADC7B74022D3D716DC100E9">
+ <ownedEnd xmi:id="_3ADC7B74022D3D716DC100E8" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D3D716DC100E7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjImhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjImRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D716DF5031C" name="A_action_input" memberEnd="_3ADC7B74022D3D716DF5031D _3ADC7B74022D3D716DF5031E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D716DF5031D" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D3D716DF5031C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5gxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5ghTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E53FE620076" name="A_value_valuePin" memberEnd="_3ADC7B74022D3E53FE62030B _3ADC7B74022D3E53FE620347">
+ <ownedEnd xmi:id="_3ADC7B74022D3E53FE620347" type="_3ADC7B74022D3E53FBAE027A" association="_3ADC7B74022D3E53FE620076">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5lRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5lBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF3D8E703BF" name="A_context_action" memberEnd="_3ADC7B74022D3DF3D8E90137 _3ADC7B74022D3DF3D8E90191" isDerived="true">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF3D8E90191" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D3DF3D8E703BF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JRd8oU-2EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JRd8oE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JYX74DaxEdqq1tCaRkgBQQ" name="A_inputValue_opaqueAction" memberEnd="_JYX74TaxEdqq1tCaRkgBQQ _JYX74jaxEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_JYX74jaxEdqq1tCaRkgBQQ" type="_3ADC7B74022D40FACF5B017F" association="_JYX74DaxEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GZIdkU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GZIdkE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LizMEDaxEdqq1tCaRkgBQQ" name="A_outputValue_opaqueAction" memberEnd="_LizMETaxEdqq1tCaRkgBQQ _LizMEjaxEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_LizMEjaxEdqq1tCaRkgBQQ" type="_3ADC7B74022D40FACF5B017F" association="_LizMEDaxEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HLDpwU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HLDpwE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D410C265D0152" name="StructuredActions">
+ <packageImport xmi:id="_3ADC7B74022D410C27100268" importedPackage="_3ADC7B74022D3DF1253C0119"/>
+ <packageImport xmi:id="_3ADC7B74022D4162B94B02EE" importedPackage="_3ADC7B74022D410C264F010C"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D390789630084" name="VariableAction" isAbstract="true">
+ <ownedComment xmi:id="_s0JldBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D390789630084">
+ <body>VariableAction is an abstract class for actions that operate on a statically specified variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0JlfRTaEdqZu-3Jy1-uYg" name="scope_of_variable" constrainedElement="_3ADC7B74022D390789630084">
+ <ownedComment xmi:id="_s0JleRTaEdqZu-3Jy1-uYg" annotatedElement="_s0JlfRTaEdqZu-3Jy1-uYg">
+ <body>The action must be in the scope of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0JlfhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.variable.isAccessibleBy(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40ACA0105" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39078A3902B2" name="variable" type="_3ADC7B74022D380F459F0348" association="_3ADC7B74022D39078A380397">
+ <ownedComment xmi:id="_s0wCYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39078A3902B2">
+ <body>Variable to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCZRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38CD2ACC0175" name="ReadVariableAction">
+ <ownedComment xmi:id="_s0JlghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38CD2ACC0175">
+ <body>A read variable action is a variable action that retrieves the values of a variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0JlixTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D38CD2ACC0175">
+ <ownedComment xmi:id="_s0JlhxTaEdqZu-3Jy1-uYg" annotatedElement="_s0JlixTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of the result output pin of a read-variable action are the same as the type and ordering of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0JljBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type =self.variable.type&#xA;and self.result.ordering = self.variable.ordering&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0TWdhTaEdqZu-3Jy1-uYg" name="compatible_multiplicity" constrainedElement="_3ADC7B74022D38CD2ACC0175">
+ <ownedComment xmi:id="_s0TWchTaEdqZu-3Jy1-uYg" annotatedElement="_s0TWdhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the variable must be compatible with the multiplicity of the output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0TWdxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.variable.multiplicity.compatibleWith(self.result.multiplicity)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D393FC4840288" general="_3ADC7B74022D390789630084"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D393FC4C100AF" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D393FC4C00220">
+ <ownedComment xmi:id="_s0wCbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D393FC4C100AF">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCbxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D39078A99029C" name="WriteVariableAction" isAbstract="true">
+ <ownedComment xmi:id="_s0TWexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39078A99029C">
+ <body>WriteVariableAction is an abstract class for variable actions that change variable values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0TWhBTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D39078A99029C">
+ <ownedComment xmi:id="_s0TWgBTaEdqZu-3Jy1-uYg" annotatedElement="_s0TWhBTaEdqZu-3Jy1-uYg">
+ <body>The type input pin is the same as the type of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0TWhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.variable.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0TWjRTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D39078A99029C">
+ <ownedComment xmi:id="_s0TWiRTaEdqZu-3Jy1-uYg" annotatedElement="_s0TWjRTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0TWjhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D39078AA5028F" general="_3ADC7B74022D390789630084"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39078AE90392" name="value" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D39078AE90125">
+ <ownedComment xmi:id="_s0wCdhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39078AE90392">
+ <body>Value to be added or removed from the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCehTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCeRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A788A590162" name="ClearVariableAction">
+ <ownedComment xmi:id="_s0TWkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A788A590162">
+ <body>A clear variable action is a variable action that removes all values of a variable.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3A788A6202A6" general="_3ADC7B74022D390789630084"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787D1701D0" name="AddVariableValueAction">
+ <ownedComment xmi:id="_s0cgYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787D1701D0">
+ <body>An add variable value action is a write variable action for adding values to a variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0cgaRTaEdqZu-3Jy1-uYg" name="single_input_pin" constrainedElement="_3ADC7B74022D3A787D1701D0">
+ <ownedComment xmi:id="_s0cgZRTaEdqZu-3Jy1-uYg" annotatedElement="_s0cgaRTaEdqZu-3Jy1-uYg">
+ <body>Actions adding values to ordered variables must have a single input pin for the insertion point with type UnlimtedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0cgahTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let insertAtPins : Collection = self.insertAt in&#xA;if self.variable.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A787D400215" general="_3ADC7B74022D39078A99029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A79B05202CE" name="isReplaceAll">
+ <ownedComment xmi:id="_s0cgbhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A79B05202CE">
+ <body>Specifies whether existing values of the variable should be removed before adding the new value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HWSnYBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39610D32030A" name="insertAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D39610D2F020B">
+ <ownedComment xmi:id="_s0wCgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39610D32030A">
+ <body>Gives the position at which to insert a new value or move an existing value in ordered variables. The types is UnlimitedINatural, but the value cannot be zero. This pin is omitted for unordered variables.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wChBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCgxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787D21010C" name="RemoveVariableValueAction">
+ <ownedComment xmi:id="_s0cgcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787D21010C">
+ <body>A remove variable value action is a write variable action that removes values from variables.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0cgfBTaEdqZu-3Jy1-uYg" name="unlimited_natural" constrainedElement="_3ADC7B74022D3A787D21010C">
+ <ownedComment xmi:id="_s0cgeBTaEdqZu-3Jy1-uYg" annotatedElement="_s0cgfBTaEdqZu-3Jy1-uYg">
+ <body>Actions removing a value from ordered nonunique variables must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type UnlimitedNatural with multiplicity of 1..1, otherwise the action has no removeAt input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0cgfRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A787D4201A0" general="_3ADC7B74022D39078A99029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B28100A4" name="isRemoveDuplicates">
+ <ownedComment xmi:id="_s0cggRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B28100A4">
+ <body>Specifies whether to remove duplicates of the value in nonunique variables.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HWbxUBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B2C503CD" name="removeAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D40F9B2C300A9">
+ <ownedComment xmi:id="_s1MHQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B2C503CD">
+ <body>Specifies the position of an existing value to remove in ordered nonunique variables. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHRhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHRRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFE66FD035B" name="RaiseExceptionAction">
+ <ownedComment xmi:id="_s0mRZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFE66FD035B">
+ <body>A raise exception action is an action that causes an exception to occur. The input value becomes the exception object.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DFE6728004E" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41321452000E" name="exception" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D413214500304">
+ <ownedComment xmi:id="_s1MHVhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41321452000E">
+ <body>An input pin whose value becomes an exception object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHWhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHWRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D4131228300D2" name="ActionInputPin">
+ <ownedComment xmi:id="_s0mRaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4131228300D2">
+ <body>An action input pin is a kind of pin that executes an action to determine the values to input to another.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0mRchTaEdqZu-3Jy1-uYg" name="one_output_pin" constrainedElement="_3ADC7B74022D4131228300D2">
+ <ownedComment xmi:id="_s0mRbhTaEdqZu-3Jy1-uYg" annotatedElement="_s0mRchTaEdqZu-3Jy1-uYg">
+ <body>The fromAction of an action input pin must have exactly one output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0mRcxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0mRexTaEdqZu-3Jy1-uYg" name="input_pin" constrainedElement="_3ADC7B74022D4131228300D2">
+ <ownedComment xmi:id="_s0mRdxTaEdqZu-3Jy1-uYg" annotatedElement="_s0mRexTaEdqZu-3Jy1-uYg">
+ <body>The fromAction of an action input pin must only have action input pins as input pins.</body>
+