Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml14306
1 files changed, 14306 insertions, 0 deletions
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>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0mRfBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0mRhBTaEdqZu-3Jy1-uYg" name="no_control_or_data_flow" constrainedElement="_3ADC7B74022D4131228300D2">
+ <ownedComment xmi:id="_s0mRgBTaEdqZu-3Jy1-uYg" annotatedElement="_s0mRhBTaEdqZu-3Jy1-uYg">
+ <body>The fromAction of an action input pin cannot have control or data flows coming into or out of it or its pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0mRhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D413122AB0080" general="_3ADC7B74022D384B237E021A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D413122C200AB" name="fromAction" type="_3ADC7B74022D3DF3DB6F036B" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D413122C00351">
+ <ownedComment xmi:id="_s1MHTBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D413122C200AB">
+ <body>The action used to provide values.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHUBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHTxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39078A380397" name="A_variable_variableAction" memberEnd="_3ADC7B74022D39078A3902B2 _3ADC7B74022D39078A3902DA">
+ <ownedEnd xmi:id="_3ADC7B74022D39078A3902DA" type="_3ADC7B74022D390789630084" association="_3ADC7B74022D39078A380397">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCaRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCaBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D393FC4C00220" name="A_result_readVariableAction" memberEnd="_3ADC7B74022D393FC4C100AF _3ADC7B74022D393FC4C10109">
+ <ownedEnd xmi:id="_3ADC7B74022D393FC4C10109" type="_3ADC7B74022D38CD2ACC0175" association="_3ADC7B74022D393FC4C00220">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCcxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCchTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39078AE90125" name="A_value_writeVariableAction" memberEnd="_3ADC7B74022D39078AE90392 _3ADC7B74022D39078AEA000E">
+ <ownedEnd xmi:id="_3ADC7B74022D39078AEA000E" type="_3ADC7B74022D39078A99029C" association="_3ADC7B74022D39078AE90125">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCfRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCfBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39610D2F020B" name="A_insertAt_addVariableValueAction" memberEnd="_3ADC7B74022D39610D32030A _3ADC7B74022D39610D3203E6">
+ <ownedEnd xmi:id="_3ADC7B74022D39610D3203E6" type="_3ADC7B74022D3A787D1701D0" association="_3ADC7B74022D39610D2F020B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wChxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wChhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B2C300A9" name="A_removeAt_removeVariableValueAction" memberEnd="_3ADC7B74022D40F9B2C503CD _3ADC7B74022D40F9B2C60017">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B2C60017" type="_3ADC7B74022D3A787D21010C" association="_3ADC7B74022D40F9B2C300A9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHSRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHSBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D413122C00351" name="A_fromAction_actionInputPin" memberEnd="_3ADC7B74022D413122C200AB _3ADC7B74022D413122C200C9">
+ <ownedEnd xmi:id="_3ADC7B74022D413122C200C9" type="_3ADC7B74022D4131228300D2" association="_3ADC7B74022D413122C00351">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHUxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHUhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D413214500304" name="A_exception_raiseExceptionAction" memberEnd="_3ADC7B74022D41321452000E _3ADC7B74022D413214520022">
+ <ownedEnd xmi:id="_3ADC7B74022D413214520022" type="_3ADC7B74022D3DFE66FD035B" association="_3ADC7B74022D413214500304">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1V4QRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1V4QBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF124BC006D" name="Activities">
+ <packageImport xmi:id="_AvC0cD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D1281210157"/>
+ <packageImport xmi:id="_eMo64D9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D5530D00105"/>
+ <packageImport xmi:id="_gBKMgD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3ADCA16503D6"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF124E700CB" name="BasicActivities">
+ <packageMerge xmi:id="_GwSXUBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D410D001C03C2"/>
+ <packageMerge xmi:id="_GwSXURTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D337D8F5A01EA" name="ObjectNode" isAbstract="true">
+ <ownedComment xmi:id="_r3WmABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D337D8F5A01EA">
+ <body>An object node is an abstract activity node that is part of defining object flow in an activity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r3WmChTaEdqZu-3Jy1-uYg" name="object_flow_edges" constrainedElement="_3ADC7B74022D337D8F5A01EA">
+ <ownedComment xmi:id="_r3WmBhTaEdqZu-3Jy1-uYg" annotatedElement="_r3WmChTaEdqZu-3Jy1-uYg">
+ <body>All edges coming into or going out of object nodes must be object flow edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3WmCxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r3WmExTaEdqZu-3Jy1-uYg" name="not_unique" constrainedElement="_3ADC7B74022D337D8F5A01EA">
+ <ownedComment xmi:id="_r3WmDxTaEdqZu-3Jy1-uYg" annotatedElement="_r3WmExTaEdqZu-3Jy1-uYg">
+ <body>Object nodes are not unique typed elements</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3WmFBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isUnique = false</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72D64F02B1" general="_3ADC7B74022D3B72D4BE035F"/>
+ <generalization xmi:id="_3ADC7B74022D3E53FFF000C9" general="_3ADC7B74022D3CAAFD3A006B"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72D6550115" name="ControlNode" isAbstract="true">
+ <ownedComment xmi:id="_r3WmGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72D6550115">
+ <body>A control node is an abstract activity node that coordinates flows in an activity.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B72D65B0038" general="_3ADC7B74022D3B72D4BE035F"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72DA3E0332" name="ActivityEdge" isAbstract="true">
+ <ownedComment xmi:id="_r3WmHRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DA3E0332">
+ <body>An activity edge is an abstract class for directed connections between two activity nodes.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r3gXCBTaEdqZu-3Jy1-uYg" name="source_and_target" constrainedElement="_3ADC7B74022D3B72DA3E0332">
+ <ownedComment xmi:id="_r3gXBBTaEdqZu-3Jy1-uYg" annotatedElement="_r3gXCBTaEdqZu-3Jy1-uYg">
+ <body>The source and target of an edge must be in the same activity as the edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3gXCRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r3gXERTaEdqZu-3Jy1-uYg" name="owned" constrainedElement="_3ADC7B74022D3B72DA3E0332">
+ <ownedComment xmi:id="_r3gXDRTaEdqZu-3Jy1-uYg" annotatedElement="_r3gXERTaEdqZu-3Jy1-uYg">
+ <body>Activity edges may be owned only by activities or groups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3gXEhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF410030004" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF283D70204" name="activity" type="_3ADC7B74022D410D113D0024" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3DF283D70203">
+ <ownedComment xmi:id="_r4ZH0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF283D70204">
+ <body>Activity containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4ZH1xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4ZH1hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B72DD7901AA" name="source" type="_3ADC7B74022D3B72D4BE035F" association="_3ADC7B74022D3B72DD780389">
+ <ownedComment xmi:id="_r4ZH5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DD7901AA">
+ <body>Node from which tokens are taken when they traverse the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4ZH6hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4ZH6RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B72DDB302E4" name="target" type="_3ADC7B74022D3B72D4BE035F" association="_3ADC7B74022D3B72DDB3006D">
+ <ownedComment xmi:id="_r4i40BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DDB302E4">
+ <body>Node to which tokens are put when they traverse the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4i41BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4i40xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C7C242F00F0" name="inGroup" type="_3ADC7B74022D3C7C22F8028E" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3C7C242E0289">
+ <ownedComment xmi:id="_r4i44xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C7C242F00F0">
+ <body>Groups containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4i45xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4i45hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E5403C20101" name="redefinedEdge" type="_3ADC7B74022D3B72DA3E0332" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3E5403C001BD">
+ <ownedComment xmi:id="_r4sp4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5403C20101">
+ <body>Inherited edges replaced by this edge in a specialization of the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4sp5hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4sp5RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72DAD10347" name="ControlFlow">
+ <ownedComment xmi:id="_r3gXFhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DAD10347">
+ <body>A control flow is an edge that starts an activity node after the previous one is finished.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r3gXHxTaEdqZu-3Jy1-uYg" name="object_nodes" constrainedElement="_3ADC7B74022D3B72DAD10347">
+ <ownedComment xmi:id="_r3gXGxTaEdqZu-3Jy1-uYg" annotatedElement="_r3gXHxTaEdqZu-3Jy1-uYg">
+ <body>Control flows may not have object nodes at either end, except for object nodes with control type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3gXIBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72DAD70273" general="_3ADC7B74022D3B72DA3E0332"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72DADB0283" name="ObjectFlow">
+ <ownedComment xmi:id="_r3gXJBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DADB0283">
+ <body>An object flow is an activity edge that can have objects or data passing along it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r3pg-BTaEdqZu-3Jy1-uYg" name="no_actions" constrainedElement="_3ADC7B74022D3B72DADB0283">
+ <ownedComment xmi:id="_r3pg9BTaEdqZu-3Jy1-uYg" annotatedElement="_r3pg-BTaEdqZu-3Jy1-uYg">
+ <body>Object flows may not have actions at either end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3pg-RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r3phARTaEdqZu-3Jy1-uYg" name="compatible_types" constrainedElement="_3ADC7B74022D3B72DADB0283">
+ <ownedComment xmi:id="_r3pg_RTaEdqZu-3Jy1-uYg" annotatedElement="_r3phARTaEdqZu-3Jy1-uYg">
+ <body>Object nodes connected by an object flow, with optionally intervening control nodes, must have compatible types. In particular, the downstream object node type must be the same or a supertype of the upstream object node type.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3phAhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r3phChTaEdqZu-3Jy1-uYg" name="same_upper_bounds" constrainedElement="_3ADC7B74022D3B72DADB0283">
+ <ownedComment xmi:id="_r3phBhTaEdqZu-3Jy1-uYg" annotatedElement="_r3phChTaEdqZu-3Jy1-uYg">
+ <body>Object nodes connected by an object flow, with optionally intervening control nodes, must have the same upper bounds.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3phCxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72DAF1027B" general="_3ADC7B74022D3B72DA3E0332"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E4E701A5" name="InitialNode">
+ <ownedComment xmi:id="_r3phDxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E4E701A5">
+ <body>An initial node is a control node at which flow starts when the activity is invoked.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r3zR8hTaEdqZu-3Jy1-uYg" name="no_incoming_edges" constrainedElement="_3ADC7B74022D3B72E4E701A5">
+ <ownedComment xmi:id="_r3phFBTaEdqZu-3Jy1-uYg" annotatedElement="_r3zR8hTaEdqZu-3Jy1-uYg">
+ <body>An initial node has no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3zR8xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r3zR-xTaEdqZu-3Jy1-uYg" name="control_edges" constrainedElement="_3ADC7B74022D3B72E4E701A5">
+ <ownedComment xmi:id="_r3zR9xTaEdqZu-3Jy1-uYg" annotatedElement="_r3zR-xTaEdqZu-3Jy1-uYg">
+ <body>Only control edges can have initial nodes as source.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3zR_BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72E55601FF" general="_3ADC7B74022D3B72D6550115"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E57003A1" name="ActivityFinalNode">
+ <ownedComment xmi:id="_r3zSABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E57003A1">
+ <body>An activity final node is a final node that stops all flows in an activity.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D10C20063" general="_3ADC7B74022D3B72D6550115"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C7C22F8028E" name="ActivityGroup" isAbstract="true">
+ <ownedRule xmi:id="_r3zSDRTaEdqZu-3Jy1-uYg" name="nodes_and_edges" constrainedElement="_3ADC7B74022D3C7C22F8028E">
+ <ownedComment xmi:id="_r3zSCRTaEdqZu-3Jy1-uYg" annotatedElement="_r3zSDRTaEdqZu-3Jy1-uYg">
+ <body>All nodes and edges of the group must be in the same activity as the group.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r3zSDhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r38b4xTaEdqZu-3Jy1-uYg" name="not_contained" constrainedElement="_3ADC7B74022D3C7C22F8028E">
+ <ownedComment xmi:id="_r3zSEhTaEdqZu-3Jy1-uYg" annotatedElement="_r38b4xTaEdqZu-3Jy1-uYg">
+ <body>No node or edge in a group may be contained by its subgroups or its containing groups, transitively.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r38b5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r38b7BTaEdqZu-3Jy1-uYg" name="group_owned" constrainedElement="_3ADC7B74022D3C7C22F8028E">
+ <ownedComment xmi:id="_r38b6BTaEdqZu-3Jy1-uYg" annotatedElement="_r38b7BTaEdqZu-3Jy1-uYg">
+ <body>Groups may only be owned by activities or groups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r38b7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C7C242F001E" name="containedEdge" type="_3ADC7B74022D3B72DA3E0332" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3C7C242E0289">
+ <ownedComment xmi:id="_r4i43RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C7C242F001E">
+ <body>Edges immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4i44RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4i44BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF4B90C0266" name="ActivityParameterNode">
+ <ownedComment xmi:id="_r38b8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF4B90C0266">
+ <body>An activity parameter node is an object node for inputs and outputs to activities.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r38b-hTaEdqZu-3Jy1-uYg" name="has_parameters" constrainedElement="_3ADC7B74022D3DF4B90C0266">
+ <ownedComment xmi:id="_r38b9hTaEdqZu-3Jy1-uYg" annotatedElement="_r38b-hTaEdqZu-3Jy1-uYg">
+ <body>Activity parameter nodes must have parameters from the containing activity.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r38b-xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r38cAxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D3DF4B90C0266">
+ <ownedComment xmi:id="_r38b_xTaEdqZu-3Jy1-uYg" annotatedElement="_r38cAxTaEdqZu-3Jy1-uYg">
+ <body>The type of an activity parameter node is the same as the type of its parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r38cBBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r4GM4xTaEdqZu-3Jy1-uYg" name="no_edges" constrainedElement="_3ADC7B74022D3DF4B90C0266">
+ <ownedComment xmi:id="_r38cCBTaEdqZu-3Jy1-uYg" annotatedElement="_r4GM4xTaEdqZu-3Jy1-uYg">
+ <body>An activity parameter node may have all incoming edges or all outgoing edges, but it must not have both incoming and outgoing edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4GM5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r4GM7BTaEdqZu-3Jy1-uYg" name="no_incoming_edges" constrainedElement="_3ADC7B74022D3DF4B90C0266">
+ <ownedComment xmi:id="_r4GM6BTaEdqZu-3Jy1-uYg" annotatedElement="_r4GM7BTaEdqZu-3Jy1-uYg">
+ <body>Activity parameter object nodes with no incoming edges and one or more outgoing edges must have a parameter with in or inout direction.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4GM7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r4GM9RTaEdqZu-3Jy1-uYg" name="no_outgoing_edges" constrainedElement="_3ADC7B74022D3DF4B90C0266">
+ <ownedComment xmi:id="_r4GM8RTaEdqZu-3Jy1-uYg" annotatedElement="_r4GM9RTaEdqZu-3Jy1-uYg">
+ <body>Activity parameter object nodes with no outgoing edges and one or more incoming edges must have a parameter with out, inout, or return direction.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4GM9hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DFA7016009C" general="_3ADC7B74022D337D8F5A01EA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFE6D850128" name="parameter" type="_3ADC7B74022D3CAB0B3D0362" association="_3ADC7B74022D3DFE6D8401F4">
+ <ownedComment xmi:id="_r4sp0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFE6D850128">
+ <body>The parameter the object node will be accepting or providing values for.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4sp1hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4sp1RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72D4BE035F" name="ActivityNode" isAbstract="true">
+ <ownedRule xmi:id="_r4GNAxTaEdqZu-3Jy1-uYg" name="owned" constrainedElement="_3ADC7B74022D3B72D4BE035F">
+ <ownedComment xmi:id="_r4GM_xTaEdqZu-3Jy1-uYg" annotatedElement="_r4GNAxTaEdqZu-3Jy1-uYg">
+ <body>Activity nodes can only be owned by activities or groups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4GNBBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF282DE005D" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B72DD7901A0" name="outgoing" type="_3ADC7B74022D3B72DA3E0332" association="_3ADC7B74022D3B72DD780389">
+ <ownedComment xmi:id="_r4ZH4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DD7901A0">
+ <body>Edges that have the node as source.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4ZH5BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4ZH4xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B72DDB302F8" name="incoming" type="_3ADC7B74022D3B72DA3E0332" association="_3ADC7B74022D3B72DDB3006D">
+ <ownedComment xmi:id="_r4i41hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DDB302F8">
+ <body>Edges that have the node as target.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4i42hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4i42RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E54030E015C" name="redefinedNode" type="_3ADC7B74022D3B72D4BE035F" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3E54030B0126">
+ <ownedComment xmi:id="_r4sp2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E54030E015C">
+ <body>Inherited nodes replaced by this node in a specialization of the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4sp3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4sp3RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D0CAF00F0" name="Pin">
+ <ownedComment xmi:id="_r4P94RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D0CAF00F0">
+ <body>A pin is an object node for inputs and outputs to actions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D0CE20175" general="_3ADC7B74022D337D8F5A01EA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D113D0024" name="Activity">
+ <ownedRule xmi:id="_r4P97xTaEdqZu-3Jy1-uYg" name="activity_parameter_node" constrainedElement="_3ADC7B74022D410D113D0024">
+ <ownedComment xmi:id="_r4P96xTaEdqZu-3Jy1-uYg" annotatedElement="_r4P97xTaEdqZu-3Jy1-uYg">
+ <body>The nodes of the activity must include one ActivityParameterNode for each parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4P98BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r4P9-BTaEdqZu-3Jy1-uYg" name="autonomous" constrainedElement="_3ADC7B74022D410D113D0024">
+ <ownedComment xmi:id="_r4P99BTaEdqZu-3Jy1-uYg" annotatedElement="_r4P9-BTaEdqZu-3Jy1-uYg">
+ <body>An activity cannot be autonomous and have a classifier or behavioral feature context at the same time.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4P9-RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B0DC5202C0" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D19B001AB" name="isReadOnly">
+ <ownedComment xmi:id="_r4P9_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D19B001AB">
+ <body>If true, this activity must not make any changes to variables outside the activity or to objects. (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the action, then the model is ill-formed.) The default is false (an activity may make nonlocal changes).</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GxB-MBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF283D70205" name="edge" type="_3ADC7B74022D3B72DA3E0332" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DF283D70203">
+ <ownedComment xmi:id="_r4ZH2RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF283D70205">
+ <body>Edges expressing flow between nodes of the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r4ZH3RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r4ZH3BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Q4gHkOTbEdqI1ohUEQYFdg" name="ValuePin">
+ <ownedRule xmi:id="_Q4gHkeTbEdqI1ohUEQYFdg" name="no_incoming_edges" constrainedElement="_Q4gHkOTbEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_Q4gHkuTbEdqI1ohUEQYFdg" annotatedElement="_Q4gHkeTbEdqI1ohUEQYFdg">
+ <body>Value pins have no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Q4gHleTbEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF283D70203" name="A_activity_edge" memberEnd="_3ADC7B74022D3DF283D70204 _3ADC7B74022D3DF283D70205"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B72DD780389" name="A_outgoing_source" memberEnd="_3ADC7B74022D3B72DD7901A0 _3ADC7B74022D3B72DD7901AA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B72DDB3006D" name="A_target_incoming" memberEnd="_3ADC7B74022D3B72DDB302E4 _3ADC7B74022D3B72DDB302F8"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C7C242E0289" name="A_containedEdge_inGroup" memberEnd="_3ADC7B74022D3C7C242F001E _3ADC7B74022D3C7C242F00F0" isDerived="true"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFE6D8401F4" name="A_parameter_activityParameterNode" memberEnd="_3ADC7B74022D3DFE6D850128 _3ADC7B74022D3DFE6D850148">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFE6D850148" type="_3ADC7B74022D3DF4B90C0266" association="_3ADC7B74022D3DFE6D8401F4">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7YZzsU-4EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7YZzsE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E54030B0126" name="A_redefinedNode_activityNode" memberEnd="_3ADC7B74022D3E54030E015C _3ADC7B74022D3E54030E017B">
+ <ownedEnd xmi:id="_3ADC7B74022D3E54030E017B" type="_3ADC7B74022D3B72D4BE035F" association="_3ADC7B74022D3E54030B0126">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ud9XUUfcEdq0rbStTpEubg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ud9XUEfcEdq0rbStTpEubg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E5403C001BD" name="A_redefinedEdge_activityEdge" memberEnd="_3ADC7B74022D3E5403C20101 _3ADC7B74022D3E5403C20115">
+ <ownedEnd xmi:id="_3ADC7B74022D3E5403C20115" type="_3ADC7B74022D3B72DA3E0332" association="_3ADC7B74022D3E5403C001BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Fv_jIUfMEdq0rbStTpEubg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fv_jIEfMEdq0rbStTpEubg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF124FB03B9" name="IntermediateActivities">
+ <packageImport xmi:id="_ansfYD9IEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D335C122001A4"/>
+ <packageImport xmi:id="_bYkisD9IEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_GxeqIBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF124E700CB"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E53A00D2" name="ForkNode">
+ <ownedComment xmi:id="_r41zzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E53A00D2">
+ <body>A fork node is a control node that splits a flow into multiple concurrent flows.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r4_kyBTaEdqZu-3Jy1-uYg" name="one_incoming_edge" constrainedElement="_3ADC7B74022D3B72E53A00D2">
+ <ownedComment xmi:id="_r4_kxBTaEdqZu-3Jy1-uYg" annotatedElement="_r4_kyBTaEdqZu-3Jy1-uYg">
+ <body>A fork node has one incoming edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4_kyRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r4_k0RTaEdqZu-3Jy1-uYg" name="edges" constrainedElement="_3ADC7B74022D3B72E53A00D2">
+ <ownedComment xmi:id="_r4_kzRTaEdqZu-3Jy1-uYg" annotatedElement="_r4_k0RTaEdqZu-3Jy1-uYg">
+ <body>The edges coming into and out of a fork node must be either all object flows or all control flows.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r4_k0hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72E55F0194" general="_3ADC7B74022D3B72D6550115"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E58C010C" name="FlowFinalNode">
+ <ownedComment xmi:id="_r4_k1hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E58C010C">
+ <body>A flow final node is a final node that terminates a flow.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B72E5950187" general="_3ADC7B74022D3B72E4EE0123"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC5840B02B0" name="CentralBufferNode">
+ <ownedComment xmi:id="_r4_k2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC5840B02B0">
+ <body>A central buffer node is an object node for managing flows from multiple sources and destinations.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CC5840B02AD" general="_3ADC7B74022D337D8F5A01EA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D337DA4DE0212" name="ActivityPartition">
+ <ownedComment xmi:id="_r4_k4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D337DA4DE0212">
+ <body>An activity partition is a kind of activity group for identifying actions that have some characteristic in common.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r5JVyRTaEdqZu-3Jy1-uYg" name="dimension_not_contained" constrainedElement="_3ADC7B74022D337DA4DE0212">
+ <ownedComment xmi:id="_r5JVxRTaEdqZu-3Jy1-uYg" annotatedElement="_r5JVyRTaEdqZu-3Jy1-uYg">
+ <body>A partition with isDimension = true may not be contained by another partition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5JVyhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r5JV2xTaEdqZu-3Jy1-uYg" name="represents_part" constrainedElement="_3ADC7B74022D337DA4DE0212">
+ <ownedComment xmi:id="_r5JV1xTaEdqZu-3Jy1-uYg" annotatedElement="_r5JV2xTaEdqZu-3Jy1-uYg">
+ <body>If a partition represents a part, then all the non-external partitions in the same dimension and at the same level of nesting in that dimension must represent parts directly contained in the internal structure of the same classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5JV3BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r5SfsxTaEdqZu-3Jy1-uYg" name="represents_classifier" constrainedElement="_3ADC7B74022D337DA4DE0212">
+ <ownedComment xmi:id="_r5JV4BTaEdqZu-3Jy1-uYg" annotatedElement="_r5SfsxTaEdqZu-3Jy1-uYg">
+ <body>If a non-external partition represents a classifier and is contained in another partition, then the containing partition must represent a classifier, and the classifier of the subpartition must be nested in the classifier represented by the containing partition, or be at the contained end of a strong composition association with the classifier represented by the containing partition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5SftBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r5SfuxTaEdqZu-3Jy1-uYg" name="represents_part_and_is_contained" constrainedElement="_3ADC7B74022D337DA4DE0212">
+ <ownedComment xmi:id="_r5SfuBTaEdqZu-3Jy1-uYg" annotatedElement="_r5SfuxTaEdqZu-3Jy1-uYg">
+ <body>If a partition represents a part and is contained by another partition, then the part must be of a classifier represented by the containing partition, or of a classifier that is the type of a part representing the containing partition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5SfvBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3611D6A701B8" general="_3ADC7B74022D3CAAECB901B0"/>
+ <generalization xmi:id="_3ADC7B74022D3C7C256303C4" general="_3ADC7B74022D41B9C8DC02E1"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C7695190325" name="isDimension">
+ <ownedComment xmi:id="_r5SfwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C7695190325">
+ <body>Tells whether the partition groups other partitions along a dimension.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GxeqIRTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C7E9DDB02FB" name="isExternal">
+ <ownedComment xmi:id="_r5SfxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C7E9DDB02FB">
+ <body>Tells whether the partition represents an entity to which the partitioning structure does not apply.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GxeqIhTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF293A1033D" name="edge" type="_3ADC7B74022D3E82C7D200BE" subsettedProperty="_3ADC7B74022D41B9A2B2031F" association="_3ADC7B74022D3DF293A1033C">
+ <ownedComment xmi:id="_r5vLtxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF293A1033D">
+ <body>Edges immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FqxB4UftEdq0rbStTpEubg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FqxB4EftEdq0rbStTpEubg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CF19E6A02FE" name="node" type="_3ADC7B74022D3E82C8060069" subsettedProperty="_3ADC7B74022D41B9A15A02F4" association="_3ADC7B74022D3CF19E6A02FC">
+ <ownedComment xmi:id="_r548rBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CF19E6A02FE">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bE3d4UfrEdq0rbStTpEubg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bE3d4EfrEdq0rbStTpEubg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CF19D840126" name="subpartition" type="_3ADC7B74022D337DA4DE0212" aggregation="composite" subsettedProperty="_3ADC7B74022D410D0A3403E6" association="_3ADC7B74022D3CF19D840125">
+ <ownedComment xmi:id="_r548sRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CF19D840126">
+ <body>Partitions immediately contained in the partition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r548tRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r548tBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CF19D840127" name="superPartition" type="_3ADC7B74022D337DA4DE0212" subsettedProperty="_3ADC7B74022D410D0A350008" association="_3ADC7B74022D3CF19D840125">
+ <ownedComment xmi:id="_r548txTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CF19D840127">
+ <body>Partition immediately containing the partition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6CGkRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6CGkBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B72E8BE01EF" name="represents" type="_3ADC7B74022D3CAAEC0D0176" association="_3ADC7B74022D3B72E8BE0068">
+ <ownedComment xmi:id="_r6CGlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E8BE01EF">
+ <body>An element constraining behaviors invoked by nodes in the partition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6CGmBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6CGlxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E82C7D200BE" name="ActivityEdge" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41B08949004D" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF293A1033E" name="inPartition" type="_3ADC7B74022D337DA4DE0212" subsettedProperty="_3ADC7B74022D41B9A2B20315" association="_3ADC7B74022D3DF293A1033C">
+ <ownedComment xmi:id="_r5vLuxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF293A1033E">
+ <body>Partitions containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r548oxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r548ohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D142C0274" name="guard" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410D142C0269">
+ <ownedComment xmi:id="_r6CGnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D142C0274">
+ <body>Specification evaluated at runtime to determine if the edge can be traversed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6CGoxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6CGohTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9A2B20315" name="inGroup" type="_3ADC7B74022D41B9C8DC02E1" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41B9A2B20198">
+ <ownedComment xmi:id="_r6L3qBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9A2B20315">
+ <body>Groups containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6VBghTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6VBgRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E82C8060069" name="ActivityNode" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41B089BE0330" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CF19E6A02FD" name="inPartition" type="_3ADC7B74022D337DA4DE0212" subsettedProperty="_3ADC7B74022D41B9A15A02F2" association="_3ADC7B74022D3CF19E6A02FC">
+ <ownedComment xmi:id="_r548phTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CF19E6A02FD">
+ <body>Partitions containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r548qhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r548qRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9A15A02F2" name="inGroup" type="_3ADC7B74022D41B9C8DC02E1" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41B9A15A00DF">
+ <ownedComment xmi:id="_r6L3mRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9A15A02F2">
+ <body>Groups containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6L3nRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6L3nBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E69B02ED" name="MergeNode">
+ <ownedComment xmi:id="_r5cQtRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E69B02ED">
+ <body>A merge node is a control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows but to accept one among several alternate flows.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r5cQvhTaEdqZu-3Jy1-uYg" name="one_outgoing_edge" constrainedElement="_3ADC7B74022D3B72E69B02ED">
+ <ownedComment xmi:id="_r5cQuhTaEdqZu-3Jy1-uYg" annotatedElement="_r5cQvhTaEdqZu-3Jy1-uYg">
+ <body>A merge node has one outgoing edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5cQvxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r5cQxxTaEdqZu-3Jy1-uYg" name="edges" constrainedElement="_3ADC7B74022D3B72E69B02ED">
+ <ownedComment xmi:id="_r5cQwxTaEdqZu-3Jy1-uYg" annotatedElement="_r5cQxxTaEdqZu-3Jy1-uYg">
+ <body>The edges coming into and out of a merge node must be either all object flows or all control flows.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5cQyBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72E6AC0279" general="_3ADC7B74022D3B72D6550115"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E53E007E" name="DecisionNode">
+ <ownedComment xmi:id="_r5cQzBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E53E007E">
+ <body>A decision node is a control node that chooses between outgoing flows.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r5laqBTaEdqZu-3Jy1-uYg" name="one_incoming_edge" constrainedElement="_3ADC7B74022D3B72E53E007E">
+ <ownedComment xmi:id="_r5lapBTaEdqZu-3Jy1-uYg" annotatedElement="_r5laqBTaEdqZu-3Jy1-uYg">
+ <body>A decision node has one incoming edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5laqRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r5lasRTaEdqZu-3Jy1-uYg" name="input_parameter" constrainedElement="_3ADC7B74022D3B72E53E007E">
+ <ownedComment xmi:id="_r5larRTaEdqZu-3Jy1-uYg" annotatedElement="_r5lasRTaEdqZu-3Jy1-uYg">
+ <body>A decision input behavior has zero or one input parameter and one output parameter. Any input parameter must be the same as or a supertype of the type of object tokens coming along the incoming edge. The behavior cannot have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5lashTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r5lauhTaEdqZu-3Jy1-uYg" name="edges" constrainedElement="_3ADC7B74022D3B72E53E007E">
+ <ownedComment xmi:id="_r5lathTaEdqZu-3Jy1-uYg" annotatedElement="_r5lauhTaEdqZu-3Jy1-uYg">
+ <body>The edges coming into and out of a decision node must be either all object flows or all control flows.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5lauxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72E563006D" general="_3ADC7B74022D3B72D6550115"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C75EC7A013B" name="decisionInput" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3C75EC780323">
+ <ownedComment xmi:id="_r6CGphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C75EC7A013B">
+ <body>Provides input to guard specifications on edges outgoing from the decision node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6L3kxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6L3khTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E4EE0123" name="FinalNode" isAbstract="true">
+ <ownedComment xmi:id="_r5lavxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E4EE0123">
+ <body>A final node is an abstract control node at which a flow in an activity stops.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r5vLoxTaEdqZu-3Jy1-uYg" name="no_outgoing_edges" constrainedElement="_3ADC7B74022D3B72E4EE0123">
+ <ownedComment xmi:id="_r5laxBTaEdqZu-3Jy1-uYg" annotatedElement="_r5vLoxTaEdqZu-3Jy1-uYg">
+ <body>A final node has no outgoing edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r5vLpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B72E55C035C" general="_3ADC7B74022D3B72D6550115"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D1F110045" name="ActivityFinalNode">
+ <generalization xmi:id="_3ADC7B74022D410D20BE0287" general="_3ADC7B74022D3B72E4EE0123"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B72E69302FF" name="JoinNode">
+ <ownedComment xmi:id="_r5vLrRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E69302FF">
+ <body>A join node is a control node that synchronizes multiple flows.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B72E6AA00A9" general="_3ADC7B74022D3B72D6550115"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41B9C8DC02E1" name="ActivityGroup" isAbstract="true">
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9A15A02F4" name="containedNode" type="_3ADC7B74022D3E82C8060069" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41B9A15A00DF">
+ <ownedComment xmi:id="_r6L3oRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9A15A02F4">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6L3pRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6L3pBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9A2B2031F" name="containedEdge" type="_3ADC7B74022D3E82C7D200BE" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41B9A2B20198">
+ <ownedComment xmi:id="_r6VBhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9A2B2031F">
+ <body>Edges immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FeIw0VPbEdum4cSNPMCAdA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FeIw0FPbEdum4cSNPMCAdA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_f58-QjdoEdqq1tCaRkgBQQ" name="inActivity" type="_TCCGEDdnEdqq1tCaRkgBQQ" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_f58-QDdoEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_vfLKMDdpEdqq1tCaRkgBQQ" annotatedElement="_f58-QjdoEdqq1tCaRkgBQQ">
+ <body>Activity containing the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qKgBATdoEdqq1tCaRkgBQQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qKgBADdoEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TCCGEDdnEdqq1tCaRkgBQQ" name="Activity">
+ <ownedAttribute xmi:id="_XFxBQTdnEdqq1tCaRkgBQQ" name="partition" type="_3ADC7B74022D337DA4DE0212" subsettedProperty="_f58-QTdoEdqq1tCaRkgBQQ" association="_XFxBQDdnEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_sHZ9IDdpEdqq1tCaRkgBQQ" annotatedElement="_XFxBQTdnEdqq1tCaRkgBQQ">
+ <body>Top-level partitions in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XFxBRDdnEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XFxBQzdnEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_f58-QTdoEdqq1tCaRkgBQQ" name="group" type="_3ADC7B74022D41B9C8DC02E1" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_f58-QDdoEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_qanrMDdpEdqq1tCaRkgBQQ" annotatedElement="_f58-QTdoEdqq1tCaRkgBQQ">
+ <body>Top-level groups in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f58-RDdoEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f58-QzdoEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF293A1033C" name="A_edge_inPartition" memberEnd="_3ADC7B74022D3DF293A1033D _3ADC7B74022D3DF293A1033E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CF19E6A02FC" name="A_inPartition_node" memberEnd="_3ADC7B74022D3CF19E6A02FD _3ADC7B74022D3CF19E6A02FE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CF19D840125" name="A_subpartition_superPartition" memberEnd="_3ADC7B74022D3CF19D840126 _3ADC7B74022D3CF19D840127"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B72E8BE0068" name="A_represents_activityPartition" memberEnd="_3ADC7B74022D3B72E8BE01EF _3ADC7B74022D3B72E8BE0235">
+ <ownedEnd xmi:id="_3ADC7B74022D3B72E8BE0235" type="_3ADC7B74022D337DA4DE0212" association="_3ADC7B74022D3B72E8BE0068">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6CGmxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6CGmhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410D142C0269" name="A_activityEdge_guard" memberEnd="_3ADC7B74022D410D142C0273 _3ADC7B74022D410D142C0274">
+ <ownedEnd xmi:id="_3ADC7B74022D410D142C0273" type="_3ADC7B74022D3E82C7D200BE" association="_3ADC7B74022D410D142C0269">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Si6ygU-5EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Si6ygE-5EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C75EC780323" name="A_decisionInput_decisionNode" memberEnd="_3ADC7B74022D3C75EC7A013B _3ADC7B74022D3C75EC7A0159">
+ <ownedEnd xmi:id="_3ADC7B74022D3C75EC7A0159" type="_3ADC7B74022D3B72E53E007E" association="_3ADC7B74022D3C75EC780323">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r6L3lhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r6L3lRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B9A15A00DF" name="A_containedNode_inGroup" memberEnd="_3ADC7B74022D41B9A15A02F4 _3ADC7B74022D41B9A15A02F2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B9A2B20198" name="A_containedEdge_inGroup" memberEnd="_3ADC7B74022D41B9A2B2031F _3ADC7B74022D41B9A2B20315"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_XFxBQDdnEdqq1tCaRkgBQQ" name="A_partition_activity" memberEnd="_XFxBQTdnEdqq1tCaRkgBQQ _XFxBQjdnEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_XFxBQjdnEdqq1tCaRkgBQQ" type="_TCCGEDdnEdqq1tCaRkgBQQ" association="_XFxBQDdnEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DFRvIZf2Edqv8az7iMpi0g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DFRvIJf2Edqv8az7iMpi0g"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_f58-QDdoEdqq1tCaRkgBQQ" name="A_group_inActivity" memberEnd="_f58-QTdoEdqq1tCaRkgBQQ _f58-QjdoEdqq1tCaRkgBQQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF125060148" name="CompleteActivities">
+ <packageImport xmi:id="_3ADC7B74022D4162BAFB02F8" importedPackage="_3ADC7B74022D334A99B00208"/>
+ <packageImport xmi:id="_R7bS0D9IEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D335C122001A4"/>
+ <packageImport xmi:id="_TrC2UD9IEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_GyORAhTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF124FB03B9"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0284BE018B" name="JoinNode">
+ <ownedComment xmi:id="_r6eyjBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0284BE018B">
+ <body>Join nodes have a Boolean value specification using the names of the incoming edges to specify the conditions under which the join will emit a token.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r6eylRTaEdqZu-3Jy1-uYg" name="one_outgoing_edge" constrainedElement="_3ADC7B74022D3D0284BE018B">
+ <ownedComment xmi:id="_r6eykRTaEdqZu-3Jy1-uYg" annotatedElement="_r6eylRTaEdqZu-3Jy1-uYg">
+ <body>A join node has one outgoing edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6eylhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.outgoing->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r6ojhBTaEdqZu-3Jy1-uYg" name="incoming_object_flow" constrainedElement="_3ADC7B74022D3D0284BE018B">
+ <ownedComment xmi:id="_r6ojgBTaEdqZu-3Jy1-uYg" annotatedElement="_r6ojhBTaEdqZu-3Jy1-uYg">
+ <body>If a join node has an incoming object flow, it must have an outgoing object flow, otherwise, it must have an outgoing control flow.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6ojhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.incoming.select(e | e.isTypeOf(ObjectFlow)->notEmpty() implies&#xD;&#xA; self.outgoing.isTypeOf(ObjectFlow)) and&#xD;&#xA; (self.incoming.select(e | e.isTypeOf(ObjectFlow)->empty() implies&#xD;&#xA; self.outgoing.isTypeOf(ControlFlow))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B0C4E70337" general="_3ADC7B74022D3B72D6550115"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4063FEFD030C" name="isCombineDuplicate">
+ <ownedComment xmi:id="_r6ojiRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4063FEFD030C">
+ <body>Tells whether tokens having objects with the same identity are combined into one by the join.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GyORAxTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_yKXc8RpQEdq8G-QPZvN9ow" name="joinSpec" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_yKXc8BpQEdq8G-QPZvN9ow">
+ <ownedComment xmi:id="_upNEADaDEdqq1tCaRkgBQQ" annotatedElement="_yKXc8RpQEdq8G-QPZvN9ow">
+ <body>A specification giving the conditions under which the join with emit a token. Default is &quot;and&quot;.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yKXc9BpQEdq8G-QPZvN9ow" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yKXc8xpQEdq8G-QPZvN9ow" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C7D521E00D8" name="DataStoreNode">
+ <ownedComment xmi:id="_r6ojjhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C7D521E00D8">
+ <body>A data store node is a central buffer node for non-transient information.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3C7D52250132" general="_3ADC7B74022D3CC5840B02B0"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D027D560076" name="ObjectFlow">
+ <ownedComment xmi:id="_r6ojkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D027D560076">
+ <body>Object flows have support for multicast/receive, token selection from object nodes, and transformation of tokens.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r6xtcRTaEdqZu-3Jy1-uYg" name="target" constrainedElement="_3ADC7B74022D3D027D560076">
+ <ownedComment xmi:id="_r6ojlxTaEdqZu-3Jy1-uYg" annotatedElement="_r6xtcRTaEdqZu-3Jy1-uYg">
+ <body>An edge with constant weight may not target an object node, or lead to an object node downstream with no intervening actions, that has an upper bound less than the weight.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6xtchTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r6xtehTaEdqZu-3Jy1-uYg" name="transformation_behaviour" constrainedElement="_3ADC7B74022D3D027D560076">
+ <ownedComment xmi:id="_r6xtdhTaEdqZu-3Jy1-uYg" annotatedElement="_r6xtehTaEdqZu-3Jy1-uYg">
+ <body>A transformation behavior has one input parameter and one output parameter. The input parameter must be the same as or a supertype of the type of object token coming from the source end. The output parameter must be the same or a subtype of the type of object token expected downstream. The behavior cannot have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6xtexTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r6xtgxTaEdqZu-3Jy1-uYg" name="selection_behaviour" constrainedElement="_3ADC7B74022D3D027D560076">
+ <ownedComment xmi:id="_r6xtfxTaEdqZu-3Jy1-uYg" annotatedElement="_r6xtgxTaEdqZu-3Jy1-uYg">
+ <body>An object flow may have a selection behavior only if has an object node as a source.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6xthBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r6xtjBTaEdqZu-3Jy1-uYg" name="input_and_output_parameter" constrainedElement="_3ADC7B74022D3D027D560076">
+ <ownedComment xmi:id="_r6xtiBTaEdqZu-3Jy1-uYg" annotatedElement="_r6xtjBTaEdqZu-3Jy1-uYg">
+ <body>A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same as or a supertype of the type of source object node. The output parameter must be the same or a subtype of the type of source object node. The behavior cannot have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6xtjRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r6xtlRTaEdqZu-3Jy1-uYg" name="is_multicast_or_is_multireceive" constrainedElement="_3ADC7B74022D3D027D560076">
+ <ownedComment xmi:id="_r6xtkRTaEdqZu-3Jy1-uYg" annotatedElement="_r6xtlRTaEdqZu-3Jy1-uYg">
+ <body>isMulticast and isMultireceive cannot both be true.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r6xtlhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D027D810140" name="isMulticast">
+ <ownedComment xmi:id="_r6xtmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D027D810140">
+ <body>Tells whether the objects in the flow are passed by multicasting.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GyhzABTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D027D8A025C" name="isMultireceive">
+ <ownedComment xmi:id="_r67edBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D027D8A025C">
+ <body>Tells whether the objects in the flow are gathered from respondents to multicasting.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GyhzARTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF40F340269" name="transformation" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3DF40F3303BC">
+ <ownedComment xmi:id="_r-qH7BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF40F340269">
+ <body>Changes or replaces data tokens flowing along edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-qH8BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-qH7xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF40F2C0221" name="selection" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3DF40F2B0360">
+ <ownedComment xmi:id="_r-9C1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF40F2C0221">
+ <body>Selects tokens from a source object node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-9C2BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-9C1xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D027BB30060" name="ActivityEdge" isAbstract="true">
+ <ownedComment xmi:id="_r67egRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D027BB30060">
+ <body>Activity edges can be contained in interruptible regions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0C5250015" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D041F7003C2" name="weight" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D041F70023B">
+ <ownedComment xmi:id="_r-gW5xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D041F7003C2">
+ <body>Number of tokens consumed from the source node on each traversal.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-gW6xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-gW6hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E00BBD202BF" name="interrupts" type="_3ADC7B74022D3E00BB3F010F" association="_3ADC7B74022D3E00BBD200A2">
+ <ownedComment xmi:id="_r-zR3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00BBD202BF">
+ <body>Region that the edge can interrupt.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-zR4RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-zR4BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D027FAE021D" name="ObjectNode" isAbstract="true">
+ <ownedComment xmi:id="_r67ehhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D027FAE021D">
+ <body>Object nodes have support for token selection, limitation on the number of tokens, specifying the state required for tokens, and carrying control values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r7FPgRTaEdqZu-3Jy1-uYg" name="selection_behavior" constrainedElement="_3ADC7B74022D3D027FAE021D">
+ <ownedComment xmi:id="_r7FPfRTaEdqZu-3Jy1-uYg" annotatedElement="_r7FPgRTaEdqZu-3Jy1-uYg">
+ <body>If an object node has a selection behavior, then the ordering of the object node is ordered, and vice versa.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7FPghTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r7FPihTaEdqZu-3Jy1-uYg" name="input_output_parameter" constrainedElement="_3ADC7B74022D3D027FAE021D">
+ <ownedComment xmi:id="_r7FPhhTaEdqZu-3Jy1-uYg" annotatedElement="_r7FPihTaEdqZu-3Jy1-uYg">
+ <body>A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same type as the object node or a supertype of the type of object node. The output parameter must be the same or a subtype of the type of object node. The behavior cannot have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7FPixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B0C58201B4" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D02808C0385" name="ordering" type="_3ADC7B74022D3B72DC630100">
+ <ownedComment xmi:id="_r7FPjxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D02808C0385">
+ <body>Tells whether and how the tokens in the object node are ordered for selection to traverse edges outgoing from the object node.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_r7FPkhTaEdqZu-3Jy1-uYg" instance="_3ADC7B74022D3BC3DB950065"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D413109B402B1" name="isControlType">
+ <ownedComment xmi:id="_r7FPlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D413109B402B1">
+ <body>Tells whether the type of the object node is to be treated as control.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gyq88BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D04208E0214" name="upperBound" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D04208E0052">
+ <ownedComment xmi:id="_r-gW7xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D04208E0214">
+ <body>The maximum number of tokens allowed in the node. Objects cannot flow into the node if the upper bound is reached.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-gW8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-gW8hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B72E7D303A9" name="inState" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D3B72E7D301FB">
+ <ownedComment xmi:id="_r-gW-RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72E7D303A9">
+ <body>The required states of the object available at this point in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-gW_RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-gW_BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E00D210009F" name="selection" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3E00D20F027F">
+ <ownedComment xmi:id="_r-9C3hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00D210009F">
+ <body>Selects tokens for outgoing edges.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-9C4hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-9C4RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C75ED8802FC" name="ParameterSet">
+ <ownedComment xmi:id="_aqBaQBV9EdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3C75ED8802FC">
+ <body>A parameter set is an element that provides alternative sets of inputs or outputs that a behavior may use.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r7OZchTaEdqZu-3Jy1-uYg" name="same_parameterized_entity" constrainedElement="_3ADC7B74022D3C75ED8802FC">
+ <ownedComment xmi:id="_r7OZbhTaEdqZu-3Jy1-uYg" annotatedElement="_r7OZchTaEdqZu-3Jy1-uYg">
+ <body>The parameters in a parameter set must all be inputs or all be outputs of the same parameterized entity, and the parameter set is owned by that entity.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7OZcxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r7OZexTaEdqZu-3Jy1-uYg" name="input" constrainedElement="_3ADC7B74022D3C75ED8802FC">
+ <ownedComment xmi:id="_r7OZdxTaEdqZu-3Jy1-uYg" annotatedElement="_r7OZexTaEdqZu-3Jy1-uYg">
+ <body>If a behavior has input parameters that are in a parameter set, then any inputs that are not in a parameter set must be streaming. Same for output parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7OZfBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r7OZhBTaEdqZu-3Jy1-uYg" name="two_parameter_sets" constrainedElement="_3ADC7B74022D3C75ED8802FC">
+ <ownedComment xmi:id="_r7OZgBTaEdqZu-3Jy1-uYg" annotatedElement="_r7OZhBTaEdqZu-3Jy1-uYg">
+ <body>Two parameter sets cannot have exactly the same set of parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r7OZhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C75EDDA026D" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C75EDE800E9" name="parameter" type="_3ADC7B74022D3DFBA74801F4" association="_3ADC7B74022D3C75EDE701C2">
+ <ownedComment xmi:id="_r-qH5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C75EDE800E9">
+ <body>Parameters in the parameter set.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-qH6RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-qH6BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4063FFD4010D" name="condition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D4063FFD203B3">
+ <ownedComment xmi:id="_r-9C6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4063FFD4010D">
+ <body>Constraint that should be satisfied for the owner of the parameters in an input parameter set to start execution using the values provided for those parameters, or the owner of the parameters in an output parameter set to end execution providing the values for those parameters, if all preconditions and conditions on input parameter sets were satisfied.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-9C7BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-9C6xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF2911C0251" name="Activity">
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF291A30186" name="isSingleExecution">
+ <ownedComment xmi:id="_r7YKZRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF291A30186">
+ <body>If true, all invocations of the activity are handled by the same execution.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_uls8IF0nEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFBA74801F4" name="Parameter">
+ <ownedComment xmi:id="_r96hAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFBA74801F4">
+ <body>Parameters have support for streaming, exceptions, and parameter sets.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r96hCxTaEdqZu-3Jy1-uYg" name="stream_and_exception" constrainedElement="_3ADC7B74022D3DFBA74801F4">
+ <ownedComment xmi:id="_r96hBxTaEdqZu-3Jy1-uYg" annotatedElement="_r96hCxTaEdqZu-3Jy1-uYg">
+ <body>A parameter cannot be a stream and exception at the same time.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r96hDBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r96hFBTaEdqZu-3Jy1-uYg" name="not_exception" constrainedElement="_3ADC7B74022D3DFBA74801F4">
+ <ownedComment xmi:id="_r96hEBTaEdqZu-3Jy1-uYg" annotatedElement="_r96hFBTaEdqZu-3Jy1-uYg">
+ <body>An input parameter cannot be an exception.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r96hFRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r96hHRTaEdqZu-3Jy1-uYg" name="reentrant_behaviors" constrainedElement="_3ADC7B74022D3DFBA74801F4">
+ <ownedComment xmi:id="_r96hGRTaEdqZu-3Jy1-uYg" annotatedElement="_r96hHRTaEdqZu-3Jy1-uYg">
+ <body>Reentrant behaviors cannot have stream parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-Dq8BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r-Dq-BTaEdqZu-3Jy1-uYg" name="in_and_out" constrainedElement="_3ADC7B74022D3DFBA74801F4">
+ <ownedComment xmi:id="_r-Dq9BTaEdqZu-3Jy1-uYg" annotatedElement="_r-Dq-BTaEdqZu-3Jy1-uYg">
+ <body>Only in and inout parameters may have a delete effect. Only out, inout, and return parameters may have a create effect.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-Dq-RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E00B9E900C7" name="isException">
+ <ownedComment xmi:id="_r-Dq_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00B9E900C7">
+ <body>Tells whether an output parameter may emit a value to the exclusion of the other outputs.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gy0t8BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFBA76B01F4" name="isStream">
+ <ownedComment xmi:id="_r-DrAhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFBA76B01F4">
+ <body>Tells whether an input parameter may accept values while its behavior is executing, or whether an output parameter post values while the behavior is executing.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gy0t8RTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4063FB930031" name="effect" type="_3ADC7B74022D3C7EB0F6009B">
+ <ownedComment xmi:id="_r-DrBxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4063FB930031">
+ <body>Specifies the effect that the owner of the parameter has on values passed in or out of the parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cBEG0V0oEdq3-fC14hmVtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cBEG0F0oEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C75EDE800E7" name="parameterSet" type="_3ADC7B74022D3C75ED8802FC" association="_3ADC7B74022D3C75EDE701C2">
+ <ownedComment xmi:id="_r-gXAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C75EDE800E7">
+ <body>The parameter sets containing the parameter. See ParameterSet.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-qH4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-qH4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF29DC302DE" name="Action" isAbstract="true">
+ <ownedComment xmi:id="_r-DrCxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29DC302DE">
+ <body>An action has pre- and post-conditions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0C43902BF" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29D9C0169" name="localPrecondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DF29D9C0167">
+ <ownedComment xmi:id="_r-qH9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29D9C0169">
+ <body>Constraint that must be satisfied when execution is started.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-qH-xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-qH-hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29D980040" name="localPostcondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DF29D98003E">
+ <ownedComment xmi:id="_r-zR0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29D980040">
+ <body>Constraint that must be satisfied when executed is completed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-zR1BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-zR0xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E00BB3F010F" name="InterruptibleActivityRegion">
+ <ownedComment xmi:id="_r-Nb9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00BB3F010F">
+ <body>An interruptible activity region is an activity group that supports termination of tokens flowing in the portions of an activity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r-Nb_RTaEdqZu-3Jy1-uYg" name="interrupting_edges" constrainedElement="_3ADC7B74022D3E00BB3F010F">
+ <ownedComment xmi:id="_r-Nb-RTaEdqZu-3Jy1-uYg" annotatedElement="_r-Nb_RTaEdqZu-3Jy1-uYg">
+ <body>Interrupting edges of a region must have their source node in the region and their target node outside the region in the same activity containing the region.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-Nb_hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E00BBAC0224" general="_3ADC7B74022D3C7C22F8028E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E00BBD20279" name="interruptingEdge" type="_3ADC7B74022D3D027BB30060" association="_3ADC7B74022D3E00BBD200A2">
+ <ownedComment xmi:id="_r-zR1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00BBD20279">
+ <body>The edges leaving the region that will abort other tokens flowing in the region.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-zR2xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-zR2hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E00BC080118" name="node" type="_3ADC7B74022D3E00BBF703BC" subsettedProperty="_3ADC7B74022D41BDACD9026C" association="_3ADC7B74022D3E00BC060147">
+ <ownedComment xmi:id="_r-zR6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00BC080118">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvBv4UfrEdq0rbStTpEubg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvBv4EfrEdq0rbStTpEubg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E00BBF703BC" name="ActivityNode" isAbstract="true">
+ <ownedAttribute xmi:id="_3ADC7B74022D3E00BC0800E6" name="inInterruptibleRegion" type="_3ADC7B74022D3E00BB3F010F" subsettedProperty="_3ADC7B74022D41BDACD90276" association="_3ADC7B74022D3E00BC060147">
+ <ownedComment xmi:id="_r-zR5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E00BC0800E6">
+ <body>Interruptible regions containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-zR6BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-zR5xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDACD90276" name="inGroup" type="_3ADC7B74022D41BDACBB01D3" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41BDACD802CF">
+ <ownedComment xmi:id="_r_P9xRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDACD90276">
+ <body>Groups containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_P9yRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_P9yBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40F9C2220133" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_r-NcBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9C2220133">
+ <body>A behavioral feature owns zero or more parameter sets.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0C6DA0028" general="_3ADC7B74022D3CAAFD220337"/>
+ <generalization xmi:id="_3ADC7B74022D41BDAC4B02F4" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9C3170095" name="ownedParameterSet" type="_3ADC7B74022D3C75ED8802FC" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D40F9C31600C6">
+ <ownedComment xmi:id="_r_GMwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9C3170095">
+ <body>The ParameterSets owned by this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_GMxRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_GMxBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40F9C26202B2" name="Behavior" isAbstract="true">
+ <ownedComment xmi:id="_r-NcDBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9C26202B2">
+ <body>A behavior owns zero or more parameter sets.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0C6550013" general="_3ADC7B74022D3CAB1D6D00A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9C3280017" name="ownedParameterSet" type="_3ADC7B74022D3C75ED8802FC" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D40F9C326037C">
+ <ownedComment xmi:id="_r_GMyxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9C3280017">
+ <body>The ParameterSets owned by this Behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_GMzxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_GMzhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41310C4F026A" name="Pin">
+ <ownedRule xmi:id="_r-Wl7BTaEdqZu-3Jy1-uYg" name="control_pins" constrainedElement="_3ADC7B74022D41310C4F026A">
+ <ownedComment xmi:id="_r-Wl6BTaEdqZu-3Jy1-uYg" annotatedElement="_r-Wl7BTaEdqZu-3Jy1-uYg">
+ <body>Control pins have a control type</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r-Wl7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isControl implies isControlType</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D41310C5D00CF" name="isControl">
+ <ownedComment xmi:id="_r-Wl8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41310C5D00CF">
+ <body>Tells whether the pins provide data to the actions, or just controls when it executes it.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gy934BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41BDACBB01D3" name="ActivityGroup" isAbstract="true">
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDACD9026C" name="containedNode" type="_3ADC7B74022D3E00BBF703BC" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41BDACD802CF">
+ <ownedComment xmi:id="_r_GM1RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDACD9026C">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_P9wxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_P9whTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3B72DC630100" name="ObjectNodeOrderingKind">
+ <ownedComment xmi:id="_r7OZZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B72DC630100">
+ <body>ObjectNodeOrderingKind is an enumeration indicating queuing order within a node.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3BC3DB860335" name="unordered">
+ <ownedComment xmi:id="_E2CtwPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3BC3DB860335">
+ <body>Indicates that object node tokens are unordered.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3BC3DB9001F9" name="ordered">
+ <ownedComment xmi:id="_FQaVkPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3BC3DB9001F9">
+ <body>Indicates that object node tokens are ordered.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3BC3DB9300BD" name="LIFO">
+ <ownedComment xmi:id="_IWJ-gPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3BC3DB9300BD">
+ <body>Indicates that object node tokens are queued in a last in, first out manner.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3BC3DB950065" name="FIFO">
+ <ownedComment xmi:id="_J2tyUPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3BC3DB950065">
+ <body>Indicates that object node tokens are queued in a first in, first out manner.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3C7EB0F6009B" name="ParameterEffectKind">
+ <ownedComment xmi:id="_r67eeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C7EB0F6009B">
+ <body>The datatype ParameterEffectKind is an enumeration that indicates the effect of a behavior on values passed in or out of its parameters.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3C7EB109014C" name="create">
+ <ownedComment xmi:id="_TxW2gPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3C7EB109014C">
+ <body>Indicates that the behavior creates values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3C7EB10B01C8" name="read">
+ <ownedComment xmi:id="_V3dnYPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3C7EB10B01C8">
+ <body>Indicates that the behavior reads values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3C7EB10C027D" name="update">
+ <ownedComment xmi:id="_W1v0kPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3C7EB10C027D">
+ <body>Indicates that the behavior updates values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3C7EB10E015E" name="delete">
+ <ownedComment xmi:id="_X1h2kPZfEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3C7EB10E015E">
+ <body>Indicates that the behavior deletes values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D041F70023B" name="A_weight_activityEdge" memberEnd="_3ADC7B74022D3D041F7003C2 _3ADC7B74022D3D041F7003E0">
+ <ownedEnd xmi:id="_3ADC7B74022D3D041F7003E0" type="_3ADC7B74022D3D027BB30060" association="_3ADC7B74022D3D041F70023B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x88JYU-5EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x88JYE-5EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D04208E0052" name="A_upperBound_objectNode" memberEnd="_3ADC7B74022D3D04208E0214 _3ADC7B74022D3D04208E0232">
+ <ownedEnd xmi:id="_3ADC7B74022D3D04208E0232" type="_3ADC7B74022D3D027FAE021D" association="_3ADC7B74022D3D04208E0052">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-gW9hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-gW9RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B72E7D301FB" name="A_inState_objectNode" memberEnd="_3ADC7B74022D3B72E7D303A9 _3ADC7B74022D3B72E7D303BD">
+ <ownedEnd xmi:id="_3ADC7B74022D3B72E7D303BD" type="_3ADC7B74022D3D027FAE021D" association="_3ADC7B74022D3B72E7D301FB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-gXABTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-gW_xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C75EDE701C2" name="A_parameterSet_parameter" memberEnd="_3ADC7B74022D3C75EDE800E7 _3ADC7B74022D3C75EDE800E9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF40F3303BC" name="A_transformation_objectFlow" memberEnd="_3ADC7B74022D3DF40F340269 _3ADC7B74022D3DF40F340291">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF40F340291" type="_3ADC7B74022D3D027D560076" association="_3ADC7B74022D3DF40F3303BC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-qH8xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-qH8hTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF29D9C0167" name="A_action_localPrecondition" memberEnd="_3ADC7B74022D3DF29D9C0168 _3ADC7B74022D3DF29D9C0169">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF29D9C0168" type="_3ADC7B74022D3DF29DC302DE" association="_3ADC7B74022D3DF29D9C0167">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mzK_oU-5EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mzK_oE-5EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF29D98003E" name="A_action_localPostcondition" memberEnd="_3ADC7B74022D3DF29D98003F _3ADC7B74022D3DF29D980040">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF29D98003F" type="_3ADC7B74022D3DF29DC302DE" association="_3ADC7B74022D3DF29D98003E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ouZ9QU-5EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ouZ9QE-5EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E00BBD200A2" name="A_interruptingEdge_interrupts" memberEnd="_3ADC7B74022D3E00BBD20279 _3ADC7B74022D3E00BBD202BF"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E00BC060147" name="A_inInterruptibleRegion_node" memberEnd="_3ADC7B74022D3E00BC0800E6 _3ADC7B74022D3E00BC080118"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF40F2B0360" name="A_selection_objectFlow" memberEnd="_3ADC7B74022D3DF40F2C0221 _3ADC7B74022D3DF40F2C023F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF40F2C023F" type="_3ADC7B74022D3D027D560076" association="_3ADC7B74022D3DF40F2B0360">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-9C2xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-9C2hTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E00D20F027F" name="A_selection_objectNode" memberEnd="_3ADC7B74022D3E00D210009F _3ADC7B74022D3E00D2100140">
+ <ownedEnd xmi:id="_3ADC7B74022D3E00D2100140" type="_3ADC7B74022D3D027FAE021D" association="_3ADC7B74022D3E00D20F027F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-9C5RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-9C5BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4063FFD203B3" name="A_condition_parameterSet" memberEnd="_3ADC7B74022D4063FFD4010D _3ADC7B74022D4063FFD40135">
+ <ownedEnd xmi:id="_3ADC7B74022D4063FFD40135" type="_3ADC7B74022D3C75ED8802FC" association="_3ADC7B74022D4063FFD203B3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_z95poU-7EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_z95poE-7EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9C31600C6" name="A_ownedParameterSet_behavioralFeature" memberEnd="_3ADC7B74022D40F9C3170095 _3ADC7B74022D40F9C3170097">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9C3170097" type="_3ADC7B74022D40F9C2220133" association="_3ADC7B74022D40F9C31600C6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_GMyBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_GMxxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9C326037C" name="A_ownedParameterSet_behavior" memberEnd="_3ADC7B74022D40F9C3280017 _3ADC7B74022D40F9C3280019">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9C3280019" type="_3ADC7B74022D40F9C26202B2" association="_3ADC7B74022D40F9C326037C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_GM0hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_GM0RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BDACD802CF" name="A_containedNode_inGroup" memberEnd="_3ADC7B74022D41BDACD9026C _3ADC7B74022D41BDACD90276"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_yKXc8BpQEdq8G-QPZvN9ow" name="A_joinSpec_joinNode" memberEnd="_yKXc8RpQEdq8G-QPZvN9ow _yKXc8hpQEdq8G-QPZvN9ow">
+ <ownedEnd xmi:id="_yKXc8hpQEdq8G-QPZvN9ow" type="_3ADC7B74022D3D0284BE018B" association="_yKXc8BpQEdq8G-QPZvN9ow">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81euUU-7EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81euUE-7EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF1253C0119" name="StructuredActivities">
+ <packageMerge xmi:id="_GzRZ4RTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D410D001C03C2"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D380F459F0348" name="Variable">
+ <ownedComment xmi:id="_r_i4uRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D380F459F0348">
+ <body>Variables are elements for passing data between actions indirectly. A local variable stores values shared by the actions within a structured activity group but not accessible outside it. The output of an action may be written to a variable and read for the input to a subsequent action, which is effectively an indirect data flow path. Because there is no predefined relationship between actions that read and write variables, these actions must be sequenced by control flows to prevent race conditions that may occur between actions that read or write the same variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r_sptBTaEdqZu-3Jy1-uYg" name="owned" constrainedElement="_3ADC7B74022D380F459F0348">
+ <ownedComment xmi:id="_r_spsBTaEdqZu-3Jy1-uYg" annotatedElement="_r_sptBTaEdqZu-3Jy1-uYg">
+ <body>A variable is owned by a StructuredNode or Activity, but not both.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r_sptRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38864D240172" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <generalization xmi:id="_3ADC7B74022D40A79EA700A6" general="_3ADC7B74022D3CAAFD5202DC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF296DA02CE" name="scope" type="_3ADC7B74022D3DF29688033C" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3DF296D902FD">
+ <ownedComment xmi:id="_sATGqhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF296DA02CE">
+ <body>A structured activity node that owns the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sATGrhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sATGrRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F18C1D024C" name="activityScope" type="_3ADC7B74022D3E82C61F002C" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D40F18C1A027A">
+ <ownedComment xmi:id="_sBCtlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F18C1D024C">
+ <body>An activity that owns the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBCtmBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBCtlxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300AD92009C" name="isAccessibleBy" isQuery="true" bodyCondition="_r_spvhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_r_spuRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300AD92009C">
+ <body>The isAccessibleBy() operation is not defined in standard UML. Implementations should define it to specify which actions can access a variable.&#xD;
+</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r_spvhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300AD92009C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r_spvxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_r_spvBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B626403C7" name="a" type="_3ADC7B74022D410D3A4402C0"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF29688033C" name="StructuredActivityNode">
+ <ownedComment xmi:id="_r_spwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29688033C">
+ <body>A structured activity node is an executable activity node that may have an expansion into subordinate nodes as an activity group. The subordinate nodes must belong to only one structured activity node, although they may be nested.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF296E300AB" general="_3ADC7B74022D41BCC7B10055"/>
+ <generalization xmi:id="_3ADC7B74022D3DF3B4AA034B" general="_3ADC7B74022D3DFA74D102BF"/>
+ <generalization xmi:id="_3ADC7B74022D3DF427F500D0" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF296DA02DE" name="variable" type="_3ADC7B74022D380F459F0348" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3DF296D902FD">
+ <ownedComment xmi:id="_sATGsBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF296DA02DE">
+ <body>A variable defined in the scope of the structured activity node. It has no value and may not be accessed</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAcQkxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAcQkhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF296FB037A" name="node" type="_3ADC7B74022D3E82C74F0264" aggregation="composite" subsettedProperty="_3ADC7B74022D41BD7B8A0094" association="_3ADC7B74022D3DF296FB004E">
+ <ownedComment xmi:id="_sAcQlhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF296FB037A">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAcQmhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAcQmRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E441FC901C6" name="activity" type="_3ADC7B74022D3E82C61F002C" redefinedProperty="_3ADC7B74022D41BD92F502B2 _3ADC7B74022D41BD910D022E" association="_3ADC7B74022D3E441FC80297">
+ <ownedComment xmi:id="_sA48pBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E441FC901C6">
+ <body>Activity immediately containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBCtgxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBCtghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF2982700FA" name="ConditionalNode">
+ <ownedComment xmi:id="_r_2asRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF2982700FA">
+ <body>A conditional node is a structured activity node that represents an exclusive choice among some number of alternatives.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF298A400FA" general="_3ADC7B74022D3DF29688033C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF298EB034B" name="isDeterminate">
+ <ownedComment xmi:id="_r_2athTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF298EB034B">
+ <body>If true, the modeler asserts that at most one test will succeed.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_RT4skGgXEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF298E2035B" name="isAssured">
+ <ownedComment xmi:id="_r_2auhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF298E2035B">
+ <body>If true, the modeler asserts that at least one test will succeed.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G-bUoGgXEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF41DDB03AD" name="clause" type="_3ADC7B74022D3DF29840035B" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DF41DDB019A">
+ <ownedComment xmi:id="_sAvLmxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF41DDB03AD">
+ <body>Set of clauses composing the conditional.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48gBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAvLnhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF298320128" name="LoopNode">
+ <ownedComment xmi:id="_r_2avhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF298320128">
+ <body>A loop node is a structured activity node that represents a loop with setup, test, and body sections.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF298A702AF" general="_3ADC7B74022D3DF29688033C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF2995703A9" name="isTestedFirst">
+ <ownedComment xmi:id="_r_2awxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF2995703A9">
+ <body>If true, the test is performed before the first execution of the body.
+If false, the body is executed once before the test is performed.
+</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_e__zEGgeEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29A0301B7" name="bodyPart" type="_3ADC7B74022D3DFA74D102BF" association="_3ADC7B74022D3DF29A01032C">
+ <ownedComment xmi:id="_sAvLihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29A0301B7">
+ <body>The set of nodes and edges that perform the repetitive computations of the loop. The body section is executed as long as the test section produces a true value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAvLjhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAvLjRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29A0800BB" name="setupPart" type="_3ADC7B74022D3DFA74D102BF" association="_3ADC7B74022D3DF29A0700CB">
+ <ownedComment xmi:id="_sAvLlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29A0800BB">
+ <body>The set of nodes and edges that initialize values or perform other setup computations for the loop.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAvLmBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAvLlxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42657007B" name="decider" type="_3ADC7B74022D384B2387039A" association="_3ADC7B74022D3DF4265200CE">
+ <ownedComment xmi:id="_sA48kBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42657007B">
+ <body>An output pin within the test fragment the value of which is examined after execution of the test to determine whether to execute the loop body.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48lBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48kxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF4297800EB" name="test" type="_3ADC7B74022D3DFA74D102BF" association="_3ADC7B74022D3DF4297600C0">
+ <ownedComment xmi:id="_sA48mhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF4297800EB">
+ <body>The set of nodes, edges, and designated value that compute a Boolean value to determine if another execution of the body will be performed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48nhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48nRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF29840035B" name="Clause">
+ <ownedComment xmi:id="_r_2axxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29840035B">
+ <body>A clause is an element that represents a single branch of a conditional construct, including a test and a body section. The body section is executed only if (but not necessarily if) the test section evaluates true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_aJfVQDXYEdqq1tCaRkgBQQ" name="decider_output" constrainedElement="_3ADC7B74022D3DF29840035B">
+ <ownedComment xmi:id="_rJRQIDXYEdqq1tCaRkgBQQ" annotatedElement="_aJfVQDXYEdqq1tCaRkgBQQ">
+ <body>The decider output pin must be for the test body or a node contained by the test body as a structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_aJfVQTXYEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C32A09F0161" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF299840128" name="test" type="_3ADC7B74022D3DFA74D102BF" association="_3ADC7B74022D3DF299820261">
+ <ownedComment xmi:id="_sAmBkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF299840128">
+ <body>A nested activity fragment with a designated output pin that specifies the result of the test.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAmBlRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAmBlBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF2999D0271" name="body" type="_3ADC7B74022D3DFA74D102BF" association="_3ADC7B74022D3DF2999C02BF">
+ <ownedComment xmi:id="_sAmBmxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF2999D0271">
+ <body>A nested activity fragment that is executed if the test evaluates to true and the clause is chosen over any concurrent clauses that also evaluate to true.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAmBnxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAmBnhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF299C60261" name="predecessorClause" type="_3ADC7B74022D3DF29840035B" association="_3ADC7B74022D3DF299C30280">
+ <ownedComment xmi:id="_sAmBohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF299C60261">
+ <body>A set of clauses whose tests must all evaluate false before the current clause can be tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAmBphTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAmBpRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF299C60271" name="successorClause" type="_3ADC7B74022D3DF29840035B" association="_3ADC7B74022D3DF299C30280">
+ <ownedComment xmi:id="_sAvLgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF299C60271">
+ <body>A set of clauses which may not be tested unless the current clause tests false.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAvLhBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAvLgxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF4262802C2" name="decider" type="_3ADC7B74022D384B2387039A" association="_3ADC7B74022D3DF4262602A1">
+ <ownedComment xmi:id="_sA48hhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF4262802C2">
+ <body>An output pin within the test fragment the value of which is examined after execution of the test to determine whether the body should be executed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48ihTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48iRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E82C61F002C" name="Activity">
+ <generalization xmi:id="_3ADC7B74022D41B8AF8E0041" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E441FC901D0" name="structuredNode" type="_3ADC7B74022D3DF29688033C" isReadOnly="true" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D41BD92F502C6 _3ADC7B74022D41BD910D0224" association="_3ADC7B74022D3E441FC80297">
+ <ownedComment xmi:id="_sBCthRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E441FC901D0">
+ <body>Top-level structured nodes in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBCtiRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBCtiBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F18C1D0242" name="variable" type="_3ADC7B74022D380F459F0348" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D40F18C1A027A">
+ <ownedComment xmi:id="_sBCtjhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F18C1D0242">
+ <body>Top-level variables in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBCtkhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBCtkRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD910D0224" name="group" type="_3ADC7B74022D41BCC7B10055" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D41BD910C00E2">
+ <ownedComment xmi:id="_sBL3ixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD910D0224">
+ <body>Top-level groups in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBVocxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBVochTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD92F502C6" name="node" type="_3ADC7B74022D3E82C74F0264" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D41BD92F401D4">
+ <ownedComment xmi:id="_sBVoghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD92F502C6">
+ <body>Nodes coordinated by the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBVohhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBVohRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E82C74F0264" name="ActivityNode" isAbstract="true">
+ <ownedRule xmi:id="_sAJVoxTaEdqZu-3Jy1-uYg" name="owned_structured_node" constrainedElement="_3ADC7B74022D3E82C74F0264">
+ <ownedComment xmi:id="_r__krhTaEdqZu-3Jy1-uYg" annotatedElement="_sAJVoxTaEdqZu-3Jy1-uYg">
+ <body>Activity nodes may be owned by at most one structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sAJVpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B089F30083" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF296FB0399" name="inStructuredNode" type="_3ADC7B74022D3DF29688033C" subsettedProperty="_3ADC7B74022D41BD7B8A008A" association="_3ADC7B74022D3DF296FB004E">
+ <ownedComment xmi:id="_sAcQnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF296FB0399">
+ <body>Structured activity node containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAcQoBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAcQnxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD7B8A008A" name="inGroup" type="_3ADC7B74022D41BCC7B10055" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41BD7B87031B">
+ <ownedComment xmi:id="_sBL3fBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD7B8A008A">
+ <body>Groups containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBL3gBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBL3fxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD92F502B2" name="activity" type="_3ADC7B74022D3E82C61F002C" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D41BD92F401D4">
+ <ownedComment xmi:id="_sBVofBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD92F502B2">
+ <body>Activity containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBVogBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBVofxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA74D102BF" name="ExecutableNode" isAbstract="true">
+ <ownedComment xmi:id="_sAJVqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA74D102BF">
+ <body>An executable node is an abstract class for activity nodes that may be executed. It is used as an attachment point for exception handlers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4131EDCC0292" general="_3ADC7B74022D3E82C74F0264"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D39DF01FD" name="SequenceNode">
+ <ownedComment xmi:id="_sAJVrRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D39DF01FD">
+ <body>A sequence node is a structured activity node that executes its actions in order.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D3EC202EC" general="_3ADC7B74022D3DF29688033C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D3ED2032B" name="executableNode" type="_3ADC7B74022D3DFA74D102BF" isOrdered="true" aggregation="composite" redefinedProperty="_3ADC7B74022D3DF296FB037A" association="_3ADC7B74022D410D3ED10046">
+ <ownedComment xmi:id="_sBL3chTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D3ED2032B">
+ <body>An ordered set of executable nodes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBL3dhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBL3dRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D3A4402C0" name="Action" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D410D3DB4018C" general="_3ADC7B74022D3DFA74D102BF"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41BCC7B10055" name="ActivityGroup" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41BD95D60199" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD7B8A0094" name="containedNode" type="_3ADC7B74022D3E82C74F0264" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41BD7B87031B">
+ <ownedComment xmi:id="_sBL3hBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD7B8A0094">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBL3iBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBL3hxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD910D022E" name="inActivity" type="_3ADC7B74022D3E82C61F002C" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D41BD910C00E2">
+ <ownedComment xmi:id="_sBVodRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD910D022E">
+ <body>Activity containing the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBVoeRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBVoeBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_J2PtIOTYEdqI1ohUEQYFdg" name="InputPin">
+ <ownedRule xmi:id="_U6WTwOTYEdqI1ohUEQYFdg" name="outgoing_edges_structured_only" constrainedElement="_J2PtIOTYEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_U6WTweTYEdqI1ohUEQYFdg" annotatedElement="_U6WTwOTYEdqI1ohUEQYFdg">
+ <body>Input pins may have outgoing edges only when they are on actions that are structured nodes, and these edges must target a node contained by the structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_U6WTxOTYEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RG20AOTYEdqI1ohUEQYFdg" name="OutputPin">
+ <ownedRule xmi:id="_Bslo8OTZEdqI1ohUEQYFdg" name="incoming_edges_structured_only" constrainedElement="_RG20AOTYEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_Bslo8eTZEdqI1ohUEQYFdg" annotatedElement="_Bslo8OTZEdqI1ohUEQYFdg">
+ <body>Output pins may have incoming edges only when they are on actions that are structured nodes, and these edges may not target a node contained by the structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Bslo9OTZEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF296D902FD" name="A_scope_variable" memberEnd="_3ADC7B74022D3DF296DA02CE _3ADC7B74022D3DF296DA02DE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF296FB004E" name="A_node_inStructuredNode" memberEnd="_3ADC7B74022D3DF296FB037A _3ADC7B74022D3DF296FB0399"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF299820261" name="A_clause_test" memberEnd="_3ADC7B74022D3DF299840119 _3ADC7B74022D3DF299840128">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF299840119" type="_3ADC7B74022D3DF29840035B" association="_3ADC7B74022D3DF299820261">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAcQpBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAcQoxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF2999C02BF" name="A_clause_body" memberEnd="_3ADC7B74022D3DF2999D0261 _3ADC7B74022D3DF2999D0271">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF2999D0261" type="_3ADC7B74022D3DF29840035B" association="_3ADC7B74022D3DF2999C02BF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAmBmRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAmBmBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF299C30280" name="A_predecessorClause_successorClause" memberEnd="_3ADC7B74022D3DF299C60261 _3ADC7B74022D3DF299C60271"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF29A01032C" name="A_loopNode_bodyPart" memberEnd="_3ADC7B74022D3DF29A0301B5 _3ADC7B74022D3DF29A0301B7">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF29A0301B5" type="_3ADC7B74022D3DF298320128" association="_3ADC7B74022D3DF29A01032C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAvLiBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAvLhxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF29A0700CB" name="A_loopNode_setupPart" memberEnd="_3ADC7B74022D3DF29A0800AB _3ADC7B74022D3DF29A0800BB">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF29A0800AB" type="_3ADC7B74022D3DF298320128" association="_3ADC7B74022D3DF29A0700CB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sAvLkhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sAvLkRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF41DDB019A" name="A_clause_conditionalNode" memberEnd="_3ADC7B74022D3DF41DDB03AD _3ADC7B74022D3DF41DDB03B7">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF41DDB03B7" type="_3ADC7B74022D3DF2982700FA" association="_3ADC7B74022D3DF41DDB019A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48gxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48ghTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF4262602A1" name="A_decider_clause" memberEnd="_3ADC7B74022D3DF4262802C2 _3ADC7B74022D3DF426280312">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF426280312" type="_3ADC7B74022D3DF29840035B" association="_3ADC7B74022D3DF4262602A1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48jRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48jBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF4265200CE" name="A_decider_loopNode" memberEnd="_3ADC7B74022D3DF42657007B _3ADC7B74022D3DF4265700CB">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF4265700CB" type="_3ADC7B74022D3DF298320128" association="_3ADC7B74022D3DF4265200CE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48lxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48lhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF4297600C0" name="A_test_loopNode" memberEnd="_3ADC7B74022D3DF4297800EB _3ADC7B74022D3DF429780113">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF429780113" type="_3ADC7B74022D3DF298320128" association="_3ADC7B74022D3DF4297600C0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sA48oRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sA48oBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E441FC80297" name="A_activity_structuredNode" memberEnd="_3ADC7B74022D3E441FC901C6 _3ADC7B74022D3E441FC901D0"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F18C1A027A" name="A_variable_activityScope" memberEnd="_3ADC7B74022D40F18C1D0242 _3ADC7B74022D40F18C1D024C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410D3ED10046" name="A_executableNode_sequenceNode" memberEnd="_3ADC7B74022D410D3ED2032B _3ADC7B74022D410D3ED20335">
+ <ownedEnd xmi:id="_3ADC7B74022D410D3ED20335" type="_3ADC7B74022D410D39DF01FD" association="_3ADC7B74022D410D3ED10046">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sBL3eRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sBL3eBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BD7B87031B" name="A_containedNode_inGroup" memberEnd="_3ADC7B74022D41BD7B8A0094 _3ADC7B74022D41BD7B8A008A"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BD910C00E2" name="A_group_inActivity" memberEnd="_3ADC7B74022D41BD910D0224 _3ADC7B74022D41BD910D022E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BD92F401D4" name="A_node_activity" memberEnd="_3ADC7B74022D41BD92F502C6 _3ADC7B74022D41BD92F502B2"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF3B10302DE" name="ExtraStructuredActivities">
+ <packageImport xmi:id="_3ADC7B74022D410D49AE002D" importedPackage="_3ADC7B74022D3DF124E700CB"/>
+ <packageMerge xmi:id="_G1NTkBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF1253C0119"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF29C07001F" name="ExpansionNode">
+ <ownedComment xmi:id="_DfphUOEQEdqI1ohUEQYFdg" annotatedElement="_3ADC7B74022D3DF29C07001F">
+ <body>An expansion node is an object node used to indicate a flow across the boundary of an expansion region. A flow into a region contains a collection that is broken into its individual elements inside the region, which is executed once per element. A flow out of a region combines individual elements into a collection for use outside the region.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF29C2D0196" general="_3ADC7B74022D337D8F5A01EA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29C990205" name="regionAsOutput" type="_3ADC7B74022D3DF29BFE01A5" association="_3ADC7B74022D3DF29C9601C5">
+ <ownedComment xmi:id="_sCFPcRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29C990205">
+ <body>The expansion region for which the node is an output.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCFPdRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCFPdBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29C69037C" name="regionAsInput" type="_3ADC7B74022D3DF29BFE01A5" association="_3ADC7B74022D3DF29C69009C">
+ <ownedComment xmi:id="_sCPAWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29C69037C">
+ <body>The expansion region for which the node is an input.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCPAXBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCPAWxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF29BFE01A5" name="ExpansionRegion">
+ <ownedComment xmi:id="_sByUZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29BFE01A5">
+ <body>An expansion region is a structured activity region that executes multiple times corresponding to elements of an input collection.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sByUbxTaEdqZu-3Jy1-uYg" name="expansion_nodes" constrainedElement="_3ADC7B74022D3DF29BFE01A5">
+ <ownedComment xmi:id="_sByUaxTaEdqZu-3Jy1-uYg" annotatedElement="_sByUbxTaEdqZu-3Jy1-uYg">
+ <body>An ExpansionRegion must have one or more argument ExpansionNodes and zero or more result ExpansionNodes.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sByUcBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF29C26008C" general="_3ADC7B74022D3DF29688033C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29D1D0167" name="mode" type="_3ADC7B74022D3DF29C100119">
+ <ownedComment xmi:id="_sByUdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29D1D0167">
+ <body>The way in which the executions interact:&#xD;
+parallel: all interactions are independent&#xD;
+iterative: the interactions occur in order of the elements&#xD;
+stream: a stream of values flows into a single execution&#xD;
+</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_w1h48GgYEdqfYrlcy8iLFA" type="_3ADC7B74022D3DF29C100119" instance="_3ADC7B74022D3DF29CF3006D"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29C990203" name="outputElement" type="_3ADC7B74022D3DF29C07001F" association="_3ADC7B74022D3DF29C9601C5">
+ <ownedComment xmi:id="_sCFPaxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29C990203">
+ <body>An object node that accepts a separate element of the output collection during each of the multiple executions of the region. The values are formed into a collection that is available when the execution of the region is complete.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCFPbxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCFPbhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF29C69037A" name="inputElement" type="_3ADC7B74022D3DF29C07001F" association="_3ADC7B74022D3DF29C69009C">
+ <ownedComment xmi:id="_sCPAUhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29C69037A">
+ <body>An object node that holds a separate element of the input collection during each of the multiple executions of the region.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCPAVhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCPAVRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA795B00BB" name="ExecutableNode" isAbstract="true">
+ <ownedComment xmi:id="_sB7eXxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA795B00BB">
+ <body>An executable node is an abstract class for activity nodes that may be executed. It is used as an attachment point for exception handlers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D8D10085" general="_3ADC7B74022D3E82C74F0264"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA799903B9" name="handler" type="_3ADC7B74022D3DFA7978006D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DFA7999002E">
+ <ownedComment xmi:id="_sCPAXxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA799903B9">
+ <body>A set of exception handlers that are examined if an uncaught exception propagates to the outer level of the executable node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCPAYxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCPAYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA7978006D" name="ExceptionHandler">
+ <ownedComment xmi:id="_sB7eZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA7978006D">
+ <body>An exception handler is an element that specifies a body to execute in case the specified exception occurs during the execution of the protected node.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sCFPUxTaEdqZu-3Jy1-uYg" name="exception_body" constrainedElement="_3ADC7B74022D3DFA7978006D">
+ <ownedComment xmi:id="_sB7eaRTaEdqZu-3Jy1-uYg" annotatedElement="_sCFPUxTaEdqZu-3Jy1-uYg">
+ <body>The exception handler and its input object node are not the source or target of any edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sCFPVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sCFPXBTaEdqZu-3Jy1-uYg" name="result_pins" constrainedElement="_3ADC7B74022D3DFA7978006D">
+ <ownedComment xmi:id="_sCFPWBTaEdqZu-3Jy1-uYg" annotatedElement="_sCFPXBTaEdqZu-3Jy1-uYg">
+ <body>The result pins of the exception handler body must correspond in number and types to the result pins of the protected node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sCFPXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sCFPZRTaEdqZu-3Jy1-uYg" name="one_input" constrainedElement="_3ADC7B74022D3DFA7978006D">
+ <ownedComment xmi:id="_sCFPYRTaEdqZu-3Jy1-uYg" annotatedElement="_sCFPZRTaEdqZu-3Jy1-uYg">
+ <body>The handler body has one input, and that input is the same as the exception input.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sCFPZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_CaSKcDXXEdqq1tCaRkgBQQ" name="edge_source_target" constrainedElement="_3ADC7B74022D3DFA7978006D">
+ <ownedComment xmi:id="_RJOrIDXXEdqq1tCaRkgBQQ" annotatedElement="_CaSKcDXXEdqq1tCaRkgBQQ">
+ <body>An edge that has a source in an exception handler structured node must have its target in the handler also, and vice versa.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_CaSKcTXXEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E54045B0151" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA799903BB" name="protectedNode" type="_3ADC7B74022D3DFA795B00BB" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3DFA7999002E">
+ <ownedComment xmi:id="_sCPAZRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA799903BB">
+ <body>The node protected by the handler. The handler is examined if an exception propagates to the outside of the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCPAaRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCPAaBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA7A02037A" name="handlerBody" type="_3ADC7B74022D3DFA795B00BB" association="_3ADC7B74022D3DFA7A02008C">
+ <ownedComment xmi:id="_sCPAbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA7A02037A">
+ <body>A node that is executed if the handler satisfies an uncaught exception.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCYKQxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCYKQhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA7F63029F" name="exceptionInput" type="_3ADC7B74022D337D8F5A01EA" association="_3ADC7B74022D3DFA7F6100CB">
+ <ownedComment xmi:id="_sCYKRxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA7F63029F">
+ <body>An object node within the handler body. When the handler catches an exception, the exception token is placed in this node, causing the body to execute.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCYKSxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCYKShTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA79A2006D" name="exceptionType" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3DFA79A10148">
+ <ownedComment xmi:id="_sCYKTxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA79A2006D">
+ <body>The kind of instances that the handler catches. If an exception occurs whose type is any of the classifiers in the set, the handler catches the exception and executes its body.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sCYKUxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sCYKUhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3DF29C100119" name="ExpansionKind">
+ <ownedComment xmi:id="_sByUeBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29C100119">
+ <body>ExpansionKind is an enumeration type used to specify how multiple executions of an expansion region interact.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DF29CEF00BB" name="parallel">
+ <ownedComment xmi:id="_sB7eUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29CEF00BB">
+ <body>The executions are independent. They may be executed concurrently.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DF29CF3006D" name="iterative">
+ <ownedComment xmi:id="_sB7eVxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29CF3006D">
+ <body>The executions are dependent and must be executed one at a time, in order of the collection elements.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DF29CF5030D" name="stream">
+ <ownedComment xmi:id="_sB7eWxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF29CF5030D">
+ <body>A stream of collection elements flows into a single execution, in order of the collection elements.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF29C9601C5" name="A_outputElement_regionAsOutput" memberEnd="_3ADC7B74022D3DF29C990203 _3ADC7B74022D3DF29C990205"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF29C69009C" name="A_inputElement_regionAsInput" memberEnd="_3ADC7B74022D3DF29C69037A _3ADC7B74022D3DF29C69037C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA7999002E" name="A_handler_protectedNode" memberEnd="_3ADC7B74022D3DFA799903B9 _3ADC7B74022D3DFA799903BB"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA7A02008C" name="A_handlerBody_exceptionHandler" memberEnd="_3ADC7B74022D3DFA7A02037A _3ADC7B74022D3DFA7A02037C">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA7A02037C" type="_3ADC7B74022D3DFA7978006D" association="_3ADC7B74022D3DFA7A02008C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S0wCAU-8EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S0wCAE-8EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA7F6100CB" name="A_exceptionInput_exceptionHandler" memberEnd="_3ADC7B74022D3DFA7F63029F _3ADC7B74022D3DFA7F6302BF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA7F6302BF" type="_3ADC7B74022D3DFA7978006D" association="_3ADC7B74022D3DFA7F6100CB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b7PFYU-8EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b7PFYE-8EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA79A10148" name="A_exceptionType_exceptionHandler" memberEnd="_3ADC7B74022D3DFA79A2006D _3ADC7B74022D3DFA79A2007D">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA79A2007D" type="_3ADC7B74022D3DFA7978006D" association="_3ADC7B74022D3DFA79A10148">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XkSTQU-8EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XkSTQE-8EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF41CB50210" name="CompleteStructuredActivities">
+ <packageMerge xmi:id="_G1p_gRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF1253C0119"/>
+ <packageMerge xmi:id="_G1p_ghTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF124E700CB"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF41CE2026E" name="ConditionalNode">
+ <ownedRule xmi:id="_XToE0DdsEdqq1tCaRkgBQQ" name="result_no_incoming" constrainedElement="_3ADC7B74022D3DF41CE2026E">
+ <ownedComment xmi:id="_fX9HoDdsEdqq1tCaRkgBQQ" annotatedElement="_XToE0DdsEdqq1tCaRkgBQQ">
+ <body>The result output pins have no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_XToE0TdsEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B0C861002A" general="_3ADC7B74022D3DF42BDA0369"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42C6C021E" name="result" type="_3ADC7B74022D384B2387039A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3DF42C6C003E">
+ <ownedComment xmi:id="_sC02NBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42C6C021E">
+ <body>A list of output pins that constitute the data flow outputs of the conditional.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC02OBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC02NxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF42BDA0369" name="StructuredActivityNode">
+ <ownedComment xmi:id="_sCh7TRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42BDA0369">
+ <body>Because of the concurrent nature of the execution of actions within and across activities, it can be difficult to guarantee the consistent access and modification of object memory. In order to avoid race conditions or other concurrency-related problems, it is sometimes necessary to isolate the effects of a group of actions from the effects of actions outside the group. This may be indicated by setting the mustIsolate attribute to true on a structured activity node. If a structured activity node is &quot;isolated,&quot; then any object used by an action within the node cannot be accessed by any action outside the node until the structured activity node as a whole completes. Any concurrent actions that would result in accessing such objects are required to have their execution deferred until the completion of the node.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sCh7VhTaEdqZu-3Jy1-uYg" name="edges" constrainedElement="_3ADC7B74022D3DF42BDA0369">
+ <ownedComment xmi:id="_sCh7UhTaEdqZu-3Jy1-uYg" annotatedElement="_sCh7VhTaEdqZu-3Jy1-uYg">
+ <body>The edges owned by a structured node must have source and target nodes in the structured node, and vice versa.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sCh7VxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4BD04016D" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <generalization xmi:id="_2TW5EDXPEdqq1tCaRkgBQQ" general="_3ADC7B74022D41BDADCB01FC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42BF00270" name="mustIsolate">
+ <ownedComment xmi:id="_sCh7WxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42BF00270">
+ <body>If true, then the actions in the node execute in isolation from actions outside the node.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Wsh2IGggEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF2970001D4" name="edge" type="_3ADC7B74022D3E82C75A00F8" aggregation="composite" subsettedProperty="_3ADC7B74022D41BDADE90322" association="_3ADC7B74022D3DF296FF0271">
+ <ownedComment xmi:id="_sDHxKxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF2970001D4">
+ <body>Edges immediately contained in the structured node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDHxLxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDHxLhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF42C0A0051" name="LoopNode">
+ <ownedRule xmi:id="_7_fb0DXXEdqq1tCaRkgBQQ" name="input_edges" constrainedElement="_3ADC7B74022D3DF42C0A0051">
+ <ownedComment xmi:id="_FwmJgDXYEdqq1tCaRkgBQQ" annotatedElement="_7_fb0DXXEdqq1tCaRkgBQQ">
+ <body>Loop variable inputs must not have outgoing edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_7_fb0TXXEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sCMc4DcwEdqq1tCaRkgBQQ" name="body_output_pins" constrainedElement="_3ADC7B74022D3DF42C0A0051">
+ <ownedComment xmi:id="_0hpVcDcwEdqq1tCaRkgBQQ" annotatedElement="_sCMc4DcwEdqq1tCaRkgBQQ">
+ <body>The bodyOutput pins are output pins on actions in the body of the loop node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sCMc4TcwEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_gED_sDdsEdqq1tCaRkgBQQ" name="result_no_incoming" constrainedElement="_3ADC7B74022D3DF42C0A0051">
+ <ownedComment xmi:id="_mRUzMDdsEdqq1tCaRkgBQQ" annotatedElement="_gED_sDdsEdqq1tCaRkgBQQ">
+ <body>The result output pins have no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_gED_sTdsEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B0C86A01BE" general="_3ADC7B74022D3DF42BDA0369"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42CD0031D" name="result" type="_3ADC7B74022D384B2387039A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3DF42CD000A6">
+ <ownedComment xmi:id="_sC02PhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42CD0031D">
+ <body>A list of output pins that constitute the data flow output of the entire loop.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nMxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nMhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42E4C039B" name="loopVariable" type="_3ADC7B74022D384B2387039A" isOrdered="true" association="_3ADC7B74022D3DF42E4C014C">
+ <ownedComment xmi:id="_sC-nORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42E4C039B">
+ <body>A list of output pins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are movied to the result pins of the loop.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nPRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nPBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42EB3000A" name="bodyOutput" type="_3ADC7B74022D384B2387039A" isOrdered="true" association="_3ADC7B74022D3DF42EB10093">
+ <ownedComment xmi:id="_sC-nQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42EB3000A">
+ <body>A list of output pins within the body fragment the values of which are moved to the loop variable pins after completion of execution of the body, before the next iteration of the loop begins or before the loop exits.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nRxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nRhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42F4A03B4" name="loopVariableInput" type="_3ADC7B74022D384B237E021A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3DF42F490345">
+ <ownedComment xmi:id="_sDHxIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42F4A03B4">
+ <body>A list of values that are moved into the loop variable pins before the first iteration of the loop.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDHxJRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDHxJBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF42C1F028C" name="Clause">
+ <ownedRule xmi:id="_LcCDADcwEdqq1tCaRkgBQQ" name="body_output_pins" constrainedElement="_3ADC7B74022D3DF42C1F028C">
+ <ownedComment xmi:id="_RPhEkDcwEdqq1tCaRkgBQQ" annotatedElement="_LcCDADcwEdqq1tCaRkgBQQ">
+ <body>The bodyOutput pins are output pins on actions in the body of the clause.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_LcCDATcwEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF42F010355" name="bodyOutput" type="_3ADC7B74022D384B2387039A" isOrdered="true" association="_3ADC7B74022D3DF42F0001FF">
+ <ownedComment xmi:id="_sC-nTRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF42F010355">
+ <body>A list of output pins within the body fragment whose values are moved to the result pins of the containing conditional node after execution of the clause body.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nURTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nUBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E82C75A00F8" name="ActivityEdge" isAbstract="true">
+ <ownedRule xmi:id="_sCrsVBTaEdqZu-3Jy1-uYg" name="structured_node" constrainedElement="_3ADC7B74022D3E82C75A00F8">
+ <ownedComment xmi:id="_sCrsUBTaEdqZu-3Jy1-uYg" annotatedElement="_sCrsVBTaEdqZu-3Jy1-uYg">
+ <body>Activity edges may be owned by at most one structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sCrsVRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF2970001E4" name="inStructuredNode" type="_3ADC7B74022D3DF42BDA0369" subsettedProperty="_3ADC7B74022D41BDADE90317" association="_3ADC7B74022D3DF296FF0271">
+ <ownedComment xmi:id="_sDHxMRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF2970001E4">
+ <body>Structured activity node containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDHxNRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDHxNBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDADE90317" name="inGroup" type="_3ADC7B74022D41BDADCB01FC" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41BDADE90032">
+ <ownedComment xmi:id="_sDHxOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDADE90317">
+ <body>Groups containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDHxPBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDHxOxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41BDADCB01FC" name="ActivityGroup" isAbstract="true">
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDADE90322" name="containedEdge" type="_3ADC7B74022D3E82C75A00F8" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41BDADE90032">
+ <ownedComment xmi:id="_sDRiIxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDADE90322">
+ <body>Edges immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDRiJxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDRiJhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF42C6C003E" name="A_result_conditionalNode" memberEnd="_3ADC7B74022D3DF42C6C021E _3ADC7B74022D3DF42C6C0279">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF42C6C0279" type="_3ADC7B74022D3DF41CE2026E" association="_3ADC7B74022D3DF42C6C003E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC02OxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC02OhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF42CD000A6" name="A_result_loopNode" memberEnd="_3ADC7B74022D3DF42CD0031D _3ADC7B74022D3DF42CD0036D">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF42CD0036D" type="_3ADC7B74022D3DF42C0A0051" association="_3ADC7B74022D3DF42CD000A6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nNhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nNRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF42E4C014C" name="A_loopVariable_loopNode" memberEnd="_3ADC7B74022D3DF42E4C039B _3ADC7B74022D3DF42E4D0021">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF42E4D0021" type="_3ADC7B74022D3DF42C0A0051" association="_3ADC7B74022D3DF42E4C014C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nQBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nPxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF42EB10093" name="A_bodyOutput_loopNode" memberEnd="_3ADC7B74022D3DF42EB3000A _3ADC7B74022D3DF42EB30078">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF42EB30078" type="_3ADC7B74022D3DF42C0A0051" association="_3ADC7B74022D3DF42EB10093">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nShTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nSRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF42F0001FF" name="A_bodyOutput_clause" memberEnd="_3ADC7B74022D3DF42F010355 _3ADC7B74022D3DF42F0103C3">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF42F0103C3" type="_3ADC7B74022D3DF42C1F028C" association="_3ADC7B74022D3DF42F0001FF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sC-nVBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sC-nUxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF42F490345" name="A_loopVariableInput_loopNode" memberEnd="_3ADC7B74022D3DF42F4A03B4 _3ADC7B74022D3DF42F4B006D">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF42F4B006D" type="_3ADC7B74022D3DF42C0A0051" association="_3ADC7B74022D3DF42F490345">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDHxKBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDHxJxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF296FF0271" name="A_edge_inStructuredNode" memberEnd="_3ADC7B74022D3DF2970001D4 _3ADC7B74022D3DF2970001E4"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BDADE90032" name="A_containedEdge_inGroup" memberEnd="_3ADC7B74022D41BDADE90322 _3ADC7B74022D41BDADE90317"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D410D001C03C2" name="FundamentalActivities">
+ <packageImport xmi:id="_3ADC7B74022D410D00B40230" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_G186chTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packageMerge xmi:id="_G186cxTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D410C264F010C"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF281CE00BB" name="Activity">
+ <ownedComment xmi:id="_sDbTKxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF281CE00BB">
+ <body>An activity is the specification of parameterized behavior as the coordinated sequencing of subordinate units whose individual elements are actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_HIFVMDdqEdqq1tCaRkgBQQ" name="no_supergroups" constrainedElement="_3ADC7B74022D3DF281CE00BB">
+ <ownedComment xmi:id="_M1T9wDdqEdqq1tCaRkgBQQ" annotatedElement="_HIFVMDdqEdqq1tCaRkgBQQ">
+ <body>The groups of an activity have no supergroups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_HIFVMTdqEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D410D04D40198" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D07460059" name="node" type="_3ADC7B74022D410D0735009A" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410D07460058">
+ <ownedComment xmi:id="_sDkdEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D07460059">
+ <body>Nodes coordinated by the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDkdFhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDkdFRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D099E0336" name="group" type="_3ADC7B74022D410D03520266" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410D099B02D7">
+ <ownedComment xmi:id="_sDuOEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D099E0336">
+ <body>Top-level groups in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDuOFhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDuOFRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D03520266" name="ActivityGroup" isAbstract="true">
+ <ownedComment xmi:id="_sDbTMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D03520266">
+ <body>ActivityGroup is an abstract class for defining sets of nodes and edges in an activity.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D08D30226" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D08ED01B7" name="containedNode" type="_3ADC7B74022D410D0735009A" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D410D08EC01E5">
+ <ownedComment xmi:id="_sDkdJxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D08ED01B7">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDkdKxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDkdKhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D099E0340" name="inActivity" type="_3ADC7B74022D3DF281CE00BB" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D410D099B02D7">
+ <ownedComment xmi:id="_sDuOGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D099E0340">
+ <body>Activity containing the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDuOHBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDuOGxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D0A3403E6" name="subgroup" type="_3ADC7B74022D410D03520266" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410D0A2C0290">
+ <ownedComment xmi:id="_sDuOHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D0A3403E6">
+ <body>Groups immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDuOIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDuOIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D0A350008" name="superGroup" type="_3ADC7B74022D410D03520266" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D410D0A2C0290">
+ <ownedComment xmi:id="_sD3YAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D0A350008">
+ <body>Group immediately containing the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sD3YBxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sD3YBhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D0366005C" name="Action" isAbstract="true">
+ <ownedComment xmi:id="_F8SxgBV-EdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D410D0366005C">
+ <body>An action represents a single step within an activity, that is, one that is not further decomposed within the activity.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D05FB0341" general="_3ADC7B74022D410D0735009A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D0735009A" name="ActivityNode" isAbstract="true">
+ <ownedComment xmi:id="_sDbTNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D0735009A">
+ <body>ActivityNode is an abstract class for points in the flow of an activity connected by edges.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D07A40017" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D0746005A" name="activity" type="_3ADC7B74022D3DF281CE00BB" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D410D07460058">
+ <ownedComment xmi:id="_sDkdGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D0746005A">
+ <body>Activity containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDkdHBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDkdGxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410D08ED01B5" name="inGroup" type="_3ADC7B74022D410D03520266" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D410D08EC01E5">
+ <ownedComment xmi:id="_sDkdHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D08ED01B5">
+ <body>Groups containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDkdIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDkdIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410D07460058" name="A_node_activity" memberEnd="_3ADC7B74022D410D07460059 _3ADC7B74022D410D0746005A"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410D08EC01E5" name="A_containedNode_inGroup" memberEnd="_3ADC7B74022D410D08ED01B7 _3ADC7B74022D410D08ED01B5"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410D099B02D7" name="A_group_inActivity" memberEnd="_3ADC7B74022D410D099E0336 _3ADC7B74022D410D099E0340"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410D0A2C0290" name="A_subgroup_superGroup" memberEnd="_3ADC7B74022D410D0A3403E6 _3ADC7B74022D410D0A350008"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D5535770162" name="AuxiliaryConstructs">
+ <packageImport xmi:id="_QMey0D9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packageImport xmi:id="_R526oD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3ADF556A0044"/>
+ <packageImport xmi:id="_TPsFID9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageImport xmi:id="_j1ZTID9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D552D4C038C"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_euHIYEfeEdq0rbStTpEubg" name="Profiles">
+ <packageMerge xmi:id="_LuDiYEffEdq0rbStTpEubg">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3CA186CB00FB"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gF4MkEfeEdq0rbStTpEubg" name="ExtensionEnd">
+ <ownedComment xmi:id="_4cTx4OEeEdqI1ohUEQYFdg" annotatedElement="_gF4MkEfeEdq0rbStTpEubg">
+ <body>The default multiplicity of an extension end is 0..1.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_k3pScEfeEdq0rbStTpEubg" name="lower" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_78DpQUfeEdq0rbStTpEubg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_78DpQEfeEdq0rbStTpEubg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_2N7o0EfeEdq0rbStTpEubg"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CF19F4B02C4" name="InformationFlows">
+ <packageImport xmi:id="_3ADC7B74022D40F9AB6200C0" importedPackage="_3ADC7B74022D3DF124E700CB"/>
+ <packageImport xmi:id="_3ADC7B74022D40F9AB6B0023" importedPackage="_3ADC7B74022D3388DA6E014A"/>
+ <packageImport xmi:id="_3ADC7B74022D40F9AB7203BD" importedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packageMerge xmi:id="_HQUiQhTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0CE6480229" name="InformationItem">
+ <ownedComment xmi:id="_skW19xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0CE6480229">
+ <body>An information item is an abstraction of all kinds of information that can be exchanged between objects. It is a kind of classifier intended for representing information in a very abstract way, one which cannot be instantiated.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_skW2ABTaEdqZu-3Jy1-uYg" name="sources_and_targets" constrainedElement="_3ADC7B74022D3D0CE6480229">
+ <ownedComment xmi:id="_skW1_BTaEdqZu-3Jy1-uYg" annotatedElement="_skW2ABTaEdqZu-3Jy1-uYg">
+ <body>The sources and targets of an information item (its related information flows) must designate subsets of the sources and targets of the representation information item, if any.The Classifiers that can realize an information item can only be of the following kind: Class, Interface, InformationItem, Signal, Component.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skW2ARTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.represented->select(p | p->oclIsKindOf(InformationItem))->forAll(p |&#xD;&#xA; p.informationFlow.source->forAll(q | self.informationFlow.source->include(q)) and&#xD;&#xA; p.informationFlow.target->forAll(q | self.informationFlow.target->include(q)))) and&#xD;&#xA; (self.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;&#xA; oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_skW2CRTaEdqZu-3Jy1-uYg" name="has_no" constrainedElement="_3ADC7B74022D3D0CE6480229">
+ <ownedComment xmi:id="_skW2BRTaEdqZu-3Jy1-uYg" annotatedElement="_skW2CRTaEdqZu-3Jy1-uYg">
+ <body>An informationItem has no feature, no generalization, and no associations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skW2ChTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.generalization->isEmpty() and self.feature->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_skf_4xTaEdqZu-3Jy1-uYg" name="not_instantiable" constrainedElement="_3ADC7B74022D3D0CE6480229">
+ <ownedComment xmi:id="_skW2DhTaEdqZu-3Jy1-uYg" annotatedElement="_skf_4xTaEdqZu-3Jy1-uYg">
+ <body>It is not instantiable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skf_5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isAbstract</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DD3DCB9030B" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DD3DDBD0070" name="represented" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3DD3DDBC0046">
+ <ownedComment xmi:id="_skpw6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DD3DDBD0070">
+ <body>Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpw7RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpw7BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0CE6480246" name="InformationFlow">
+ <ownedComment xmi:id="_skf_6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0CE6480246">
+ <body>An information flow specifies that one or more information items circulates from its sources to its targets. Information flows require some kind of information channel for transmitting information items from the source to the destination. An information channel is represented in various ways depending on the nature of its sources and targets. It may be represented by connectors, links, associations, or even dependencies. For example, if the source and destination are parts in some composite structure such as a collaboration, then the information channel is likely to be represented by a connector between them. Or, if the source and target are objects (which are a kind of instance specification), they may be represented by a link that joins the two, and so on.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_skf_8hTaEdqZu-3Jy1-uYg" name="sources_and_targets_kind" constrainedElement="_3ADC7B74022D3D0CE6480246">
+ <ownedComment xmi:id="_skf_7hTaEdqZu-3Jy1-uYg" annotatedElement="_skf_8hTaEdqZu-3Jy1-uYg">
+ <body>The sources and targets of the information flow can only be one of the following kind: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition and InstanceSpecification except when its classifier is a relationship (i.e. it represents a link).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skf_8xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.source->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA; oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA; oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA; oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification))) and&#xD;&#xA; (self.target->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA; oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA; oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA; oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA; oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_skf_-xTaEdqZu-3Jy1-uYg" name="must_conform" constrainedElement="_3ADC7B74022D3D0CE6480246">
+ <ownedComment xmi:id="_skf_9xTaEdqZu-3Jy1-uYg" annotatedElement="_skf_-xTaEdqZu-3Jy1-uYg">
+ <body>The sources and targets of the information flow must conform with the sources and targets or conversely the targets and sources of the realization relationships.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skf__BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_skgABBTaEdqZu-3Jy1-uYg" name="convey_classifiers" constrainedElement="_3ADC7B74022D3D0CE6480246">
+ <ownedComment xmi:id="_skgAABTaEdqZu-3Jy1-uYg" annotatedElement="_skgABBTaEdqZu-3Jy1-uYg">
+ <body>An information flow can only convey classifiers that are allowed to represent an information item.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skgABRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.conveyed.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;&#xA; or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DD3DD1A0288" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <generalization xmi:id="_3ADC7B74022D40F9A941022F" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DD3DD3C015B" name="realization" type="_3ADC7B74022D3D514EBA0111" association="_3ADC7B74022D3DD3DD3B0005">
+ <ownedComment xmi:id="_skgAChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DD3DD3C015B">
+ <body>Determines which Relationship will realize the specified flow</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpw4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpw4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DD3DE33021E" name="conveyed" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3DD3DE32010E">
+ <ownedComment xmi:id="_skpw8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DD3DE33021E">
+ <body>Specifies the information items that may circulate on this information flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpw9xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpw9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9A9ED0205" name="informationSource" type="_3ADC7B74022D3CAAECB901B0" subsettedProperty="_3ADC7B74022D3CAAEEF70165" association="_3ADC7B74022D40F9A9EA005C">
+ <ownedComment xmi:id="_skpw_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9A9ED0205">
+ <body>Defines from which source the conveyed InformationItems are initiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpxARTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpxABTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9A9FD02DA" name="informationTarget" type="_3ADC7B74022D3CAAECB901B0" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D40F9A9F8003E">
+ <ownedComment xmi:id="_skpxBxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9A9FD02DA">
+ <body>Defines to which target the conveyed InformationItems are directed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skzh4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skzh4hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9AC2203A2" name="realizingActivityEdge" type="_3ADC7B74022D3B72DA3E0332" association="_3ADC7B74022D40F9AC210378">
+ <ownedComment xmi:id="_skzh6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9AC2203A2">
+ <body>Determines which ActivityEdges will realize the specified flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skzh7RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skzh7BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9AC4C00F9" name="realizingConnector" type="_3ADC7B74022D3B6D7514038E" association="_3ADC7B74022D40F9AC4B00E3">
+ <ownedComment xmi:id="_skzh8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9AC4C00F9">
+ <body>Determines which Connectors will realize the specified flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skzh9xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skzh9hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9AC7A0344" name="realizingMessage" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D40F9AC790389">
+ <ownedComment xmi:id="_skzh_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9AC7A0344">
+ <body>Determines which Messages will realize the specified flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skziARTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skziABTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DD3DD3B0005" name="A_realization_abstraction" memberEnd="_3ADC7B74022D3DD3DD3C015B _3ADC7B74022D3DD3DD3C0179">
+ <ownedEnd xmi:id="_3ADC7B74022D3DD3DD3C0179" name="abstraction" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D3DD3DD3B0005">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpw5hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpw5RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DD3DDBC0046" name="A_represented_representation" memberEnd="_3ADC7B74022D3DD3DDBD0070 _3ADC7B74022D3DD3DDBD00E8">
+ <ownedEnd xmi:id="_3ADC7B74022D3DD3DDBD00E8" name="representation" type="_3ADC7B74022D3D0CE6480229" association="_3ADC7B74022D3DD3DDBC0046">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpw8BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpw7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DD3DE32010E" name="A_conveyed_informationFlow" memberEnd="_3ADC7B74022D3DD3DE33021E _3ADC7B74022D3DD3DE33025A">
+ <ownedEnd xmi:id="_3ADC7B74022D3DD3DE33025A" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D3DD3DE32010E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpw-hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpw-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9A9EA005C" name="A_informationSource_informationFlow" memberEnd="_3ADC7B74022D40F9A9ED0205 _3ADC7B74022D40F9A9ED0255">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9A9ED0255" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D40F9A9EA005C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skpxBBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skpxAxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9A9F8003E" name="A_informationTarget_informationFlow" memberEnd="_3ADC7B74022D40F9A9FD02DA _3ADC7B74022D40F9A9FD030C">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9A9FD030C" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D40F9A9F8003E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skzh5hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skzh5RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9AC210378" name="A_realizingActivityEdge_informationFlow" memberEnd="_3ADC7B74022D40F9AC2203A2 _3ADC7B74022D40F9AC2203B6">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9AC2203B6" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D40F9AC210378">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skzh8BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skzh7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9AC4B00E3" name="A_realizingConnector_informationFlow" memberEnd="_3ADC7B74022D40F9AC4C00F9 _3ADC7B74022D40F9AC4C0103">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9AC4C0103" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D40F9AC4B00E3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skzh-hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skzh-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9AC790389" name="A_realizingMessage_informationFlow" memberEnd="_3ADC7B74022D40F9AC7A0344 _3ADC7B74022D40F9AC7A0346">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9AC7A0346" type="_3ADC7B74022D3D0CE6480246" association="_3ADC7B74022D40F9AC790389">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skziBBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skziAxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CC978D2033F" name="Models">
+ <packageMerge xmi:id="_HQxOMBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D327A5D1E0032" name="Model">
+ <ownedComment xmi:id="_sk8r2RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D327A5D1E0032">
+ <body>A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. This purpose determines what is to be included in the model and what is irrelevant. Thus the model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D33EDB5860140" general="_3ADC7B74022D3CAB1D7E0162"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D2C32860188" name="viewpoint">
+ <ownedComment xmi:id="_sk8r3hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D2C32860188">
+ <body>The name of the viewpoint that is expressed by a model (This name may refer to a profile definition).</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_id5n4WgfEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_id5n4GgfEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E2803C80047" name="Templates">
+ <packageMerge xmi:id="_HQ6_MBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E2803EE016E" name="TemplateSignature">
+ <ownedComment xmi:id="_slGc1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2803EE016E">
+ <body>A template signature bundles the set of formal template parameters for a templated element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_slGc3RTaEdqZu-3Jy1-uYg" name="own_elements" constrainedElement="_3ADC7B74022D3E2803EE016E">
+ <ownedComment xmi:id="_slGc2RTaEdqZu-3Jy1-uYg" annotatedElement="_slGc3RTaEdqZu-3Jy1-uYg">
+ <body>Parameters must own the elements they parameter or those elements must be owned by the element being templated.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slGc3hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E374687007C" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E280538032C" name="parameter" type="_3ADC7B74022D3E28044C000B" isOrdered="true" association="_3ADC7B74022D3E28053702E4">
+ <ownedComment xmi:id="_spIBNRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E280538032C">
+ <body>The ordered set of all formal template parameters for this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spIBORTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spIBOBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E2805700214" name="ownedParameter" type="_3ADC7B74022D3E28044C000B" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187 _3ADC7B74022D3E280538032C" association="_3ADC7B74022D3E28056F01D6">
+ <ownedComment xmi:id="_spIBPRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2805700214">
+ <body>The formal template parameters that are owned by this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spIBQRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spIBQBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E312ADD020F" name="template" type="_3ADC7B74022D3E31269A001C" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3E312ADB0234">
+ <ownedComment xmi:id="_spktMhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E312ADD020F">
+ <body>The element that owns this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spktNhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spktNRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E28042802DA" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_slGc6xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28042802DA">
+ <body>A named element supports using a string expression to specify its name. This allows names of model elements to involve template parameters. The actual name is evaluated from the string expression only when it is sensible to do so (e.g., when a template is bound).</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D6DF029C" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B5390125" name="nameExpression" type="_3ADC7B74022D3E280E5201B9" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D4127B53702D9">
+ <ownedComment xmi:id="_sqAyGRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B5390125">
+ <body>The string expression used to define the name of this named element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqKjAxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqKjAhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E28044C000B" name="TemplateParameter">
+ <ownedComment xmi:id="_slGc8BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28044C000B">
+ <body>A template parameter exposes a parameterable element as a formal template parameter of a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_slPmxBTaEdqZu-3Jy1-uYg" name="must_be_compatible" constrainedElement="_3ADC7B74022D3E28044C000B">
+ <ownedComment xmi:id="_slPmwBTaEdqZu-3Jy1-uYg" annotatedElement="_slPmxBTaEdqZu-3Jy1-uYg">
+ <body>The default must be compatible with the formal template parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slPmxRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>default->notEmpty() implies default->isCompatibleWith(parameteredElement)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E37469C0162" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E280570021E" name="signature" type="_3ADC7B74022D3E2803EE016E" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3E28056F01D6">
+ <ownedComment xmi:id="_spIBQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E280570021E">
+ <body>The template signature that owns this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spIBRxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spIBRhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E3127040105" name="parameteredElement" type="_3ADC7B74022D3E3126A90208" association="_3ADC7B74022D3E3127040104">
+ <ownedComment xmi:id="_spa8NBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E3127040105">
+ <body>The element exposed by this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spa8OBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spa8NxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E33D0820055" name="ownedParameteredElement" type="_3ADC7B74022D3E3126A90208" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187 _3ADC7B74022D3E3127040105" association="_3ADC7B74022D3E33D08001C5">
+ <ownedComment xmi:id="_spktORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E33D0820055">
+ <body>The element that is owned by this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spktPRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spktPBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E376FF60359" name="default" type="_3ADC7B74022D3E3126A90208" association="_3ADC7B74022D3E376FF50221">
+ <ownedComment xmi:id="_spt3FhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E376FF60359">
+ <body>The element that is the default for this formal template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spt3GhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spt3GRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E38C8CD0301" name="ownedDefault" type="_3ADC7B74022D3E3126A90208" aggregation="composite" subsettedProperty="_3ADC7B74022D3E376FF60359 _3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E38C8CB03E5">
+ <ownedComment xmi:id="_spt3HhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E38C8CD0301">
+ <body>The element that is owned by this template parameter for the purpose of providing a default.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spt3IhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spt3IRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E280E5201B9" name="StringExpression">
+ <ownedComment xmi:id="_slPm0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E280E5201B9">
+ <body>An expression that specifies a string value that is derived by concatenating a set of sub string expressions, some of which might be template parameters.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_slPm3BTaEdqZu-3Jy1-uYg" name="operands" constrainedElement="_3ADC7B74022D3E280E5201B9">
+ <ownedComment xmi:id="_slPm2BTaEdqZu-3Jy1-uYg" annotatedElement="_slPm3BTaEdqZu-3Jy1-uYg">
+ <body>All the operands of a StringExpression must be LiteralStrings</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slPm3RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>operand->forAll (op | op.oclIsKindOf (LiteralString))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_slPm5RTaEdqZu-3Jy1-uYg" name="subexpressions" constrainedElement="_3ADC7B74022D3E280E5201B9">
+ <ownedComment xmi:id="_slPm4RTaEdqZu-3Jy1-uYg" annotatedElement="_slPm5RTaEdqZu-3Jy1-uYg">
+ <body>If a StringExpression has sub-expressions, it cannot have operands and vice versa (this avoids the problem of having to
+define a collating sequence between operands and subexpressions).
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slPm5hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E3128C8035D" general="_3ADC7B74022D3E31269A001C"/>
+ <generalization xmi:id="_3ADC7B74022D4127A48D00F7" general="_3ADC7B74022D3E5921EE010A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E31284B03A4" name="subExpression" type="_3ADC7B74022D3E280E5201B9" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E31284902BA">
+ <ownedComment xmi:id="_spktIhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E31284B03A4">
+ <body>The StringExpressions that constitute this StringExpression.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spktJhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spktJRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E31284B03AE" name="owningExpression" type="_3ADC7B74022D3E280E5201B9" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3E31284902BA">
+ <ownedComment xmi:id="_zBhj0BYxEdqs4ZsykdgStg" annotatedElement="_3ADC7B74022D3E31284B03AE">
+ <body>The string expression of which this expression is a substring.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spktKRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spktKBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D430B689101A4" name="stringValue" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDFE009C" bodyCondition="_slZXxRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_slZXwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430B689101A4">
+ <body>The query stringValue() returns the string that concatenates, in order, all the component string literals of all the subexpressions that are part of the StringExpression.&#xD;
+</body>
+ </ownedComment>
+ <ownedRule xmi:id="_slZXxRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D430B689101A4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slZXxhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if subExpression->notEmpty()&#xA;then subExpression->iterate(se; stringValue = ‘| stringValue.concat(se.stringValue()))&#xA;else operand->iterate()(op; stringValue = ‘ | stringValue.concat(op.value))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_slZXxBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E28129D0079" name="TemplateBinding">
+ <ownedComment xmi:id="_slZXyhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28129D0079">
+ <body>A template binding represents a relationship between a templateable element and a template. A template binding specifies the substitutions of actual parameters for the formal parameters of the template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_slZX0xTaEdqZu-3Jy1-uYg" name="parameter_substitution_formal" constrainedElement="_3ADC7B74022D3E28129D0079">
+ <ownedComment xmi:id="_slZXzxTaEdqZu-3Jy1-uYg" annotatedElement="_slZX0xTaEdqZu-3Jy1-uYg">
+ <body>Each parameter substitution must refer to a formal template parameter of the target template signature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slZX1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>parameterSubstitution->forAll(b | template.parameter->includes(b.formal))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_slZX3BTaEdqZu-3Jy1-uYg" name="one_parameter_substitution" constrainedElement="_3ADC7B74022D3E28129D0079">
+ <ownedComment xmi:id="_slZX2BTaEdqZu-3Jy1-uYg" annotatedElement="_slZX3BTaEdqZu-3Jy1-uYg">
+ <body>A binding contains at most one parameter substitution for each formal template parameter of the target template signature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slZX3RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E37760F0336" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E28148101E8" name="boundElement" type="_3ADC7B74022D3E31269A001C" subsettedProperty="_3ADC7B74022D3CAAEEA60189 _3ADC7B74022D3CAAEEF70165" association="_3ADC7B74022D3E28148002B8">
+ <ownedComment xmi:id="_spIBURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28148101E8">
+ <body>The element that is bound by this binding.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spRLIxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spRLIhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E2814DA0376" name="signature" type="_3ADC7B74022D3E2803EE016E" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3E2814D90311">
+ <ownedComment xmi:id="_spRLNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2814DA0376">
+ <body>The template signature for the template that is the target of the binding.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spRLOBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spRLNxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E28163A023C" name="parameterSubstitution" type="_3ADC7B74022D3E2812AA028B" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E28163702F6">
+ <ownedComment xmi:id="_spa8IhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28163A023C">
+ <body>The parameter substitutions owned by this template binding.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spa8JhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spa8JRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E2812AA028B" name="TemplateParameterSubstitution">
+ <ownedComment xmi:id="_slZX4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2812AA028B">
+ <body>A template parameter substitution relates the actual parameter(s) to a formal template parameter as part of a template binding.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sljIwxTaEdqZu-3Jy1-uYg" name="must_be_compatible" constrainedElement="_3ADC7B74022D3E2812AA028B">
+ <ownedComment xmi:id="_slZX5hTaEdqZu-3Jy1-uYg" annotatedElement="_sljIwxTaEdqZu-3Jy1-uYg">
+ <body>The actual parameter must be compatible with the formal template parameter, e.g. the actual parameter for a class template parameter must be a class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sljIxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E37756703DE" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E28149400A4" name="formal" type="_3ADC7B74022D3E28044C000B" association="_3ADC7B74022D3E28149300C1">
+ <ownedComment xmi:id="_spRLLBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28149400A4">
+ <body>The formal template parameter that is associated with this substitution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spRLMBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spRLLxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E28163A023E" name="templateBinding" type="_3ADC7B74022D3E28129D0079" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3E28163702F6">
+ <ownedComment xmi:id="_U9eecBWOEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3E28163A023E">
+ <body>The optional bindings from this element to templates.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spa8KRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spa8KBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E28148D02A3" name="actual" type="_3ADC7B74022D3E3126A90208" association="_3ADC7B74022D3E28148C03B0">
+ <ownedComment xmi:id="_spa8LBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28148D02A3">
+ <body>The elements that are the actual parameters for this substitution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spa8MBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spa8LxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E38D25F001F" name="ownedActual" type="_3ADC7B74022D3E3126A90208" aggregation="composite" subsettedProperty="_3ADC7B74022D3E28148D02A3 _3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E38D25D0347">
+ <ownedComment xmi:id="_sp3oFBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E38D25F001F">
+ <body>The actual parameters that are owned by this substitution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oGBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oFxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E31269A001C" name="TemplateableElement" isAbstract="true">
+ <ownedComment xmi:id="_sljIyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E31269A001C">
+ <body>A templateable element is an element that can optionally be defined as a template and bound to other templates.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E37450F002B" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E28148101FC" name="templateBinding" type="_3ADC7B74022D3E28129D0079" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E28148002B8">
+ <ownedComment xmi:id="_spRLJRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E28148101FC">
+ <body>The optional bindings from this element to templates.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spRLKRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spRLKBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E312ADD0205" name="ownedTemplateSignature" type="_3ADC7B74022D3E2803EE016E" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E312ADB0234">
+ <ownedComment xmi:id="_spktLBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E312ADD0205">
+ <body>The optional template signature specifying the formal template parameters.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spktMBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spktLxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300AF550242" name="parameterableElements" isQuery="true" bodyCondition="_sljI0RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sljIzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300AF550242">
+ <body>The query parameterableElements() returns the set of elements that may be used as the parametered elements for a template parameter of this templateable element. By default, this set includes all the owned elements. Subclasses may override this operation if they choose to restrict the set of parameterable elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sljI0RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300AF550242">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sljI0hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = allOwnedElements->select(oclIsKindOf(ParameterableElement))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sljI0BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3E3126A90208" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HREwMRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HREwMBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300AF6D031C" name="isTemplate" isQuery="true" bodyCondition="_sljI2hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sljI1hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300AF6D031C">
+ <body>The query isTemplate() returns whether this templateable element is actually a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sljI2hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300AF6D031C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sljI2xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedTemplateSignature->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sljI2RTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E3126A90208" name="ParameterableElement" isAbstract="true">
+ <ownedComment xmi:id="_sljI3xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E3126A90208">
+ <body>A parameterable element is an element that can be exposed as a formal template parameter for a template, or specified as an actual parameter in a binding of a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E3746AB03BD" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E3127040106" name="templateParameter" type="_3ADC7B74022D3E28044C000B" association="_3ADC7B74022D3E3127040104">
+ <ownedComment xmi:id="_spa8OhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E3127040106">
+ <body>The template parameter that exposes this element as a formal parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spa8PhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spa8PRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E33D0820069" name="owningTemplateParameter" type="_3ADC7B74022D3E28044C000B" subsettedProperty="_3ADC7B74022D3CAAEEA60189 _3ADC7B74022D3E3127040106" association="_3ADC7B74022D3E33D08001C5">
+ <ownedComment xmi:id="_spktPxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E33D0820069">
+ <body>The formal template parameter that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_spt3ExTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_spt3EhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300AEC9029F" name="isCompatibleWith" isQuery="true" bodyCondition="_slsStBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sljI5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300AEC9029F">
+ <body>The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. Subclasses should override this operation to specify different compatibility constraints.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_slsStBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300AEC9029F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_slsStRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = p->oclIsKindOf(self.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_slsSshTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B6384001E" name="p" type="_3ADC7B74022D3E3126A90208"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300AEF60222" name="isTemplateParameter" isQuery="true" bodyCondition="_soYaUxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_slsSuRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300AEF60222">
+ <body>The query isTemplateParameter() determines if this parameterable element is exposed as a formal template parameter.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_soYaUxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300AEF60222">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_soYaVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = templateParameter->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_soYaUhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E33D1FA011E" name="Property">
+ <ownedComment xmi:id="_soYaWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E33D1FA011E">
+ <body>Property specializes ParameterableElement to specify that a property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sohkSRTaEdqZu-3Jy1-uYg" name="binding_to_attribute" constrainedElement="_3ADC7B74022D3E33D1FA011E">
+ <ownedComment xmi:id="_sohkRRTaEdqZu-3Jy1-uYg" annotatedElement="_sohkSRTaEdqZu-3Jy1-uYg">
+ <body>A binding of a property template parameter representing an attribute must be to an attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sohkShTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(isAttribute(self) and (templateParameterSubstitution->notEmpty())&#xD;&#xA; implies (templateParameterSubstitution->forAll(ts | isAttribute(ts.formal)))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E33F5F100C8" general="_3ADC7B74022D3E3126A90208"/>
+ <generalization xmi:id="_3ADC7B74022D3E33F5F7009F" general="_3ADC7B74022D3E31269A001C"/>
+ <ownedOperation xmi:id="_aNBzYGdaEdqCCpdUvbQY5w" name="isCompatibleWith" isQuery="true" redefinedOperation="_3ADC7B74022D4300AEC9029F" bodyCondition="_aNBzZGdaEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_aNBzYWdaEdqCCpdUvbQY5w" annotatedElement="_aNBzYGdaEdqCCpdUvbQY5w">
+ <body>The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for properties, the type must be conformant with the type of the specified parameterable element.&#xD;
+</body>
+ </ownedComment>
+ <ownedRule xmi:id="_aNBzZGdaEdqCCpdUvbQY5w" name="spec" constrainedElement="_aNBzYGdaEdqCCpdUvbQY5w">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_aNBzZWdaEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_aNBzZmdaEdqCCpdUvbQY5w" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aNBzZ2daEdqCCpdUvbQY5w" name="p" type="_3ADC7B74022D3E3126A90208"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E33F60301F0" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_sohkThTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E33F60301F0">
+ <body>ValueSpecification specializes ParameterableElement to specify that a value specification can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E33F6170221" general="_3ADC7B74022D3E3126A90208"/>
+ <ownedOperation xmi:id="_3ADC7B74022D430B6A2C0385" name="isCompatibleWith" isQuery="true" redefinedOperation="_3ADC7B74022D4300AEC9029F" bodyCondition="_sorVSRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sorVRBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430B6A2C0385">
+ <body>The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for ValueSpecification, the type must be conformant with the type of the specified parameterable element.&#xD;
+</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sorVSRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D430B6A2C0385">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sorVShTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sorVRxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B6A5C02C6" name="p" type="_3ADC7B74022D3E3126A90208"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E39AEDB0021" name="Operation">
+ <ownedComment xmi:id="_sorVThTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E39AEDB0021">
+ <body>Operation specializes TemplateableElement in order to support specification of template operations and bound operations. Operation specializes ParameterableElement to specify that an operation can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E39AEEC03BE" general="_3ADC7B74022D3E3126A90208"/>
+ <generalization xmi:id="_3ADC7B74022D3E822F320081" general="_3ADC7B74022D3E31269A001C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B71202BE" name="templateParameter" type="_3ADC7B74022D3E39B0960190" redefinedProperty="_3ADC7B74022D3E3127040106" association="_3ADC7B74022D4127B7110076">
+ <ownedComment xmi:id="_sqKjCRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B71202BE">
+ <body>The template parameter that exposes this element as a formal parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqKjDRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqKjDBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E39B0960190" name="OperationTemplateParameter">
+ <ownedComment xmi:id="_sorVVBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E39B0960190">
+ <body>An operation template parameter exposes an operation as a formal parameter for a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E39B0AA003A" general="_3ADC7B74022D3E28044C000B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B71202C9" name="parameteredElement" type="_3ADC7B74022D3E39AEDB0021" redefinedProperty="_3ADC7B74022D3E3127040105" association="_3ADC7B74022D4127B7110076">
+ <ownedComment xmi:id="_sqKjDxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B71202C9">
+ <body>The operation for this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqKjExTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqKjEhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E4CDAC402EC" name="PackageableElement" isAbstract="true">
+ <ownedComment xmi:id="_sorVWRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E4CDAC402EC">
+ <body>Packageable elements are able to serve as a template parameter.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E4CDB02024B" general="_3ADC7B74022D3E3126A90208"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E4B543E01A9" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_sorVXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E4B543E01A9">
+ <body>Classifier is defined to be a kind of templateable element so that a classifier can be parameterized. It is also defined to be a kind of parameterable element so that a classifier can be a formal template parameter.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E4B54A400BF" general="_3ADC7B74022D3E31269A001C"/>
+ <generalization xmi:id="_3ADC7B74022D3E4B54A7002E" general="_3ADC7B74022D3E3126A90208"/>
+ <generalization xmi:id="_3ADC7B74022D41B0D5880054" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127AF8B008F" name="ownedTemplateSignature" type="_3ADC7B74022D3E377D55006C" aggregation="composite" redefinedProperty="_3ADC7B74022D3E312ADD0205" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D4127AF8A0032">
+ <ownedComment xmi:id="_sp3oHhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127AF8B008F">
+ <body>The optional template signature specifying the formal template parameters.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oIhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oIRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B1860395" name="templateParameter" type="_3ADC7B74022D3E37943B026A" redefinedProperty="_3ADC7B74022D3E3127040106" association="_3ADC7B74022D4127B185008E">
+ <ownedComment xmi:id="_sqAyDBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B1860395">
+ <body>The template parameter that exposes this element as a formal parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqAyEBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqAyDxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300B066002E" name="isTemplate" isQuery="true" redefinedOperation="_3ADC7B74022D4300AF6D031C" bodyCondition="_so1GShTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_so1GRhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300B066002E">
+ <body>The query isTemplate() returns whether this templateable element is actually a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_so1GShTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300B066002E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_so1GSxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = oclAsType(TemplatableElement).isTemplate() or general->exists(g | g.isTemplate())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_so1GSRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E37943B026A" name="ClassifierTemplateParameter">
+ <ownedComment xmi:id="_so1GTxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E37943B026A">
+ <body>A classifier template parameter exposes a classifier as a formal template parameter.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_k1-_wDcuEdqq1tCaRkgBQQ" name="has_constraining_classifier" constrainedElement="_3ADC7B74022D3E37943B026A">
+ <ownedComment xmi:id="_xxS_oDcuEdqq1tCaRkgBQQ" annotatedElement="_k1-_wDcuEdqq1tCaRkgBQQ">
+ <body>If &quot;allowSubstitutable&quot; is true, then there must be a constrainingClassifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_k1-_wTcuEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>allowSubstitutable implies constrainingClassifier->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E37944C0192" general="_3ADC7B74022D3E28044C000B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E3EDEA50241" name="allowSubstitutable">
+ <ownedComment xmi:id="_so1GVBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E3EDEA50241">
+ <body>Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HRN6IBTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B1860397" name="parameteredElement" type="_3ADC7B74022D3E4B543E01A9" redefinedProperty="_3ADC7B74022D3E3127040105" association="_3ADC7B74022D4127B185008E">
+ <ownedComment xmi:id="_sqAyEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B1860397">
+ <body>The parameterable classifier for this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqAyFhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqAyFRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_am5yETctEdqq1tCaRkgBQQ" name="defaultClassifier" type="_3ADC7B74022D3E4B543E01A9" association="_am5yEDctEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_j5VxUDcuEdqq1tCaRkgBQQ" annotatedElement="_am5yETctEdqq1tCaRkgBQQ">
+ <body>The classifier that is used by default if no argument is provided during template binding. If this property is empty, then there is no default.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_am5yFDctEdqq1tCaRkgBQQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_am5yEzctEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iCsOMTctEdqq1tCaRkgBQQ" name="constrainingClassifier" type="_3ADC7B74022D3E4B543E01A9" association="_iCsOMDctEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_Z_mFADcuEdqq1tCaRkgBQQ" annotatedElement="_iCsOMTctEdqq1tCaRkgBQQ">
+ <body>The classifier that constrains the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any classifier that is compatible with this constraining classifier can be substituted, otherwise it must be either this classifier or one of its subclasses. If this property is empty, there are no constraints on the classifier that can be used as an argument.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iCsONDctEdqq1tCaRkgBQQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iCsOMzctEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E377D55006C" name="RedefinableTemplateSignature">
+ <ownedComment xmi:id="_so1GWRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E377D55006C">
+ <body>A redefinable template signature supports the addition of formal template parameters in a specialization of a template classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_so-QMxTaEdqZu-3Jy1-uYg" name="inherited_parameters" constrainedElement="_3ADC7B74022D3E377D55006C">
+ <ownedComment xmi:id="_so1GXxTaEdqZu-3Jy1-uYg" annotatedElement="_so-QMxTaEdqZu-3Jy1-uYg">
+ <body>The inherited parameters are the parameters of the extended template signature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_so-QNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E377D6402D0" general="_3ADC7B74022D3CAB007101D7"/>
+ <generalization xmi:id="_3ADC7B74022D3E377D67036B" general="_3ADC7B74022D3E2803EE016E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127AF8B0099" name="classifier" type="_3ADC7B74022D3E4B543E01A9" subsettedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D4127AF8A0032">
+ <ownedComment xmi:id="_sp3oJBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127AF8B0099">
+ <body>The classifier that owns this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oKBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oJxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B0B40070" name="extendedSignature" type="_3ADC7B74022D3E377D55006C" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D4127B0AE005D">
+ <ownedComment xmi:id="_sp3oKxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B0B40070">
+ <body>The template signature that is extended by this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oLxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oLhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B15000BD" name="inheritedParameter" type="_3ADC7B74022D3E28044C000B" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3E280538032C" association="_3ADC7B74022D4127B14F006A">
+ <ownedComment xmi:id="_sqAyAhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B15000BD">
+ <body>The formal template parameters of the extendedSignature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqAyBhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqAyBRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300B0AE02CE" name="isConsistentWith" isQuery="true" precondition="_so-QPRTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_so-QPxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_so-QOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300B0AE02CE">
+ <body>The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, since redefinition only adds new formal parameters.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_so-QPRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300B0AE02CE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_so-QPhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_so-QPxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300B0AE02CE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_so-QQBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = redefinee.oclIsKindOf(RedefineableTemplateSignature)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_so-QOxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B6420025D" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E4900540335" name="ConnectableElement" isAbstract="true">
+ <ownedComment xmi:id="_so-QRBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E4900540335">
+ <body>A connectable element may be exposed as a connectable element template parameter.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E4900700187" general="_3ADC7B74022D3E3126A90208"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B7C902D3" name="templateParameter" type="_3ADC7B74022D3E497E54039B" redefinedProperty="_3ADC7B74022D3E3127040106" association="_3ADC7B74022D4127B7C8012A">
+ <ownedComment xmi:id="_sqKjFhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B7C902D3">
+ <body>The ConnectableElementTemplateParameter for this ConnectableElement parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqKjGhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqKjGRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E497E54039B" name="ConnectableElementTemplateParameter">
+ <ownedComment xmi:id="_so-QSRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E497E54039B">
+ <body>A connectable element template parameter exposes a connectable element as a formal parameter for a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E497EC70183" general="_3ADC7B74022D3E28044C000B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4127B7C902D5" name="parameteredElement" type="_3ADC7B74022D3E4900540335" redefinedProperty="_3ADC7B74022D3E3127040105" association="_3ADC7B74022D4127B7C8012A">
+ <ownedComment xmi:id="_sqKjHBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127B7C902D5">
+ <body>The ConnectableElement for this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqKjIBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqKjHxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D4127ADC70386" name="Package">
+ <ownedComment xmi:id="_so-QThTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4127ADC70386">
+ <body>Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4127B26103DB" general="_3ADC7B74022D3E31269A001C"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E28053702E4" name="A_parameter_templateSignature" memberEnd="_3ADC7B74022D3E280538032C _3ADC7B74022D3E2805380336">
+ <ownedEnd xmi:id="_3ADC7B74022D3E2805380336" type="_3ADC7B74022D3E2803EE016E" association="_3ADC7B74022D3E28053702E4">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0HNScU_CEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0HNScE_CEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E28056F01D6" name="A_ownedParameter_signature" memberEnd="_3ADC7B74022D3E2805700214 _3ADC7B74022D3E280570021E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E28148002B8" name="A_boundElement_templateBinding" memberEnd="_3ADC7B74022D3E28148101E8 _3ADC7B74022D3E28148101FC"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E28149300C1" name="A_formal_templateParameterSubstitution" memberEnd="_3ADC7B74022D3E28149400A4 _3ADC7B74022D3E28149400AE">
+ <ownedEnd xmi:id="_3ADC7B74022D3E28149400AE" type="_3ADC7B74022D3E2812AA028B" association="_3ADC7B74022D3E28149300C1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K-8fMU_DEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K-8fME_DEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E2814D90311" name="A_signature_templateBinding" memberEnd="_3ADC7B74022D3E2814DA0376 _3ADC7B74022D3E2814DA0380">
+ <ownedEnd xmi:id="_3ADC7B74022D3E2814DA0380" type="_3ADC7B74022D3E28129D0079" association="_3ADC7B74022D3E2814D90311">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PhOXkE_DEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PhEmkE_DEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E28163702F6" name="A_parameterSubstitution_templateBinding" memberEnd="_3ADC7B74022D3E28163A023C _3ADC7B74022D3E28163A023E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E28148C03B0" name="A_actual_templateParameterSubstitution" memberEnd="_3ADC7B74022D3E28148D02A3 _3ADC7B74022D3E28148D02AD">
+ <ownedEnd xmi:id="_3ADC7B74022D3E28148D02AD" type="_3ADC7B74022D3E2812AA028B" association="_3ADC7B74022D3E28148C03B0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NeiHEU_DEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NeiHEE_DEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E3127040104" name="A_parameteredElement_templateParameter" memberEnd="_3ADC7B74022D3E3127040105 _3ADC7B74022D3E3127040106"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E31284902BA" name="A_subExpression_owningExpression" memberEnd="_3ADC7B74022D3E31284B03A4 _3ADC7B74022D3E31284B03AE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E312ADB0234" name="A_ownedTemplateSignature_template" memberEnd="_3ADC7B74022D3E312ADD0205 _3ADC7B74022D3E312ADD020F"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E33D08001C5" name="A_ownedParameteredElement_owningTemplateParameter" memberEnd="_3ADC7B74022D3E33D0820055 _3ADC7B74022D3E33D0820069"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E376FF50221" name="A_default_templateParameter" memberEnd="_3ADC7B74022D3E376FF60359 _3ADC7B74022D3E376FF60377">
+ <ownedEnd xmi:id="_3ADC7B74022D3E376FF60377" type="_3ADC7B74022D3E28044C000B" association="_3ADC7B74022D3E376FF50221">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bUqIU_CEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bUqIE_CEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E38C8CB03E5" name="A_ownedDefault_templateParameter" memberEnd="_3ADC7B74022D3E38C8CD0301 _3ADC7B74022D3E38C8CD0315">
+ <ownedEnd xmi:id="_3ADC7B74022D3E38C8CD0315" type="_3ADC7B74022D3E28044C000B" association="_3ADC7B74022D3E38C8CB03E5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oERTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oEBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E38D25D0347" name="A_ownedActual_templateParameterSubstitution" memberEnd="_3ADC7B74022D3E38D25F001F _3ADC7B74022D3E38D25F003D">
+ <ownedEnd xmi:id="_3ADC7B74022D3E38D25F003D" type="_3ADC7B74022D3E2812AA028B" association="_3ADC7B74022D3E38D25D0347">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oGxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oGhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127AF8A0032" name="A_ownedTemplateSignature_classifier" memberEnd="_3ADC7B74022D4127AF8B008F _3ADC7B74022D4127AF8B0099"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127B0AE005D" name="A_extendedSignature_redefinableTemplateSignature" memberEnd="_3ADC7B74022D4127B0B40070 _3ADC7B74022D4127B0B40072">
+ <ownedEnd xmi:id="_3ADC7B74022D4127B0B40072" type="_3ADC7B74022D3E377D55006C" association="_3ADC7B74022D4127B0AE005D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sp3oMhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sp3oMRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127B14F006A" name="A_inheritedParameter_redefinableTemplateSignature" memberEnd="_3ADC7B74022D4127B15000BD _3ADC7B74022D4127B15000C7">
+ <ownedEnd xmi:id="_3ADC7B74022D4127B15000C7" type="_3ADC7B74022D3E377D55006C" association="_3ADC7B74022D4127B14F006A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_opgDkU_DEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_opgDkE_DEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127B185008E" name="A_templateParameter_parameteredElement" memberEnd="_3ADC7B74022D4127B1860395 _3ADC7B74022D4127B1860397"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127B53702D9" name="A_nameExpression_namedElement" memberEnd="_3ADC7B74022D4127B5390125 _3ADC7B74022D4127B5390130">
+ <ownedEnd xmi:id="_3ADC7B74022D4127B5390130" type="_3ADC7B74022D3E28042802DA" association="_3ADC7B74022D4127B53702D9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sqKjBhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sqKjBRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127B7110076" name="A_templateParameter_parameteredElement" memberEnd="_3ADC7B74022D4127B71202BE _3ADC7B74022D4127B71202C9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4127B7C8012A" name="A_templateParameter_parameteredElement" memberEnd="_3ADC7B74022D4127B7C902D3 _3ADC7B74022D4127B7C902D5"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_am5yEDctEdqq1tCaRkgBQQ" name="A_defaultClassifier_classifierTemplateParameter" memberEnd="_am5yETctEdqq1tCaRkgBQQ _am5yEjctEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_am5yEjctEdqq1tCaRkgBQQ" type="_3ADC7B74022D3E37943B026A" association="_am5yEDctEdqq1tCaRkgBQQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_iCsOMDctEdqq1tCaRkgBQQ" name="A_constrainingClassifier_classifierTemplateParameter" memberEnd="_iCsOMTctEdqq1tCaRkgBQQ _iCsOMjctEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_iCsOMjctEdqq1tCaRkgBQQ" type="_3ADC7B74022D3E37943B026A" association="_iCsOMDctEdqq1tCaRkgBQQ"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D552D4C038C" name="Classes">
+ <packageImport xmi:id="_Y9WykD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D5535770162"/>
+ <packageImport xmi:id="_hUA7gD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D1281210157"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FD9B900CF" name="Kernel">
+ <packageMerge xmi:id="_G5O38BTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3DE692AD00C7"/>
+ </packageMerge>
+ <packageMerge xmi:id="_rnHcsGf_EdqfYrlcy8iLFA">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3C9FFCC70354"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAEC0D0176" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_sJrsJxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAEC0D0176">
+ <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sJrsLxTaEdqZu-3Jy1-uYg" name="not_own_self" constrainedElement="_3ADC7B74022D3CAAEC0D0176">
+ <ownedComment xmi:id="_sJrsKxTaEdqZu-3Jy1-uYg" annotatedElement="_sJrsLxTaEdqZu-3Jy1-uYg">
+ <body>An element may not directly or indirectly own itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJrsMBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allOwnedElements()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sJ1dIxTaEdqZu-3Jy1-uYg" name="has_owner" constrainedElement="_3ADC7B74022D3CAAEC0D0176">
+ <ownedComment xmi:id="_sJrsNBTaEdqZu-3Jy1-uYg" annotatedElement="_sJ1dIxTaEdqZu-3Jy1-uYg">
+ <body>Elements that must be owned must have an owner.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ1dJBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.mustBeOwned() implies owner->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAEEA60187" name="ownedElement" type="_3ADC7B74022D3CAAEC0D0176" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="_3ADC7B74022D3CAAEEA4038D">
+ <ownedComment xmi:id="_sQ_OChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAEEA60187">
+ <body>The Elements owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQ_ODhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sQ_ODRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAEEA60189" name="owner" type="_3ADC7B74022D3CAAEC0D0176" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CAAEEA4038D">
+ <ownedComment xmi:id="_sQ_OEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAEEA60189">
+ <body>The Element that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sQ_OFhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sQ_OFRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB1F220009C" name="ownedComment" type="_3ADC7B74022D3CAC07C901D9" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CB1F21F024A">
+ <ownedComment xmi:id="_sUQkexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB1F220009C">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUQkfxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUQkfhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CF9800EA" name="allOwnedElements" isQuery="true" bodyCondition="_sJ1dLBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sJ1dKBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CF9800EA">
+ <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sJ1dLBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CF9800EA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ1dLRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sJ1dKxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAEC0D0176" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G5O38hTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G5O38RTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CFAE0128" name="mustBeOwned" isQuery="true" bodyCondition="_sJ1dNRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sJ1dMRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CFAE0128">
+ <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="_sJ1dNRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CFAE0128">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sJ1dNhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sJ1dNBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAC07C901D9" name="Comment">
+ <ownedComment xmi:id="_sJ1dOhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC07C901D9">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB1F2690142" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAC07D800D7" name="body">
+ <ownedComment xmi:id="_sJ1dPxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC07D800D7">
+ <body>Specifies a string that is the comment.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_temEQWgWEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_temEQGgWEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAC0CBA02D3" name="annotatedElement" type="_3ADC7B74022D3CAAEC0D0176" association="_3ADC7B74022D3CAC0CBA00DE">
+ <ownedComment xmi:id="_sUQkcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC0CBA02D3">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUQkdxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUQkdhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAEC1902BE" name="DirectedRelationship" isAbstract="true">
+ <ownedComment xmi:id="_sJ1dQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAEC1902BE">
+ <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="_3ADC7B74022D3D514F5D0134" general="_3ADC7B74022D3D514EBA0111"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAEEF70165" name="source" type="_3ADC7B74022D3CAAEC0D0176" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3D514F6E0106" association="_3ADC7B74022D3CAAEEF60308">
+ <ownedComment xmi:id="_sRIX9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAEEF70165">
+ <body>Specifies the sources of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRIX-BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sRIX9xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAEF470200" name="target" type="_3ADC7B74022D3CAAEC0D0176" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3D514F6E0106" association="_3ADC7B74022D3CAAEF46037B">
+ <ownedComment xmi:id="_sRIX_hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAEF470200">
+ <body>Specifies the targets of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRIYAhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sRIYARTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAECB901B0" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_sJ-nFBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAECB901B0">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sJ-nHRTaEdqZu-3Jy1-uYg" name="has_no_qualified_name" constrainedElement="_3ADC7B74022D3CAAECB901B0">
+ <ownedComment xmi:id="_sJ-nGRTaEdqZu-3Jy1-uYg" annotatedElement="_sJ-nHRTaEdqZu-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="_sJ-nHhTaEdqZu-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="_sKIYFxTaEdqZu-3Jy1-uYg" name="has_qualified_name" constrainedElement="_3ADC7B74022D3CAAECB901B0">
+ <ownedComment xmi:id="_sKIYExTaEdqZu-3Jy1-uYg" annotatedElement="_sKIYFxTaEdqZu-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="_sKIYGBTaEdqZu-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="_sKIYIBTaEdqZu-3Jy1-uYg" name="visibility_needs_ownership" constrainedElement="_3ADC7B74022D3CAAECB901B0">
+ <ownedComment xmi:id="_sKIYHBTaEdqZu-3Jy1-uYg" annotatedElement="_sKIYIBTaEdqZu-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="_sKIYIRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>namespace->isEmpty() implies visibility->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CAAEFE5033E" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF00E0351" name="name">
+ <ownedComment xmi:id="_sKbTFBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF00E0351">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sKbTGBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sKbTFxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF02203B4" name="visibility" type="_3ADC7B74022D3CAAF25600F8">
+ <ownedComment xmi:id="_sKbTGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF02203B4">
+ <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="_sKbTHhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sKbTHRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF0300219" name="qualifiedName" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_sKlEABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF0300219">
+ <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>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sKlEBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sKlEAxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF0B00232" name="namespace" type="_3ADC7B74022D3CAAECC502DA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CAAF0AF00E6">
+ <ownedComment xmi:id="_sVwZQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF0B00232">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVwZRRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVwZRBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D6DE038A" name="allNamespaces" isQuery="true" bodyCondition="_sKRiARTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sKIYJRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D6DE038A">
+ <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sKRiARTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D6DE038A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKRiAhTaEdqZu-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="_sKRiABTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECC502DA" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G5YB4RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G5YB4BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D6F402BF" name="isDistinguishableFrom" isQuery="true" bodyCondition="_sKbTBhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sKbTABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D6F402BF">
+ <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="_sKbTBhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D6F402BF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKbTBxTaEdqZu-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="_sKbTAxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B8055009E" name="n" type="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedParameter xmi:id="_3ADC7B74022D430B806103BC" name="ns" type="_3ADC7B74022D3CAAECC502DA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D70C03A9" name="separator" isQuery="true" bodyCondition="_sKbTDxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sKbTCxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D70C03A9">
+ <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sKbTDxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D70C03A9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKbTEBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = '::'</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sKbTDhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB1F3A0024D" name="PackageableElement" isAbstract="true">
+ <ownedComment xmi:id="_sKlECBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB1F3A0024D">
+ <body>A packageable element indicates a named element that may be owned directly by a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB1F3C003D0" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBC45BE01CA" name="visibility" type="_3ADC7B74022D3CAAF25600F8" redefinedProperty="_3ADC7B74022D3CAAF02203B4">
+ <ownedComment xmi:id="_sKuN9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBC45BE01CA">
+ <body>Indicates that packageable elements must always have a visibility, i.e., visibility is not optional.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_R9Ch0GgYEdqfYrlcy8iLFA" type="_3ADC7B74022D3CAAF25600F8" instance="_3ADC7B74022D3CAAF268020C"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAF87D0107" name="OpaqueExpression">
+ <ownedComment xmi:id="_sK3-8hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF87D0107">
+ <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="_7a71wDdiEdqq1tCaRkgBQQ" name="language_body_size" constrainedElement="_3ADC7B74022D3CAAF87D0107">
+ <ownedComment xmi:id="_LXEiUDdjEdqq1tCaRkgBQQ" annotatedElement="_7a71wDdiEdqq1tCaRkgBQQ">
+ <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="_7a71wTdiEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>language->notEmpty() implies (body->size() = language->size())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3D0254F702D3" general="_3ADC7B74022D3D0254AB023D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF34430265" name="body" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_sXYxBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF34430265">
+ <body>The text of the expression, possibly in multiple languages.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXih8xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXih8hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF3484006A" name="language" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_sXih-RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF3484006A">
+ <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>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXih_RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXih_BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D7E403D8" name="value" isQuery="true" precondition="_sK3--xTaEdqZu-3Jy1-uYg" bodyCondition="_zCLvIDXCEdqtg44TD97UDQ">
+ <ownedComment xmi:id="_sK3-9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D7E403D8">
+ <body>The query value() gives an integer value for an expression intended to produce one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sK3--xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D7E403D8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sK3-_BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.isIntegral()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_zCLvIDXCEdqtg44TD97UDQ" name="spec" constrainedElement="_3ADC7B74022D4300D7E403D8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_zCLvITXCEdqtg44TD97UDQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sK3--hTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D7F3001F" name="isIntegral" isQuery="true" bodyCondition="_sK3_BBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sK3_ABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D7F3001F">
+ <body>The query isIntegral() tells whether an expression is intended to produce an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sK3_BBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D7F3001F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sK3_BRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sK3_AxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D7FA038A" name="isPositive" isQuery="true" precondition="_sK3_DRTaEdqZu-3Jy1-uYg" bodyCondition="_tf1g4DXCEdqtg44TD97UDQ">
+ <ownedComment xmi:id="_sK3_CRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D7FA038A">
+ <body>The query isPositive() tells whether an integer expression has a positive value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sK3_DRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D7FA038A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sK3_DhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.isIntegral()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_tf1g4DXCEdqtg44TD97UDQ" name="spec" constrainedElement="_3ADC7B74022D4300D7FA038A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_tf_R4DXCEdqtg44TD97UDQ">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sK3_DBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D7FE002E" name="isNonNegative" isQuery="true" precondition="_sK3_FhTaEdqZu-3Jy1-uYg" bodyCondition="_sK3_GBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sK3_EhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D7FE002E">
+ <body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sK3_FhTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D7FE002E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sK3_FxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.isIntegral()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sK3_GBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D7FE002E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sK3_GRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sK3_FRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5DE0E024E" name="LiteralSpecification" isAbstract="true">
+ <ownedComment xmi:id="_sLBI4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DE0E024E">
+ <body>A literal specification identifies a literal constant being modeled.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D0254FB0116" general="_3ADC7B74022D3D0254AB023D"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5DE2F0198" name="LiteralInteger">
+ <ownedComment xmi:id="_sLBI6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DE2F0198">
+ <body>A literal integer is a specification of an integer value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5DED001CB" general="_3ADC7B74022D3CB5DE0E024E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5DE860048" name="value">
+ <ownedComment xmi:id="_sLUq4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DE860048">
+ <body>The specified Integer value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_ZZaP8GgcEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D09F030D" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDB2005D" bodyCondition="_sLBI8RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLBI7RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D09F030D">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLBI8RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D09F030D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLBI8hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLBI8BTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D0DE02CE" name="integerValue" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDCF00EA" bodyCondition="_sLK55BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLK54BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D0DE02CE">
+ <body>The query integerValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLK55BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D0DE02CE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLK55RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLK54xTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5DE47039B" name="LiteralString">
+ <ownedComment xmi:id="_sLUq5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DE47039B">
+ <body>A literal string is a specification of a string value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5DED60242" general="_3ADC7B74022D3CB5DE0E024E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5DEA0029E" name="value">
+ <ownedComment xmi:id="_sLd00BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DEA0029E">
+ <body>The specified String value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B5w5MWgdEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B5w5MGgdEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D0A40261" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDB2005D" bodyCondition="_sLUq7RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLUq6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D0A40261">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLUq7RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D0A40261">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLUq7hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLUq7BTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D18E005D" name="stringValue" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDFE009C" bodyCondition="_sLUq9hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLUq8hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D18E005D">
+ <body>The query stringValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLUq9hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D18E005D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLUq9xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLUq9RTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5DE390142" name="LiteralBoolean">
+ <ownedComment xmi:id="_sLd01BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DE390142">
+ <body>A literal Boolean is a specification of a Boolean value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5DEDD029C" general="_3ADC7B74022D3CB5DE0E024E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5DEB10375" name="value">
+ <ownedComment xmi:id="_sLd06xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DEB10375">
+ <body>The specified Boolean value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_JTcR8GgcEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D09402EE" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDB2005D" bodyCondition="_sLd03RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLd02RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D09402EE">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLd03RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D09402EE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLd03hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLd03BTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D0BC0167" name="booleanValue" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDE7029F" bodyCondition="_sLd05hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLd04hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D0BC0167">
+ <body>The query booleanValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLd05hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D0BC0167">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLd05xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLd05RTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5DE520102" name="LiteralNull">
+ <ownedComment xmi:id="_sLd07xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5DE520102">
+ <body>A literal null specifies the lack of a value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5DEE402D8" general="_3ADC7B74022D3CB5DE0E024E"/>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D0F700AB" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDB2005D" bodyCondition="_sLnl2BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLnl1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D0F700AB">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLnl2BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D0F700AB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLnl2RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLnl1xTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D14F00CB" name="isNull" isQuery="true" redefinedOperation="_3ADC7B74022D4300DE2C02DE" bodyCondition="_sLnl4RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLnl3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D14F00CB">
+ <body>The query isNull() returns true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sLnl4RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D14F00CB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLnl4hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sLnl4BTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAED67023C" name="Constraint">
+ <ownedComment xmi:id="_sLnl5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAED67023C">
+ <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="_sLnl7xTaEdqZu-3Jy1-uYg" name="boolean_value" constrainedElement="_3ADC7B74022D3CAAED67023C">
+ <ownedComment xmi:id="_sLnl6xTaEdqZu-3Jy1-uYg" annotatedElement="_sLnl7xTaEdqZu-3Jy1-uYg">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLnl8BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sLxW0xTaEdqZu-3Jy1-uYg" name="no_side_effects" constrainedElement="_3ADC7B74022D3CAAED67023C">
+ <ownedComment xmi:id="_sLnl9BTaEdqZu-3Jy1-uYg" annotatedElement="_sLxW0xTaEdqZu-3Jy1-uYg">
+ <body>Evaluating the value specification for a constraint must not have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLxW1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sLxW3BTaEdqZu-3Jy1-uYg" name="not_applied_to_self" constrainedElement="_3ADC7B74022D3CAAED67023C">
+ <ownedComment xmi:id="_sLxW2BTaEdqZu-3Jy1-uYg" annotatedElement="_sLxW3BTaEdqZu-3Jy1-uYg">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLxW3RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CB20D4A0345" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF69201BF" name="constrainedElement" type="_3ADC7B74022D3CAAEC0D0176" isOrdered="true" association="_3ADC7B74022D3CAAF6910344">
+ <ownedComment xmi:id="_sRSI8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF69201BF">
+ <body>The ordered set of Elements referenced by this Constraint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRSI9xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sRSI9hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CECFC020007" name="specification" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CECFC010132">
+ <ownedComment xmi:id="_sVTtXxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CECFC020007">
+ <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="_sVTtYxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVTtYhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF5A901A6" name="context" type="_3ADC7B74022D3CAAECC502DA" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3CAAF5A80000">
+ <ownedComment xmi:id="_sVmoSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF5A901A6">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVmoTBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVmoSxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5E15901BA" name="ElementImport">
+ <ownedComment xmi:id="_sLxW4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5E15901BA">
+ <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="_sLxW6hTaEdqZu-3Jy1-uYg" name="visibility_public_or_private" constrainedElement="_3ADC7B74022D3CB5E15901BA">
+ <ownedComment xmi:id="_sLxW5hTaEdqZu-3Jy1-uYg" annotatedElement="_sLxW6hTaEdqZu-3Jy1-uYg">
+ <body>The visibility of an ElementImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLxW6xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sLxW8xTaEdqZu-3Jy1-uYg" name="imported_element_is_public" constrainedElement="_3ADC7B74022D3CB5E15901BA">
+ <ownedComment xmi:id="_sLxW7xTaEdqZu-3Jy1-uYg" annotatedElement="_sLxW8xTaEdqZu-3Jy1-uYg">
+ <body>An importedElement has either public visibility or no visibility at all.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sLxW9BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CB5E2F40374" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5E5BA0068" name="visibility" type="_3ADC7B74022D3CAAF25600F8">
+ <ownedComment xmi:id="_sL6gyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5E5BA0068">
+ <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="_Jf1E8GgYEdqfYrlcy8iLFA" type="_3ADC7B74022D3CAAF25600F8" instance="_3ADC7B74022D3CAAF268020C"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBBE2E9024C" name="alias">
+ <ownedComment xmi:id="_sL6gzBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBBE2E9024C">
+ <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>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sL6g0BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sL6gzxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5E39B0216" name="importedElement" type="_3ADC7B74022D3CB1F3A0024D" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3CB5E39A0084">
+ <ownedComment xmi:id="_sUQkhRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5E39B0216">
+ <body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUQkiRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUQkiBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB5C7602FF" name="importingNamespace" type="_3ADC7B74022D3CAAECC502DA" subsettedProperty="_3ADC7B74022D3CAAEEF70165 _3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CAB5C7500C2">
+ <ownedComment xmi:id="_sVJ8WBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB5C7602FF">
+ <body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVJ8XBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVJ8WxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D00000CB" name="getName" isQuery="true" bodyCondition="_sL6gwxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sLxW-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D00000CB">
+ <body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sL6gwxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D00000CB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sL6gxBTaEdqZu-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="_sL6gwhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAFD5202DC" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_sL6g0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAFD5202DC">
+ <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="_sL6g2xTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D3CAAFD5202DC">
+ <ownedComment xmi:id="_sL6g1xTaEdqZu-3Jy1-uYg" annotatedElement="_sL6g2xTaEdqZu-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="_sL6g3BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMERwxTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D3CAAFD5202DC">
+ <ownedComment xmi:id="_sL6g4BTaEdqZu-3Jy1-uYg" annotatedElement="_sMERwxTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMERxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMERzBTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D3CAAFD5202DC">
+ <ownedComment xmi:id="_sMERyBTaEdqZu-3Jy1-uYg" annotatedElement="_sMERzBTaEdqZu-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="_sMERzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMER1RTaEdqZu-3Jy1-uYg" name="value_specification_no_side_effects" constrainedElement="_3ADC7B74022D3CAAFD5202DC">
+ <ownedComment xmi:id="_sMER0RTaEdqZu-3Jy1-uYg" annotatedElement="_sMER1RTaEdqZu-3Jy1-uYg">
+ <body>If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMER1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMOCxBTaEdqZu-3Jy1-uYg" name="value_specification_constant" constrainedElement="_3ADC7B74022D3CAAFD5202DC">
+ <ownedComment xmi:id="_sMOCwBTaEdqZu-3Jy1-uYg" annotatedElement="_sMOCxBTaEdqZu-3Jy1-uYg">
+ <body>If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMOCxRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CAAFEE802C2" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAD9D1D004C" name="isOrdered">
+ <ownedComment xmi:id="_sMg9sxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9D1D004C">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G5rj4BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFB22D03D6" name="isUnique">
+ <ownedComment xmi:id="_sMg9uBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFB22D03D6">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G5rj4RTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFB238029B" name="upper" isDerived="true">
+ <ownedComment xmi:id="_sMg9vRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFB238029B">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sMg9wRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sMg9wBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_niIoQCkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFB2640028" name="lower" isDerived="true">
+ <ownedComment xmi:id="_sMg9xRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFB2640028">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sMg9yRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sMg9yBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_prrHoCkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D53924901A3" name="upperValue" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D53924803A0">
+ <ownedComment xmi:id="_sV5jQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D53924901A3">
+ <body>The specification of the upper bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sV5jRxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sV5jRhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D5392780331" name="lowerValue" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D539278011E">
+ <ownedComment xmi:id="_sWDUNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D5392780331">
+ <body>The specification of the lower bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWDUOBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWDUNxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D208038A" name="lower" isQuery="true" bodyCondition="_sMOCzxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMOCyRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D208038A">
+ <body>The derived lower attribute must equal the lowerBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMOCzxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D208038A _3ADC7B74022D3DFFB2640028">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMOC0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMOCzBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D20E00CB" name="upper" isQuery="true" bodyCondition="_sMOC2hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMOC1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D20E00CB">
+ <body>The derived upper attribute must equal the upperBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMOC2hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D20E00CB _3ADC7B74022D3DFFB238029B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMOC2xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMOC1xTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D313037A" name="isMultivalued" isQuery="true" precondition="_sMXMsxTaEdqZu-3Jy1-uYg" bodyCondition="_sMXMtRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMOC3xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D313037A">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMXMsxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D313037A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXMtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMXMtRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D313037A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXMthTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMXMshTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D31B00AB" name="includesCardinality" isQuery="true" precondition="_sMXMvxTaEdqZu-3Jy1-uYg" bodyCondition="_sMXMwRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMXMuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D31B00AB">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMXMvxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D31B00AB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXMwBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMXMwRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D31B00AB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXMwhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMXMvRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B7D7303B4" name="C">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D31F01F4" name="includesMultiplicity" isQuery="true" precondition="_sMXMyxTaEdqZu-3Jy1-uYg" bodyCondition="_sMXMzRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMXMxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D31F01F4">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMXMyxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D31F01F4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXMzBTaEdqZu-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="_sMXMzRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D31F01F4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXMzhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMXMyRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B7D9102F9" name="M" type="_3ADC7B74022D3CAAFD5202DC"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D3220290" name="lowerBound" isQuery="true" bodyCondition="_sMXM1hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMXM0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D3220290">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMXM1hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D3220290">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXM1xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMXM1RTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D328000F" name="upperBound" isQuery="true" bodyCondition="_sMXM3xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMXM2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D328000F">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMXM3xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D328000F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMXM4BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMXM3hTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAFD3A006B" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_sMqHoBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAFD3A006B">
+ <body>A typed element has a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E1BF7D20048" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAFF4A00A6" name="type" type="_3ADC7B74022D3E5920C2014E" association="_3ADC7B74022D3CAAFF49028F">
+ <ownedComment xmi:id="_sRSI-xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAFF4A00A6">
+ <body>The type of the TypedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRSI_xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sRSI_hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAECE80199" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_sMqHpRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAECE80199">
+ <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="_sMz4qhTaEdqZu-3Jy1-uYg" name="generalization_hierarchies" constrainedElement="_3ADC7B74022D3CAAECE80199">
+ <ownedComment xmi:id="_sMz4phTaEdqZu-3Jy1-uYg" annotatedElement="_sMz4qhTaEdqZu-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="_sMz4qxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sMz4sxTaEdqZu-3Jy1-uYg" name="specialize_type" constrainedElement="_3ADC7B74022D3CAAECE80199">
+ <ownedComment xmi:id="_sMz4rxTaEdqZu-3Jy1-uYg" annotatedElement="_sMz4sxTaEdqZu-3Jy1-uYg">
+ <body>A classifier may only specialize classifiers of a valid type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMz4tBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.parents()->forAll(c | self.maySpecializeType(c))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CB1986F03D0" general="_3ADC7B74022D3CAB007101D7"/>
+ <generalization xmi:id="_3ADC7B74022D3CAC7A74002B" general="_3ADC7B74022D3CAAECC502DA"/>
+ <generalization xmi:id="_3ADC7B74022D3E59237902C0" general="_3ADC7B74022D3E5920C2014E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB025C02CD" name="isAbstract">
+ <ownedComment xmi:id="_sNQkkBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB025C02CD">
+ <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.&#xD;
+</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G5-e0BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB01E501C7" name="generalization" type="_3ADC7B74022D3CAAECEF0149" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CAB01E40162">
+ <ownedComment xmi:id="_sRSJAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB01E501C7">
+ <body>Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRSJBxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sRSJBhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB04790307" name="feature" type="_3ADC7B74022D3CAAFD220337" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CAB04790108">
+ <ownedComment xmi:id="_sT9piBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB04790307">
+ <body>Specifies each feature defined in the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sT9pjBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sT9pixTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB02DF02A3" name="inheritedMember" type="_3ADC7B74022D3CAAECB901B0" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3CAAF1D0036C" association="_3ADC7B74022D3CAB02DF00AF">
+ <ownedComment xmi:id="_sUaVcRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB02DF02A3">
+ <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUaVdRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUaVdBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB21AF0364" name="attribute" type="_3ADC7B74022D3CAB1D790101" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CAB04790307" association="_3ADC7B74022D3CAB21AF016F">
+ <ownedComment xmi:id="_sUaVhRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB21AF0364">
+ <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="_sUjfYxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUjfYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC2C53102C6" name="redefinedClassifier" type="_3ADC7B74022D3CAAECE80199" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CC2C52E03DA">
+ <ownedComment xmi:id="_sVTtVxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC2C53102C6">
+ <body>References the Classifiers that are redefined by this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVTtWxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVTtWhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E026F600201" name="general" type="_3ADC7B74022D3CAAECE80199" isDerived="true" association="_3ADC7B74022D3E026F5E033F">
+ <ownedComment xmi:id="_sW8FDxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E026F600201">
+ <body>Specifies the general Classifiers for this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sW8FExTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sW8FEhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CD890196" name="general" isQuery="true" bodyCondition="_sMz4oRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMqHrBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CD890196">
+ <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMz4oRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CD890196 _3ADC7B74022D3E026F600201">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMz4ohTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMqHrxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECE80199" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6HowRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6HowBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CDD6036B" name="inheritedMember" isQuery="true" bodyCondition="_sMz4vhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMz4uBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CDD6036B">
+ <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sMz4vhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CDD6036B _3ADC7B74022D3CAB02DF02A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sMz4vxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sMz4uxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECB901B0" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6RZwRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6RZwBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CDF2030D" name="allFeatures" isQuery="true" bodyCondition="_sM9poRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sMz4wxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CDF2030D">
+ <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="_sM9poRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CDF2030D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sM9pohTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(oclIsKindOf(Feature))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sM9poBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAFD220337" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6RZwxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6RZwhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CDFE0196" name="parents" isQuery="true" bodyCondition="_sM9pqhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sM9pphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CDFE0196">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sM9pqhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CDFE0196">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sM9pqxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = generalization.general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sM9pqRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECE80199" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6RZxRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6RZxBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CE41034B" name="inheritableMembers" isQuery="true" precondition="_sM9ptBTaEdqZu-3Jy1-uYg" postcondition="_sM9pthTaEdqZu-3Jy1-uYg" bodyCondition="_sM9puBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sM9prxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CE41034B">
+ <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="_sM9ptBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300CE41034B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sM9ptRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sM9pthTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300CE41034B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sM9ptxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sM9puBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CE41034B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sM9puRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(m | c.hasVisibilityOf(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sM9pshTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECB901B0" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6RZxxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6RZxhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B706202EB" name="c" type="_3ADC7B74022D3CAAECE80199"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CE55007D" name="hasVisibilityOf" isQuery="true" precondition="_sM9pwhTaEdqZu-3Jy1-uYg" bodyCondition="_sM9pxBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sM9pvRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CE55007D">
+ <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="_sM9pwhTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300CE55007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sM9pwxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.allParents()->collect(c | c.member)->includes(n)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sM9pxBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CE55007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNGzkBTaEdqZu-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="_sM9pwBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B709900A6" name="n" type="_3ADC7B74022D3CAAECB901B0"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CE630399" name="conformsTo" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD8D001F" bodyCondition="_sNGzmRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNGzlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CE630399">
+ <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="_sNGzmRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CE630399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNGzmhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self=other) or (self.allParents()->includes(other))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNGzlxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B70EC01C8" name="other" type="_3ADC7B74022D3CAAECE80199"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CE74009C" name="inherit" isQuery="true" bodyCondition="_sNGzoxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNGznhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CE74009C">
+ <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="_sNGzoxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CE74009C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNGzpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNGzoRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECB901B0" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6bKwRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6bKwBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B712800F1" name="inhs" type="_3ADC7B74022D3CAAECB901B0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6bKwxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6bKwhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CE7C03A9" name="maySpecializeType" isQuery="true" bodyCondition="_sNGzrBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNGzqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CE7C03A9">
+ <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="_sNGzrBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CE7C03A9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNGzrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.oclIsKindOf(c.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNGzqxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1r1yEFd5EdqYibj4xL6Cag" name="c" type="_3ADC7B74022D3CAAECE80199" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D43022FFC03D8" name="allParents" isQuery="true" bodyCondition="_sNGztRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNGzsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D43022FFC03D8">
+ <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sNGztRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D43022FFC03D8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNGzthTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()->union(self.parents()->collect(p | p.allParents())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNGztBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECE80199" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G6bKxRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6bKxBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAFD220337" name="Feature" isAbstract="true">
+ <ownedComment xmi:id="_sNQklRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAFD220337">
+ <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CAB043E0063" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB17B760027" name="isStatic">
+ <ownedComment xmi:id="_sNQkmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB17B760027">
+ <body>Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true).</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G6bKxhTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB047902F3" name="featuringClassifier" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CAB04790108">
+ <ownedComment xmi:id="_sT9pgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB047902F3">
+ <body>The Classifiers that have this Feature as a feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sT9phBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sT9pgxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB007101D7" name="RedefinableElement" isAbstract="true">
+ <ownedComment xmi:id="_sNQknxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB007101D7">
+ <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="_sNQkqBTaEdqZu-3Jy1-uYg" name="redefinition_context_valid" constrainedElement="_3ADC7B74022D3CAB007101D7">
+ <ownedComment xmi:id="_sNQkpBTaEdqZu-3Jy1-uYg" annotatedElement="_sNQkqBTaEdqZu-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="_sNQkqRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sNZuhRTaEdqZu-3Jy1-uYg" name="redefinition_consistent" constrainedElement="_3ADC7B74022D3CAB007101D7">
+ <ownedComment xmi:id="_sNZugRTaEdqZu-3Jy1-uYg" annotatedElement="_sNZuhRTaEdqZu-3Jy1-uYg">
+ <body>A redefining element must be consistent with each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNZuhhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CAB0423024F" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB044C0208" name="isLeaf">
+ <ownedComment xmi:id="_sNZunxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB044C0208">
+ <body>Indicates whether it is possible to further specialize a RedefinableElement. If the value is true, then it is not possible to further specialize the RedefinableElement.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G6bKxxTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E026DFA035B" name="redefinedElement" type="_3ADC7B74022D3CAB007101D7" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3E026DF9022D">
+ <ownedComment xmi:id="_sWy7IhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E026DFA035B">
+ <body>The redefinable element that is being redefined by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWy7JhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWy7JRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E026E2C0064" name="redefinitionContext" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3E026E2B024D">
+ <ownedComment xmi:id="_sW8FBRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E026E2C0064">
+ <body>References the contexts that this element may be redefined from.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sW8FCRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sW8FCBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DD4100CB" name="isConsistentWith" isQuery="true" precondition="_sNZujxTaEdqZu-3Jy1-uYg" bodyCondition="_sNZukRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNZuihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DD4100CB">
+ <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="_sNZujxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300DD4100CB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNZukBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sNZukRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DD4100CB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNZukhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNZujRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B85CE007A" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DD5D00DA" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_sNZumhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNZulhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DD5D00DA">
+ <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="_sNZumhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DD5D00DA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNZumxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNZumRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-oye8Fd5EdqYibj4xL6Cag" name="redefined" type="_3ADC7B74022D3CAB007101D7" effect="read"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAECEF0149" name="Generalization">
+ <ownedComment xmi:id="_sNZupBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAECEF0149">
+ <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 indirect instance of the general classifier. Thus, the specific classifier inherits the features of the more general classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CAB01D20012" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF4FA43024F" name="isSubstitutable">
+ <ownedComment xmi:id="_sNjfgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF4FA43024F">
+ <body>Indicates whether the specific classifier can be used wherever the general classifier can be used. If true, the execution traces of the specific classifier will be a superset of the execution traces of the general classifier.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LGMhIV0oEdq3-fC14hmVtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LGMhIF0oEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB01E501C9" name="specific" type="_3ADC7B74022D3CAAECE80199" subsettedProperty="_3ADC7B74022D3CAAEEF70165 _3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CAB01E40162">
+ <ownedComment xmi:id="_sRSJCRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB01E501C9">
+ <body>References the specializing classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sRSJDRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sRSJDBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB021A02FA" name="general" type="_3ADC7B74022D3CAAECE80199" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3CAB021A0119">
+ <ownedComment xmi:id="_sRbS4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB021A02FA">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sTz4gxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sTz4ghTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAFD470326" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_sNjfhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAFD470326">
+ <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="_3ADC7B74022D3CAB09740397" general="_3ADC7B74022D3CAAFD220337"/>
+ <generalization xmi:id="_3ADC7B74022D3CB5BAD7011C" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB0F2B015F" name="ownedParameter" type="_3ADC7B74022D3CAB0B3D0362" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB0F2A0321">
+ <ownedComment xmi:id="_sT9pkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB0F2B015F">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sT9plRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sT9plBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CEE37790007" name="raisedException" type="_3ADC7B74022D3E5920C2014E" association="_3ADC7B74022D3CEE3778016E">
+ <ownedComment xmi:id="_sVc3TBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEE37790007">
+ <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="_sVc3UBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVc3TxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CD200203" name="isDistinguishableFrom" isQuery="true" redefinedOperation="_3ADC7B74022D4300D6F402BF" bodyCondition="_sNjfkBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sNjfihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CD200203">
+ <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="_sNjfkBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CD200203">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sNjfkRTaEdqZu-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.ownedParameter->collect(type))&#xA; else true&#xA; endif&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sNjfjRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B6DB5016A" name="n" type="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedParameter xmi:id="_3ADC7B74022D430B6DC80031" name="ns" type="_3ADC7B74022D3CAAECC502DA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB0B3D0362" name="Parameter">
+ <ownedComment xmi:id="_sNjflRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB0B3D0362">
+ <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="_3ADC7B74022D3CAB0DEE0204" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <generalization xmi:id="_3ADC7B74022D3E5920880097" general="_3ADC7B74022D3CAAFD5202DC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CEE41F90125" name="direction" type="_3ADC7B74022D3CEE419F03B0">
+ <ownedComment xmi:id="_sNjfmxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEE41F90125">
+ <body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_sNjfnhTaEdqZu-3Jy1-uYg" instance="_3ADC7B74022D3CEE41D00126"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFCC4902FB" name="default" isDerived="true">
+ <ownedComment xmi:id="_sNtQgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFCC4902FB">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Parameter.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sNtQhBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sNtQgxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CECFCD50386" name="defaultValue" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CECFCD501BA">
+ <ownedComment xmi:id="_sVTtaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CECFCD50386">
+ <body>Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVTtbRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVTtbBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0282CB035E" name="operation" type="_3ADC7B74022D3CAB1D710164" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3E0282CA02BC">
+ <ownedComment xmi:id="_sXPnEBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0282CB035E">
+ <body>References the Operation owning this parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXPnFBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXPnExTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB08ED000D" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_sNtQiBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB08ED000D">
+ <body>By specializing multiplicity element, it supports a multiplicity that specifies valid cardinalities for the collection of values associated with an instantiation of the structural feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CAB0948000E" general="_3ADC7B74022D3CAAFD220337"/>
+ <generalization xmi:id="_3ADC7B74022D3CAB094B0167" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <generalization xmi:id="_3ADC7B74022D3E59204C0177" general="_3ADC7B74022D3CAAFD5202DC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0272B40257" name="isReadOnly">
+ <ownedComment xmi:id="_sNtQjxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0272B40257">
+ <body>States whether the feature's value may be modified by a client.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G6uFsBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB11A7010A" name="InstanceSpecification">
+ <ownedComment xmi:id="_sNtQlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB11A7010A">
+ <body>An instance specification is a model element that represents an instance in a modeled system.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sN2acxTaEdqZu-3Jy1-uYg" name="defining_feature" constrainedElement="_3ADC7B74022D3CAB11A7010A">
+ <ownedComment xmi:id="_sNtQmRTaEdqZu-3Jy1-uYg" annotatedElement="_sN2acxTaEdqZu-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="_sN2adBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sN2afBTaEdqZu-3Jy1-uYg" name="structural_feature" constrainedElement="_3ADC7B74022D3CAB11A7010A">
+ <ownedComment xmi:id="_sN2aeBTaEdqZu-3Jy1-uYg" annotatedElement="_sN2afBTaEdqZu-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="_sN2afRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CE167ED0006" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB13880129" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3CAB13870327">
+ <ownedComment xmi:id="_sUHaghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB13880129">
+ <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="_sUHahhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUHahRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB13B6022A" name="slot" type="_3ADC7B74022D3CAB11B20214" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CAB13B503B9">
+ <ownedComment xmi:id="_sUHaihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB13B6022A">
+ <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="_sUHajhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUHajRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D78AE930285" name="specification" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D78AE93004B">
+ <ownedComment xmi:id="_sWWPJRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D78AE930285">
+ <body>A specification of how to compute, derive, or construct the instance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWWPKRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWWPKBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB11B20214" name="Slot">
+ <ownedComment xmi:id="_sN2agRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB11B20214">
+ <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="_3ADC7B74022D3CAB131E0312" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB13B60234" name="owningInstance" type="_3ADC7B74022D3CAB11A7010A" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CAB13B503B9">
+ <ownedComment xmi:id="_sUHakBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB13B60234">
+ <body>The instance specification that owns this slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUHalBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUHakxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB144F0248" name="definingFeature" type="_3ADC7B74022D3CAB08ED000D" association="_3ADC7B74022D3CAB144F008F">
+ <ownedComment xmi:id="_sUHalxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB144F0248">
+ <body>The structural feature that specifies the values that may be held by the slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUHamxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUHamhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D78AE070216" name="value" type="_3ADC7B74022D3D0254AB023D" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D78AE0600C0">
+ <ownedComment xmi:id="_sWMeKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D78AE070216">
+ <body>The value or values corresponding to the defining feature for the owning instance specification.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWMeLhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWMeLRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1D7E0162" name="Package">
+ <ownedComment xmi:id="_sN2ahhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1D7E0162">
+ <body>A package is used to group elements, and provides a namespace for the grouped elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sOALdRTaEdqZu-3Jy1-uYg" name="elements_public_or_private" constrainedElement="_3ADC7B74022D3CAB1D7E0162">
+ <ownedComment xmi:id="_sOALcRTaEdqZu-3Jy1-uYg" annotatedElement="_sOALdRTaEdqZu-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="_sOALdhTaEdqZu-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="_3ADC7B74022D3CB2142F00C2" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <generalization xmi:id="_3ADC7B74022D3E02659B024B" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D623ABA0354" name="packageMerge" type="_3ADC7B74022D3D623A8601AB" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D623ABA00DD">
+ <ownedComment xmi:id="_sWDUPhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D623ABA0354">
+ <body>References the PackageMerges that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWDUQhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWDUQRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DDD058D0188" name="packagedElement" type="_3ADC7B74022D3CB1F3A0024D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3DDD058B026C">
+ <ownedComment xmi:id="_sWWPLxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DDD058D0188">
+ <body>Specifies the packageable elements that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWWPMxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWWPMhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0265FD0094" name="ownedType" type="_3ADC7B74022D3E5920C2014E" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DDD058D0188" association="_3ADC7B74022D3E0265FC036D">
+ <ownedComment xmi:id="_sWpKHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0265FD0094">
+ <body>References the packaged elements that are Types.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWpKIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWpKIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E02674A0088" name="nestedPackage" type="_3ADC7B74022D3CAB1D7E0162" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DDD058D0188" association="_3ADC7B74022D3E02674800B8">
+ <ownedComment xmi:id="_sWy7ExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E02674A0088">
+ <body>References the packaged elements that are Packages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWy7FxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWy7FhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E02674A00A6" name="nestingPackage" type="_3ADC7B74022D3CAB1D7E0162" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3E02674800B8">
+ <ownedComment xmi:id="_sWy7GxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E02674A00A6">
+ <body>References the Package that owns this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWy7HxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWy7HhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D992001F" name="mustBeOwned" isQuery="true" redefinedOperation="_3ADC7B74022D4300CFAE0128" bodyCondition="_sOALfhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOALehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D992001F">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sOALfhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D992001F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOALfxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sOALfRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D9A40290" name="visibleMembers" isQuery="true" bodyCondition="_sOALhxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOALgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D9A40290">
+ <body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sOALhxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D9A40290">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOALiBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select( m | self.makesVisible(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sOALhhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CB1F3A0024D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G63PoRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G63PoBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D9C303C8" name="makesVisible" isQuery="true" precondition="_sOJ8dBTaEdqZu-3Jy1-uYg" bodyCondition="_sOJ8dhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOALjBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D9C303C8">
+ <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="_sOJ8dBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D9C303C8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOJ8dRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.member->includes(el)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sOJ8dhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D9C303C8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOJ8dxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (ownedMember->includes(el)) or&#xA;(elementImport->select(ei|ei.importedElement = #public)->collect(ei|ei.importedElement)->includes(el)) or&#xA;(packageImport->select(pi|pi.visibility = #public)->collect(pi|pi.importedPackage.member->includes(el))->notEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sOJ8chTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B84020033" name="el" type="_3ADC7B74022D3CAAECB901B0"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1D8F02A7" name="PackageImport">
+ <ownedComment xmi:id="_sOJ8exTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1D8F02A7">
+ <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="_sOJ8hBTaEdqZu-3Jy1-uYg" name="public_or_private" constrainedElement="_3ADC7B74022D3CAB1D8F02A7">
+ <ownedComment xmi:id="_sOJ8gBTaEdqZu-3Jy1-uYg" annotatedElement="_sOJ8hBTaEdqZu-3Jy1-uYg">
+ <body>The visibility of a PackageImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOJ8hRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DDD03280141" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DDD01FC030C" name="visibility" type="_3ADC7B74022D3CAAF25600F8">
+ <ownedComment xmi:id="_sOJ8iRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DDD01FC030C">
+ <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="_cABpsGgYEdqfYrlcy8iLFA" type="_3ADC7B74022D3CAAF25600F8" instance="_3ADC7B74022D3CAAF268020C"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB5CEA01ED" name="importingNamespace" type="_3ADC7B74022D3CAAECC502DA" subsettedProperty="_3ADC7B74022D3CAAEEF70165 _3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CAB5CE7026B">
+ <ownedComment xmi:id="_sVJ8ZRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB5CEA01ED">
+ <body>Specifies the Namespace that imports the members from a Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVJ8aRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVJ8aBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB5D460019" name="importedPackage" type="_3ADC7B74022D3CAB1D7E0162" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3CAB5D4302E5">
+ <ownedComment xmi:id="_sVJ8bBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB5D460019">
+ <body>Specifies the Package whose members are imported into a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVTtUxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVTtUhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1D6D00A0" name="Class">
+ <ownedComment xmi:id="_sOJ8jRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1D6D00A0">
+ <body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CAB214001FC" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E1BFA62009C" name="isAbstract" redefinedProperty="_3ADC7B74022D3CAB025C02CD">
+ <ownedComment xmi:id="_sOTGaxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1BFA62009C">
+ <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>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G63PohTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBC3931033D" name="nestedClassifier" type="_3ADC7B74022D3CAAECE80199" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CBC39310094">
+ <ownedComment xmi:id="_sUaVexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBC3931033D">
+ <body>References all the Classifiers that are defined (nested) within the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUaVfxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUaVfhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB224A0230" name="ownedAttribute" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB21AF0364 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB22490044">
+ <ownedComment xmi:id="_sUjfaxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB224A0230">
+ <body>The attributes (i.e. the properties) owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUjfbxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUjfbhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB22E10043" name="ownedOperation" type="_3ADC7B74022D3CAB1D710164" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB22E000E2">
+ <ownedComment xmi:id="_sUjfdRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB22E10043">
+ <body>The operations owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUjfeRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUjfeBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E027BEB00C8" name="superClass" type="_3ADC7B74022D3CAB1D6D00A0" isDerived="true" redefinedProperty="_3ADC7B74022D3E026F600201" association="_3ADC7B74022D3E027BE901AC">
+ <ownedComment xmi:id="_sXF2ARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E027BEB00C8">
+ <body>This gives the superclasses of a class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXF2BRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXF2BBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CD4802AF" name="inherit" isQuery="true" redefinedOperation="_3ADC7B74022D4300CE74009C" bodyCondition="_sOTGZhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOTGYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CD4802AF">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sOTGZhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CD4802AF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOTGZxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sOTGZBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECB901B0" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G7KxoRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G7KxoBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B6E27025E" name="inhs" type="_3ADC7B74022D3CAAECB901B0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G7KxoxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G7KxohTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1D790101" name="Property">
+ <ownedComment xmi:id="_sOTGcBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1D790101">
+ <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="_sOc3YxTaEdqZu-3Jy1-uYg" name="multiplicity_of_composite" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOTGfhTaEdqZu-3Jy1-uYg" annotatedElement="_sOc3YxTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity on an aggregate end of a composite aggregation must not have an upper bound greater than 1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOc3ZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sOc3bBTaEdqZu-3Jy1-uYg" name="subsetting_context_conforms" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOc3aBTaEdqZu-3Jy1-uYg" annotatedElement="_sOc3bBTaEdqZu-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="_sOc3bRTaEdqZu-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="_sOc3dRTaEdqZu-3Jy1-uYg" name="redefined_property_inherited" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOc3cRTaEdqZu-3Jy1-uYg" annotatedElement="_sOc3dRTaEdqZu-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="_sOc3dhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if (redefinedProperty->notEmpty()) then&#xD;&#xA; (redefinitionContext->notEmpty() and&#xD;&#xA; redefinedProperty->forAll(rp|&#xD;&#xA; ((redefinitionContext->collect(fc|&#xD;&#xA; fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sOc3fhTaEdqZu-3Jy1-uYg" name="subsetting_rules" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOc3ehTaEdqZu-3Jy1-uYg" annotatedElement="_sOc3fhTaEdqZu-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="_sOc3fxTaEdqZu-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="_sOc3hhTaEdqZu-3Jy1-uYg" name="navigable_readonly" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOc3gxTaEdqZu-3Jy1-uYg" annotatedElement="_sOc3hhTaEdqZu-3Jy1-uYg">
+ <body>Only a navigable property can be marked as readOnly.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOc3hxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isReadOnly implies isNavigable()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sOmoYxTaEdqZu-3Jy1-uYg" name="derived_union_is_derived" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOc3ixTaEdqZu-3Jy1-uYg" annotatedElement="_sOmoYxTaEdqZu-3Jy1-uYg">
+ <body>A derived union is derived.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOmoZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isDerivedUnion implies isDerived</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sOmobBTaEdqZu-3Jy1-uYg" name="derived_union_is_read_only" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_sOmoaBTaEdqZu-3Jy1-uYg" annotatedElement="_sOmobBTaEdqZu-3Jy1-uYg">
+ <body>A derived union is read only.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOmobRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isDerivedUnion implies isReadOnly</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_NCdOQGgEEdqfYrlcy8iLFA" name="subsetted_property_names" constrainedElement="_3ADC7B74022D3CAB1D790101">
+ <ownedComment xmi:id="_Uv1JoGgEEdqfYrlcy8iLFA" annotatedElement="_NCdOQGgEEdqfYrlcy8iLFA">
+ <body>A property may not subset a property with the same name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_NCdOQWgEEdqfYrlcy8iLFA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CAB219E01F7" general="_3ADC7B74022D3CAB08ED000D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB218E0045" name="isDerived">
+ <ownedComment xmi:id="_sO5jWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB218E0045">
+ <body>Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G7KxpBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC059038D" name="isReadOnly" redefinedProperty="_3ADC7B74022D3E0272B40257">
+ <ownedComment xmi:id="_sO5jXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC059038D">
+ <body>If true, the attribute may only be read, and not written.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G7KxpRTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC06103CA" name="isDerivedUnion">
+ <ownedComment xmi:id="_sO5jYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC06103CA">
+ <body>Specifies whether the property is derived as the union of all of the properties that are constrained to subset it.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G7KxphTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC10401EE" name="default" isDerived="true">
+ <ownedComment xmi:id="_sO5jZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC10401EE">
+ <body>A String that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sO5jaxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sO5jahTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC660027D" name="aggregation" type="_3ADC7B74022D3DFFC6AB0253">
+ <ownedComment xmi:id="_sO5jbxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC660027D">
+ <body>Specifies the kind of aggregation that applies to the Property.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_sPCtQhTaEdqZu-3Jy1-uYg" instance="_3ADC7B74022D3DFFC6C0009A"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC66A0368" name="isComposite" isDerived="true">
+ <ownedComment xmi:id="_sPCtRBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC66A0368">
+ <body>This is a derived value, indicating whether the aggregation of the Property is composite or not.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB224A0244" name="class" type="_3ADC7B74022D3CAB1D6D00A0" subsettedProperty="_3ADC7B74022D3CAB21AF036E _3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3CAB22490044">
+ <ownedComment xmi:id="_dAEKoGd5EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3CAB224A0244">
+ <body>References the Class that owns the Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUjfchTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUjfcRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB248A01A2" name="redefinedProperty" type="_3ADC7B74022D3CAB1D790101" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CAB248803D0">
+ <ownedComment xmi:id="_sUtQghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB248A01A2">
+ <body>References the properties that are redefined by this property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sU3BYxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sU3BYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB3EBD00A4" name="owningAssociation" type="_3ADC7B74022D3CAB1DD70016" subsettedProperty="_3ADC7B74022D3DFFC750006F _3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3CAB3EBC02BE">
+ <ownedComment xmi:id="_sU3BbRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB3EBD00A4">
+ <body>References the owning association of this property, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sU3BcRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sU3BcBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB56E2011B" name="datatype" type="_3ADC7B74022D3CAB1D9C03C8" subsettedProperty="_3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3 _3ADC7B74022D3CAB21AF036E" association="_3ADC7B74022D3CAB56E102C8">
+ <ownedComment xmi:id="_sU3BehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB56E2011B">
+ <body>The DataType that owns this Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVALUxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVALUhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CED007E03CA" name="defaultValue" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CED007D0378">
+ <ownedComment xmi:id="_sVc3QhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CED007E03CA">
+ <body>A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVc3RhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVc3RRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC0A002E5" name="opposite" type="_3ADC7B74022D3CAB1D790101" isDerived="true" association="_3ADC7B74022D3DFFC09E03E6">
+ <ownedComment xmi:id="_sWgAKRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC0A002E5">
+ <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="_sWgALRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWgALBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC0D30270" name="subsettedProperty" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D3DFFC0D200D4">
+ <ownedComment xmi:id="_sWgAMxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC0D30270">
+ <body>References the properties of which this property is constrained to be a subset.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWgANxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWgANhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC750006F" name="association" type="_3ADC7B74022D3CAB1DD70016" association="_3ADC7B74022D3DFFC74E02D9">
+ <ownedComment xmi:id="_sWpKGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC750006F">
+ <body>References the association of which this property is a member, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWpKHBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWpKGxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_1evdkDc1Edqq1tCaRkgBQQ" name="isAttribute" isQuery="true" bodyCondition="_IQhhkDc2Edqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_GoqL4Dc2Edqq1tCaRkgBQQ" annotatedElement="_1evdkDc1Edqq1tCaRkgBQQ">
+ <body>The query isAttribute() is true if the Property is defined as an attribute of some classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_IQhhkDc2Edqq1tCaRkgBQQ" name="spec" constrainedElement="_1evdkDc1Edqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_IQhhkTc2Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = Classifier.allInstances->exists(c | c.attribute->includes(p))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_8DjOYDc1Edqq1tCaRkgBQQ" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-Qg1MDc1Edqq1tCaRkgBQQ" name="p" type="_3ADC7B74022D3CAB1D790101" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DA23034B" name="opposite" isQuery="true" bodyCondition="_sOTGeRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOTGdRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DA23034B">
+ <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="_sOTGeRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DA23034B _3ADC7B74022D3DFFC0A002E5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOTGehTaEdqZu-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="_sOTGeBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAB1D790101" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DAD90157" name="isComposite" isQuery="true" bodyCondition="_sOmodRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOmocRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DAD90157">
+ <body>The value of isComposite is true only if aggregation is composite.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sOmodRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DAD90157 _3ADC7B74022D3DFFC66A0368">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOmodhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.aggregation = #composite)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sOmodBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DC81002E" name="isConsistentWith" isQuery="true" precondition="_sOmofxTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_sOmogRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOmoehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DC81002E">
+ <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="_sOmofxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300DC81002E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOmogBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sOmogRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DC81002E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOmoghTaEdqZu-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="_sOmofRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B85490246" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DCB40399" name="subsettingContext" isQuery="true" bodyCondition="_sOvyVxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOvyUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DCB40399">
+ <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="_sOvyVxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DCB40399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sOvyWBTaEdqZu-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="_sOvyVhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3E5920C2014E" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G7wngRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G7wngBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DCD60222" name="isNavigable" isQuery="true" bodyCondition="_sO5jUxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sOvyXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DCD60222">
+ <body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sO5jUxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DCD60222">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sO5jVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = not classifier->isEmpty() or association.owningAssociation.navigableOwnedEnd->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sO5jUhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1D710164" name="Operation">
+ <ownedComment xmi:id="_sPCtShTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1D710164">
+ <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="_sPCtUxTaEdqZu-3Jy1-uYg" name="at_most_one_return" constrainedElement="_3ADC7B74022D3CAB1D710164">
+ <ownedComment xmi:id="_sPCtTxTaEdqZu-3Jy1-uYg" annotatedElement="_sPCtUxTaEdqZu-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="_sPCtVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sPWPTBTaEdqZu-3Jy1-uYg" name="only_body_for_query" constrainedElement="_3ADC7B74022D3CAB1D710164">
+ <ownedComment xmi:id="_sPWPSBTaEdqZu-3Jy1-uYg" annotatedElement="_sPWPTBTaEdqZu-3Jy1-uYg">
+ <body>A bodyCondition can only be specified for a query operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPWPTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>bodyCondition->notEmpty() implies isQuery</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CAB234B0136" general="_3ADC7B74022D3CAAFD470326"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E02805002BB" name="isQuery">
+ <ownedComment xmi:id="_sPWPZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E02805002BB">
+ <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>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G7wnghTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E04B1B500F0" name="isOrdered" isDerived="true">
+ <ownedComment xmi:id="_sPWPaxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E04B1B500F0">
+ <body>Specifies whether the return parameter is ordered or not, if present.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_wb9IoCkdEdqPP7hCKvQ4ww"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E04B1BD0137" name="isUnique" isDerived="true">
+ <ownedComment xmi:id="_sPfZNRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E04B1BD0137">
+ <body>Specifies whether the return parameter is unique or not, if present.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_xivKgCkdEdqPP7hCKvQ4ww" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E04B1CF009D" name="lower" isDerived="true">
+ <ownedComment xmi:id="_sPfZOxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E04B1CF009D">
+ <body>Specifies the lower multiplicity of the return parameter, if present.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sPfZPxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sPfZPhTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_z_gH4CkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E04B1C20171" name="upper" isDerived="true">
+ <ownedComment xmi:id="_sPfZQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E04B1C20171">
+ <body>Specifies the upper multiplicity of the return parameter, if present.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sPfZRxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sPfZRhTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1SDU4CkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB22E1004D" name="class" type="_3ADC7B74022D3CAB1D6D00A0" subsettedProperty="_3ADC7B74022D3E026E2C0064 _3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3CAB22E000E2">
+ <ownedComment xmi:id="_sUjfexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB22E1004D">
+ <body>The class that owns the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUtQYxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUtQYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB241900D8" name="precondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_3ADC7B74022D3CAB241802AD">
+ <ownedComment xmi:id="_sUtQZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB241900D8">
+ <body>An optional set of Constraints on the state of the system when the Operation is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUtQahTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUtQaRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB243102C7" name="postcondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_3ADC7B74022D3CAB2431012C">
+ <ownedComment xmi:id="_sUtQcBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB243102C7">
+ <body>An optional set of Constraints specifying the state of the system when the Operation is completed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUtQdBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUtQcxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB247801D9" name="redefinedOperation" type="_3ADC7B74022D3CAB1D710164" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CAB2476038E">
+ <ownedComment xmi:id="_sUtQehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB247801D9">
+ <body>References the Operations that are redefined by this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUtQfhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUtQfRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB57250103" name="datatype" type="_3ADC7B74022D3CAB1D9C03C8" subsettedProperty="_3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3E026E2C0064 _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3CAB57240256">
+ <ownedComment xmi:id="_sVALXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB57250103">
+ <body>The DataType that owns this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVALYBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVALXxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0281850391" name="bodyCondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_3ADC7B74022D3E028185014C">
+ <ownedComment xmi:id="_sXF2CxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0281850391">
+ <body>An optional Constraint on the result values of an invocation of this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXF2DxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXF2DhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0282460399" name="type" type="_3ADC7B74022D3E5920C2014E" isDerived="true" association="_3ADC7B74022D3E02824600C8">
+ <ownedComment xmi:id="_sXPnABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0282460399">
+ <body>Specifies the return result of the operation, if present.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXPnBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXPnAxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0282CB0322" name="ownedParameter" type="_3ADC7B74022D3CAB0B3D0362" isOrdered="true" aggregation="composite" redefinedProperty="_3ADC7B74022D3CAB0F2B015F" association="_3ADC7B74022D3E0282CA02BC">
+ <ownedComment xmi:id="_sXPnChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0282CB0322">
+ <body>Specifies the parameters owned by this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXPnDhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXPnDRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E5924110020" name="raisedException" type="_3ADC7B74022D3E5920C2014E" redefinedProperty="_3ADC7B74022D3CEE37790007" association="_3ADC7B74022D3E5924100105">
+ <ownedComment xmi:id="_sXYw9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5924110020">
+ <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="_sXYw-hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXYw-RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D8490128" name="isOrdered" isQuery="true" bodyCondition="_sPMeQxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPCtWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D8490128">
+ <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="_sPMeQxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D8490128 _3ADC7B74022D3E04B1B500F0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPMeRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().isOrdered else false endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPMeQhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D859009C" name="isUnique" isQuery="true" bodyCondition="_sPMeTBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPMeSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D859009C">
+ <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="_sPMeTBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D859009C _3ADC7B74022D3E04B1BD0137">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPMeTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().isUnique else true endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPMeSxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D86401A5" name="lower" isQuery="true" bodyCondition="_sPMeVxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPMeURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D86401A5">
+ <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="_sPMeVxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D86401A5 _3ADC7B74022D3E04B1CF009D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPMeWBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().lower else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPMeVBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D86A03D8" name="upper" isQuery="true" bodyCondition="_sPMeYhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPMeXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D86A03D8">
+ <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="_sPMeYhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D86A03D8 _3ADC7B74022D3E04B1C20171">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPMeYxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().upper else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPMeXxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D86F0138" name="type" isQuery="true" bodyCondition="_sPWPQxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPMeZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D86F0138">
+ <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="_sPWPQxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D86F0138 _3ADC7B74022D3E0282460399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPWPRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().type else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPWPQhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3E5920C2014E" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D9160213" name="isConsistentWith" isQuery="true" precondition="_sPWPVhTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_sPWPWBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPWPURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D9160213">
+ <body>A redefining operation is consistent with a redefined operation if it has the same number of owned parameters, and the type of each owned parameter conforms to the type of the corresponding redefined parameter. </body>
+ </ownedComment>
+ <ownedRule xmi:id="_sPWPVhTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300D9160213">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPWPVxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sPWPWBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D9160213">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPWPWRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (redefinee.oclIsKindOf(Operation) and&#xA;let op: Operation = redefinee.oclAsType(Operation) in&#xA;self.ownedParameter.size() = op.ownedParameter.size() and&#xA;forAll(i | op.ownedParameter[i].type.conformsTo(self.ownedParameter[i].type))&#xA;)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPWPVBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B834901BD" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D941000F" name="returnResult" isQuery="true" bodyCondition="_sPWPYRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPWPXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D941000F">
+ <body>The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sPWPYRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D941000F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPWPYhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedParameter->select (par | par.direction = #return)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPWPYBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAB0B3D0362" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8NTcRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8NTcBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1D9C03C8" name="DataType">
+ <ownedComment xmi:id="_sPpKMxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1D9C03C8">
+ <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="_3ADC7B74022D3CBC61120274" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB56E200FD" name="ownedAttribute" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB21AF0364 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB56E102C8">
+ <ownedComment xmi:id="_sU3BdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB56E200FD">
+ <body>The Attributes owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sU3BeBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sU3BdxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB572500E5" name="ownedOperation" type="_3ADC7B74022D3CAB1D710164" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB57240256">
+ <ownedComment xmi:id="_sVALVhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB572500E5">
+ <body>The Operations owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVALWhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVALWRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1DC0026C" name="Enumeration">
+ <ownedComment xmi:id="_sPpKOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1DC0026C">
+ <body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CAB576C02FA" general="_3ADC7B74022D3CAB1D9C03C8"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB5835014A" name="ownedLiteral" type="_3ADC7B74022D3CAB1DC601C0" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB58340315">
+ <ownedComment xmi:id="_sVALYxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB5835014A">
+ <body>The ordered set of literals for this Enumeration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVALZxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVALZhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1DC601C0" name="EnumerationLiteral">
+ <ownedComment xmi:id="_sPpKPRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1DC601C0">
+ <body>An enumeration literal is a user-defined data value for an enumeration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CEE3ABE00AB" general="_3ADC7B74022D3CAB11A7010A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB58350154" name="enumeration" type="_3ADC7B74022D3CAB1DC0026C" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3CAB58340315">
+ <ownedComment xmi:id="_sVALaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB58350154">
+ <body>The Enumeration that this EnumerationLiteral is a member of.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVALbRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVALbBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1DCD00B2" name="PrimitiveType">
+ <ownedComment xmi:id="_sPpKQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1DCD00B2">
+ <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="_3ADC7B74022D3CAB576803A8" general="_3ADC7B74022D3CAB1D9C03C8"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAB1DD70016" name="Association">
+ <ownedComment xmi:id="_sPyUIBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB1DD70016">
+ <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="_sPyUKhTaEdqZu-3Jy1-uYg" name="specialized_end_number" constrainedElement="_3ADC7B74022D3CAB1DD70016">
+ <ownedComment xmi:id="_sPyUJhTaEdqZu-3Jy1-uYg" annotatedElement="_sPyUKhTaEdqZu-3Jy1-uYg">
+ <body>An association specializing another association has the same number of ends as the other association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPyUKxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sPyUMxTaEdqZu-3Jy1-uYg" name="specialized_end_types" constrainedElement="_3ADC7B74022D3CAB1DD70016">
+ <ownedComment xmi:id="_sPyULxTaEdqZu-3Jy1-uYg" annotatedElement="_sPyUMxTaEdqZu-3Jy1-uYg">
+ <body>When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPyUNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sP8FJBTaEdqZu-3Jy1-uYg" name="binary_associations" constrainedElement="_3ADC7B74022D3CAB1DD70016">
+ <ownedComment xmi:id="_sP8FIBTaEdqZu-3Jy1-uYg" annotatedElement="_sP8FJBTaEdqZu-3Jy1-uYg">
+ <body>Only binary associations can be aggregations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sP8FJRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sP8FLRTaEdqZu-3Jy1-uYg" name="association_ends" constrainedElement="_3ADC7B74022D3CAB1DD70016">
+ <ownedComment xmi:id="_sP8FKRTaEdqZu-3Jy1-uYg" annotatedElement="_sP8FLRTaEdqZu-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="_sP8FLhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3D5153440357" general="_3ADC7B74022D3D514EBA0111"/>
+ <generalization xmi:id="_3ADC7B74022D3CBC615101E9" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB3F980274" name="isDerived">
+ <ownedComment xmi:id="_sP8FMhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB3F980274">
+ <body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G8XEcBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB3EBD00A2" name="ownedEnd" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFFC7500047 _3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAB3EBC02BE">
+ <ownedComment xmi:id="_sU3BZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB3EBD00A2">
+ <body>The ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sU3BaxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sU3BahTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D51535A0358" name="endType" type="_3ADC7B74022D3E5920C2014E" isOrdered="true" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3D51535902E9">
+ <ownedComment xmi:id="_sV5jORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D51535A0358">
+ <body>References the classifiers that are used as types of the ends of the association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sV5jPRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sV5jPBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFFC7500047" name="memberEnd" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" subsettedProperty="_3ADC7B74022D3CAAF1D0036C" association="_3ADC7B74022D3DFFC74E02D9">
+ <ownedComment xmi:id="_sWpKEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC7500047">
+ <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="_sWpKFhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWpKFRTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F14DD30207" name="navigableOwnedEnd" type="_3ADC7B74022D3CAB1D790101" subsettedProperty="_3ADC7B74022D3CAB3EBD00A2" association="_3ADC7B74022D40F14DD10196">
+ <ownedComment xmi:id="_sXYw_hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F14DD30207">
+ <body>The navigable ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXYxAhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXYxARTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300CCCA006D" name="endType" isQuery="true" bodyCondition="_sPyUPBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sPyUOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300CCCA006D">
+ <body>endType is derived from the types of the member ends.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sPyUPBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300CCCA006D _3ADC7B74022D3D51535A0358">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sPyUPRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.memberEnd->collect(e | e.type)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sPyUOxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3E5920C2014E" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8gOYRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8gOYBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAAECC502DA" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_sP8FNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAECC502DA">
+ <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="_sQF2IxTaEdqZu-3Jy1-uYg" name="members_distinguishable" constrainedElement="_3ADC7B74022D3CAAECC502DA">
+ <ownedComment xmi:id="_sP8FPBTaEdqZu-3Jy1-uYg" annotatedElement="_sQF2IxTaEdqZu-3Jy1-uYg">
+ <body>All the members of a Namespace are distinguishable within it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQF2JBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>membersAreDistinguishable()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CAAF0700320" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB5C7602F5" name="elementImport" type="_3ADC7B74022D3CB5E15901BA" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CAB5C7500C2">
+ <ownedComment xmi:id="_sVJ8UhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB5C7602F5">
+ <body>References the ElementImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVJ8VhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVJ8VRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAB5CEA01D9" name="packageImport" type="_3ADC7B74022D3CAB1D8F02A7" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CAB5CE7026B">
+ <ownedComment xmi:id="_sVJ8XxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAB5CEA01D9">
+ <body>References the PackageImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVJ8YxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVJ8YhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF5A9017E" name="ownedRule" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CAAF5A80000">
+ <ownedComment xmi:id="_sVmoQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF5A9017E">
+ <body>Specifies a set of Constraints owned by this Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVmoRhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVmoRRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF0B00228" name="ownedMember" type="_3ADC7B74022D3CAAECB901B0" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF1D0036C _3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CAAF0AF00E6">
+ <ownedComment xmi:id="_sVmoTxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF0B00228">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVmoUxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVmoUhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAAF1D0036C" name="member" type="_3ADC7B74022D3CAAECB901B0" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CAAF1D0011D">
+ <ownedComment xmi:id="_sVwZShTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF1D0036C">
+ <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="_sVwZThTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVwZTRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DDD06680179" name="importedMember" type="_3ADC7B74022D3CB1F3A0024D" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3CAAF1D0036C" association="_3ADC7B74022D3DDD0667029A">
+ <ownedComment xmi:id="_sWWPORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DDD06680179">
+ <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="_sWgAIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWgAIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D74101E4" name="importedMember" isQuery="true" bodyCondition="_sQF2LhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQF2KBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D74101E4">
+ <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="_sQF2LhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D74101E4 _3ADC7B74022D3DDD06680179">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQF2LxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.importMembers(self.elementImport.importedElement.asSet()-&#xA;>union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQF2KxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CB1F3A0024D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8p_YRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8p_YBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D755007D" name="getNamesOfMember" isQuery="true" bodyCondition="_sQF2OBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQF2MxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D755007D">
+ <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. The query takes account of importing. 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="_sQF2OBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D755007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQF2ORTaEdqZu-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="_sQF2NhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8p_YxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8p_YhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B81380253" name="element" type="_3ADC7B74022D3CAAECB901B0"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D77C029F" name="membersAreDistinguishable" isQuery="true" bodyCondition="_sQF2QRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQF2PRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D77C029F">
+ <body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQF2QRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D77C029F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQF2QhTaEdqZu-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="_sQF2QBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D785034B" name="importMembers" isQuery="true" bodyCondition="_sQPAEBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQF2RhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D785034B">
+ <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="_sQPAEBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D785034B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQPAERTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem |&#xA;mem.imp.isDistinguishableFrom(mem, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQF2SRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CB1F3A0024D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8p_ZRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8p_ZBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B81910188" name="imps" type="_3ADC7B74022D3CB1F3A0024D"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D7890261" name="excludeCollisions" isQuery="true" bodyCondition="_sQPAGhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQPAFRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D7890261">
+ <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="_sQPAGhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D7890261">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQPAGxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQPAGBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CB1F3A0024D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G8zwYRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G8zwYBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B81BD03D1" name="imps" type="_3ADC7B74022D3CB1F3A0024D"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0254AB023D" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_sQYxEBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0254AB023D">
+ <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="_3ADC7B74022D3E5922DB0128" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <generalization xmi:id="_3ADC7B74022D410311CF0033" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DDB2005D" name="isComputable" isQuery="true" bodyCondition="_sQYxGhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQYxFhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DDB2005D">
+ <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="_sQYxGhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DDB2005D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQYxGxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQYxGRTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DDCF00EA" name="integerValue" isQuery="true" bodyCondition="_sQYxIxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQYxHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DDCF00EA">
+ <body>The query integerValue() gives a single Integer value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQYxIxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DDCF00EA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQYxJBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQYxIhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DDE7029F" name="booleanValue" isQuery="true" bodyCondition="_sQYxLBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQYxKBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DDE7029F">
+ <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQYxLBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DDE7029F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQYxLRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQYxKxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DDFE009C" name="stringValue" isQuery="true" bodyCondition="_sQiiExTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQYxMRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DDFE009C">
+ <body>The query stringValue() gives a single String value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQiiExTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DDFE009C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQiiFBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQiiEhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DE15037A" name="unlimitedValue" isQuery="true" bodyCondition="_sQiiHBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQiiGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DE15037A">
+ <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQiiHBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DE15037A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQiiHRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQiiGxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DE2C02DE" name="isNull" isQuery="true" bodyCondition="_sQiiJRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQiiIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DE2C02DE">
+ <body>The query isNull() returns true when it can be computed that the value is null.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQiiJRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DE2C02DE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQiiJhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQiiJBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D514EBA0111" name="Relationship" isAbstract="true">
+ <ownedComment xmi:id="_sQiiKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D514EBA0111">
+ <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D514EDB02F9" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D514F6E0106" name="relatedElement" type="_3ADC7B74022D3CAAEC0D0176" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3D514F6D0227">
+ <ownedComment xmi:id="_sVwZVBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D514F6E0106">
+ <body>Specifies the elements related by the Relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sV5jMxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sV5jMhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D623A8601AB" name="PackageMerge">
+ <ownedComment xmi:id="_sQiiLxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D623A8601AB">
+ <body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D623AB503A7" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D623ABA03C3" name="receivingPackage" type="_3ADC7B74022D3CAB1D7E0162" subsettedProperty="_3ADC7B74022D3CAAEEF70165 _3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3D623ABA00DD">
+ <ownedComment xmi:id="_sWDURBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D623ABA03C3">
+ <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="_sWDUSBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWDURxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D623AF40109" name="mergedPackage" type="_3ADC7B74022D3CAB1D7E0162" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3D623AF30284">
+ <ownedComment xmi:id="_sWDUSxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D623AF40109">
+ <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="_sWDUTxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWDUThTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D78AD4B0374" name="InstanceValue">
+ <ownedComment xmi:id="_sQiiNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D78AD4B0374">
+ <body>An instance value is a value specification that identifies an instance.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D78ADDB0014" general="_3ADC7B74022D3D0254AB023D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D78AD610221" name="instance" type="_3ADC7B74022D3CAB11A7010A" association="_3ADC7B74022D3D78AD610091">
+ <ownedComment xmi:id="_sWMeIhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D78AD610221">
+ <body>The instance that is the specified value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWMeJhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWMeJRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E025DA001CB" name="LiteralUnlimitedNatural">
+ <ownedComment xmi:id="_sQrsFBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E025DA001CB">
+ <body>A literal unlimited natural is a specification of an unlimited natural number.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E025DD10258" general="_3ADC7B74022D3CB5DE0E024E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E025DC40047" name="value">
+ <ownedComment xmi:id="_sQ1dEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E025DC40047">
+ <body>The specified UnlimitedNatural value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_grs8YGgdEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D1BE0222" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D4300DDB2005D" bodyCondition="_sQ1dBBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQ1dABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D1BE0222">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQ1dBBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D1BE0222">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQ1dBRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQ1dAxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300D1CE0271" name="unlimitedValue" isQuery="true" redefinedOperation="_3ADC7B74022D4300DE15037A" bodyCondition="_sQ1dDRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQ1dCRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300D1CE0271">
+ <body>The query unlimitedValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sQ1dDRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300D1CE0271">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQ1dDhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQ1dDBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3DE6A93C0003"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E5920C2014E" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_sQ1dFhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5920C2014E">
+ <body>A type constrains the values represented by a typed element.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E592342028F" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0265FD01CA" name="package" type="_3ADC7B74022D3CAB1D7E0162" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3E0265FC036D">
+ <ownedComment xmi:id="_sWpKJxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0265FD01CA">
+ <body>Specifies the owning package of this classifier, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWy7EBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWpKKhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DD8D001F" name="conformsTo" isQuery="true" bodyCondition="_sQ1dIBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sQ1dGxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DD8D001F">
+ <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="_sQ1dIBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DD8D001F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sQ1dIRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sQ1dHhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430B860E0311" name="other" type="_3ADC7B74022D3E5920C2014E"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E5921EE010A" name="Expression">
+ <ownedComment xmi:id="_sQ_OABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5921EE010A">
+ <body>An expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands which are value specifications.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E59221302BB" general="_3ADC7B74022D3D0254AB023D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E5921F9017E" name="symbol">
+ <ownedComment xmi:id="_sQ_OBRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5921F9017E">
+ <body>The symbol associated with the node in the expression tree.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6kss8WgYEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6kss8GgYEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E59221E027B" name="operand" type="_3ADC7B74022D3D0254AB023D" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E59221B012C">
+ <ownedComment xmi:id="_sXPnFxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E59221E027B">
+ <body>Specifies a sequence of operands.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXYw8BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXPnGhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3DFFC6AB0253" name="AggregationKind">
+ <ownedComment xmi:id="_sQrsBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC6AB0253">
+ <body>AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DFFC6C0009A" name="none">
+ <ownedComment xmi:id="_sQrsCBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC6C0009A">
+ <body>Indicates that the property has no aggregation.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DFFC6C20184" name="shared">
+ <ownedComment xmi:id="_sQrsDBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC6C20184">
+ <body>Indicates that the property has a shared aggregation.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DFFC6C4030D" name="composite">
+ <ownedComment xmi:id="_sQrsEBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFFC6C4030D">
+ <body>Indicates that the property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts).</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3CEE419F03B0" name="ParameterDirectionKind">
+ <ownedComment xmi:id="_sQPAHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEE419F03B0">
+ <body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CEE41D00126" name="in">
+ <ownedComment xmi:id="_sQPAIxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEE41D00126">
+ <body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CEE41D5024F" name="inout">
+ <ownedComment xmi:id="_sQPAJxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEE41D5024F">
+ <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="_3ADC7B74022D3CEE41D90273" name="out"/>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CEE41DB0172" name="return">
+ <ownedComment xmi:id="_sQPALBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEE41DB0172">
+ <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="_3ADC7B74022D3CAAF25600F8" name="VisibilityKind">
+ <ownedComment xmi:id="_sKuN-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAAF25600F8">
+ <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_3ADC7B74022D4300DE4E0167" name="bestVisibility" isQuery="true" precondition="_sKuOARTaEdqZu-3Jy1-uYg" bodyCondition="_sKuOAxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sKuN_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300DE4E0167">
+ <body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sKuOARTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D4300DE4E0167">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKuOAhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>pre: not vis->includes(#protected) and not vis->includes(#package)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sKuOAxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300DE4E0167">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sKuOBBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if vis->includes(#public) then #public else #private endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sKuN_xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAF25600F8" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D430B86A303C0" name="vis" type="_3ADC7B74022D3CAAF25600F8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FVYtoa-9EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FVYtoK-9EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAAF268020C" name="public"/>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAAF26B02CF" name="private"/>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAAF26E0387" name="protected"/>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAAF27201CA" name="package"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAEEA4038D" name="A_ownedElement_owner" memberEnd="_3ADC7B74022D3CAAEEA60187 _3ADC7B74022D3CAAEEA60189"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAEEF60308" name="A_source_directedRelationship" memberEnd="_3ADC7B74022D3CAAEEF70165 _3ADC7B74022D3CAAEEF7016F">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAAEEF7016F" type="_3ADC7B74022D3CAAEC1902BE" association="_3ADC7B74022D3CAAEEF60308">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JyWq4U-wEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JyWq4E-wEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAEF46037B" name="A_target_directedRelationship" memberEnd="_3ADC7B74022D3CAAEF470200 _3ADC7B74022D3CAAEF47020A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAAEF47020A" type="_3ADC7B74022D3CAAEC1902BE" association="_3ADC7B74022D3CAAEF46037B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_I_Py8U-wEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_I_Py8E-wEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAF6910344" name="A_constrainedElement_constraint" memberEnd="_3ADC7B74022D3CAAF69201BF _3ADC7B74022D3CAAF692038C">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAAF692038C" type="_3ADC7B74022D3CAAED67023C" association="_3ADC7B74022D3CAAF6910344">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8WxkoU-xEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8WxkoE-xEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAFF49028F" name="A_type_typedElement" memberEnd="_3ADC7B74022D3CAAFF4A00A6 _3ADC7B74022D3CAAFF4A00B0">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAAFF4A00B0" type="_3ADC7B74022D3CAAFD3A006B" association="_3ADC7B74022D3CAAFF49028F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rk1TQU-xEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rk1TQE-xEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB01E40162" name="A_generalization_specific" memberEnd="_3ADC7B74022D3CAB01E501C7 _3ADC7B74022D3CAB01E501C9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB021A0119" name="A_general_generalization" memberEnd="_3ADC7B74022D3CAB021A02FA _3ADC7B74022D3CAB021A0304">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB021A0304" type="_3ADC7B74022D3CAAECEF0149" association="_3ADC7B74022D3CAB021A0119">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ulGvEU-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ulGvEE-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB04790108" name="A_feature_featuringClassifier" memberEnd="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAB047902F3"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB0F2A0321" name="A_ownedParameter_ownerFormalParam" memberEnd="_3ADC7B74022D3CAB0F2B015F _3ADC7B74022D3CAB0F2B0169">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB0F2B0169" name="ownerFormalParam" type="_3ADC7B74022D3CAAFD470326" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3CAB0F2A0321">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sT9pmBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sT9plxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB13870327" name="A_classifier_instanceSpecification" memberEnd="_3ADC7B74022D3CAB13880129 _3ADC7B74022D3CAB13880148">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB13880148" type="_3ADC7B74022D3CAB11A7010A" association="_3ADC7B74022D3CAB13870327">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J1i24U-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J1i24E-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB13B503B9" name="A_slot_owningInstance" memberEnd="_3ADC7B74022D3CAB13B6022A _3ADC7B74022D3CAB13B60234"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB144F008F" name="A_definingFeature_slot" memberEnd="_3ADC7B74022D3CAB144F0248 _3ADC7B74022D3CAB144F025C">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB144F025C" type="_3ADC7B74022D3CAB11B20214" association="_3ADC7B74022D3CAB144F008F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lschwU-xEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lschwE-xEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAC0CBA00DE" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D3CAC0CBA02D3 _3ADC7B74022D3CAC0CBA02F1">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAC0CBA02F1" type="_3ADC7B74022D3CAC07C901D9" association="_3ADC7B74022D3CAC0CBA00DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NOcXQU-wEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NOcXQE-wEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB1F21F024A" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D3CB1F220009C _3ADC7B74022D3CB1F22000E2">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB1F22000E2" name="owningElement" type="_3ADC7B74022D3CAAEC0D0176" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CB1F21F024A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUQkghTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUQkgRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5E39A0084" name="A_importedElement_elementImport" memberEnd="_3ADC7B74022D3CB5E39B0216 _3ADC7B74022D3CB5E39C0004">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5E39C0004" type="_3ADC7B74022D3CB5E15901BA" association="_3ADC7B74022D3CB5E39A0084"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB02DF00AF" name="A_inheritedMember_classifier" memberEnd="_3ADC7B74022D3CAB02DF02A3 _3ADC7B74022D3CAB02DF02C1">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB02DF02C1" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3CAB02DF00AF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rQT9gU-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rQT9gE-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBC39310094" name="A_nestedClassifier_class" memberEnd="_3ADC7B74022D3CBC3931033D _3ADC7B74022D3CBC3931035B">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBC3931035B" name="class" type="_3ADC7B74022D3CAB1D6D00A0" subsettedProperty="_3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3CBC39310094">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUaVghTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUaVgRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB21AF016F" name="A_attribute_classifier" memberEnd="_3ADC7B74022D3CAB21AF0364 _3ADC7B74022D3CAB21AF036E">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB21AF036E" name="classifier" type="_3ADC7B74022D3CAAECE80199" subsettedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3CAB21AF016F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUjfaBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUjfZxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB22490044" name="A_ownedAttribute_class" memberEnd="_3ADC7B74022D3CAB224A0230 _3ADC7B74022D3CAB224A0244"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB22E000E2" name="A_ownedOperation_class" memberEnd="_3ADC7B74022D3CAB22E10043 _3ADC7B74022D3CAB22E1004D"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB241802AD" name="A_precondition_preContext" memberEnd="_3ADC7B74022D3CAB241900D8 _3ADC7B74022D3CAB241900F6">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB241900F6" name="preContext" type="_3ADC7B74022D3CAB1D710164" subsettedProperty="_3ADC7B74022D3CAAF5A901A6" association="_3ADC7B74022D3CAB241802AD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUtQbRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUtQbBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB2431012C" name="A_postcondition_postContext" memberEnd="_3ADC7B74022D3CAB243102C7 _3ADC7B74022D3CAB243102E5">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB243102E5" name="postContext" type="_3ADC7B74022D3CAB1D710164" subsettedProperty="_3ADC7B74022D3CAAF5A901A6" association="_3ADC7B74022D3CAB2431012C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sUtQdxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sUtQdhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB2476038E" name="A_redefinedOperation_operation" memberEnd="_3ADC7B74022D3CAB247801D9 _3ADC7B74022D3CAB247801ED">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB247801ED" type="_3ADC7B74022D3CAB1D710164" association="_3ADC7B74022D3CAB2476038E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O-TD8U-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O-TD8E-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB248803D0" name="A_redefinedProperty_property" memberEnd="_3ADC7B74022D3CAB248A01A2 _3ADC7B74022D3CAB248A01AC">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB248A01AC" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D3CAB248803D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xTUzYU-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xTUzYE-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB3EBC02BE" name="A_ownedEnd_owningAssociation" memberEnd="_3ADC7B74022D3CAB3EBD00A2 _3ADC7B74022D3CAB3EBD00A4"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB56E102C8" name="A_ownedAttribute_datatype" memberEnd="_3ADC7B74022D3CAB56E200FD _3ADC7B74022D3CAB56E2011B"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB57240256" name="A_ownedOperation_datatype" memberEnd="_3ADC7B74022D3CAB572500E5 _3ADC7B74022D3CAB57250103"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB58340315" name="A_ownedLiteral_enumeration" memberEnd="_3ADC7B74022D3CAB5835014A _3ADC7B74022D3CAB58350154"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB5C7500C2" name="A_elementImport_importingNamespace" memberEnd="_3ADC7B74022D3CAB5C7602F5 _3ADC7B74022D3CAB5C7602FF"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB5CE7026B" name="A_packageImport_importingNamespace" memberEnd="_3ADC7B74022D3CAB5CEA01D9 _3ADC7B74022D3CAB5CEA01ED"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAB5D4302E5" name="A_importedPackage_packageImport" memberEnd="_3ADC7B74022D3CAB5D460019 _3ADC7B74022D3CAB5D460023">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAB5D460023" type="_3ADC7B74022D3CAB1D8F02A7" association="_3ADC7B74022D3CAB5D4302E5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7y0_gU-wEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7y0_gE-wEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC2C52E03DA" name="A_redefinedClassifier_classifier" memberEnd="_3ADC7B74022D3CC2C53102C6 _3ADC7B74022D3CC2C5310302">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC2C5310302" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3CC2C52E03DA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ocTk0U-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ocTk0E-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CECFC010132" name="A_specification_owningConstraint" memberEnd="_3ADC7B74022D3CECFC020007 _3ADC7B74022D3CECFC020012">
+ <ownedEnd xmi:id="_3ADC7B74022D3CECFC020012" name="owningConstraint" type="_3ADC7B74022D3CAAED67023C" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CECFC010132">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVTtZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVTtZRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CECFCD501BA" name="A_defaultValue_owningParameter" memberEnd="_3ADC7B74022D3CECFCD50386 _3ADC7B74022D3CECFCD5039A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CECFCD5039A" name="owningParameter" type="_3ADC7B74022D3CAB0B3D0362" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CECFCD501BA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVTtcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVTtbxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CED007D0378" name="A_defaultValue_owningProperty" memberEnd="_3ADC7B74022D3CED007E03CA _3ADC7B74022D3CED007E03DE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CED007E03DE" name="owningProperty" type="_3ADC7B74022D3CAB1D790101" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CED007D0378">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sVc3SRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sVc3SBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CEE3778016E" name="A_raisedException_behavioralFeature" memberEnd="_3ADC7B74022D3CEE37790007 _3ADC7B74022D3CEE37790039">
+ <ownedEnd xmi:id="_3ADC7B74022D3CEE37790039" type="_3ADC7B74022D3CAAFD470326" association="_3ADC7B74022D3CEE3778016E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7CT2oU-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7CT2oE-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAF5A80000" name="A_ownedRule_context" memberEnd="_3ADC7B74022D3CAAF5A9017E _3ADC7B74022D3CAAF5A901A6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAF0AF00E6" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D3CAAF0B00228 _3ADC7B74022D3CAAF0B00232"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CAAF1D0011D" name="A_member_namespace" memberEnd="_3ADC7B74022D3CAAF1D0036C _3ADC7B74022D3CAAF1D00380">
+ <ownedEnd xmi:id="_3ADC7B74022D3CAAF1D00380" type="_3ADC7B74022D3CAAECC502DA" association="_3ADC7B74022D3CAAF1D0011D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xc67oU-wEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xc67oE-wEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D514F6D0227" name="A_relatedElement_relationship" memberEnd="_3ADC7B74022D3D514F6E0106 _3ADC7B74022D3D514F6E0138">
+ <ownedEnd xmi:id="_3ADC7B74022D3D514F6E0138" type="_3ADC7B74022D3D514EBA0111" association="_3ADC7B74022D3D514F6D0227">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_51x5cU-vEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_51x5cE-vEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D51535902E9" name="A_endType_association" memberEnd="_3ADC7B74022D3D51535A0358 _3ADC7B74022D3D51535B0260">
+ <ownedEnd xmi:id="_3ADC7B74022D3D51535B0260" type="_3ADC7B74022D3CAB1DD70016" association="_3ADC7B74022D3D51535902E9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_exWF8U-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_exWF8E-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D53924803A0" name="A_upperValue_owningUpper" memberEnd="_3ADC7B74022D3D53924901A3 _3ADC7B74022D3D53924902A7">
+ <ownedEnd xmi:id="_3ADC7B74022D3D53924902A7" name="owningUpper" type="_3ADC7B74022D3CAAFD5202DC" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3D53924803A0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWDUMRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWDUMBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D539278011E" name="A_lowerValue_owningLower" memberEnd="_3ADC7B74022D3D5392780331 _3ADC7B74022D3D5392790062">
+ <ownedEnd xmi:id="_3ADC7B74022D3D5392790062" name="owningLower" type="_3ADC7B74022D3CAAFD5202DC" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3D539278011E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWDUOxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWDUOhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D623ABA00DD" name="A_receivingPackage_packageMerge" memberEnd="_3ADC7B74022D3D623ABA03C3 _3ADC7B74022D3D623ABA0354"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D623AF30284" name="A_mergedPackage_packageMerge" memberEnd="_3ADC7B74022D3D623AF40109 _3ADC7B74022D3D623AF4011D">
+ <ownedEnd xmi:id="_3ADC7B74022D3D623AF4011D" type="_3ADC7B74022D3D623A8601AB" association="_3ADC7B74022D3D623AF30284">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PAkfYU-0EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PAkfYE-0EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D78AD610091" name="A_instance_instanceValue" memberEnd="_3ADC7B74022D3D78AD610221 _3ADC7B74022D3D78AD610235">
+ <ownedEnd xmi:id="_3ADC7B74022D3D78AD610235" type="_3ADC7B74022D3D78AD4B0374" association="_3ADC7B74022D3D78AD610091">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uJDhsU-xEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uJDhsE-xEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D78AE0600C0" name="A_value_owningSlot" memberEnd="_3ADC7B74022D3D78AE070216 _3ADC7B74022D3D78AE070220">
+ <ownedEnd xmi:id="_3ADC7B74022D3D78AE070220" name="owningSlot" type="_3ADC7B74022D3CAB11B20214" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3D78AE0600C0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWWPIhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWWPIRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D78AE93004B" name="A_specification_owningInstanceSpec" memberEnd="_3ADC7B74022D3D78AE930285 _3ADC7B74022D3D78AE9303E4">
+ <ownedEnd xmi:id="_3ADC7B74022D3D78AE9303E4" name="owningInstanceSpec" type="_3ADC7B74022D3CAB11A7010A" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3D78AE93004B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWWPLBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWWPKxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DDD058B026C" name="A_packagedElement_owningPackage" memberEnd="_3ADC7B74022D3DDD058D0188 _3ADC7B74022D3DDD058D01BA">
+ <ownedEnd xmi:id="_3ADC7B74022D3DDD058D01BA" name="owningPackage" type="_3ADC7B74022D3CAB1D7E0162" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3DDD058B026C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sWWPNhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sWWPNRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DDD0667029A" name="A_importedMember_namespace" memberEnd="_3ADC7B74022D3DDD06680179 _3ADC7B74022D3DDD066801AB">
+ <ownedEnd xmi:id="_3ADC7B74022D3DDD066801AB" type="_3ADC7B74022D3CAAECC502DA" association="_3ADC7B74022D3DDD0667029A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ulCvkU-wEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ulCvkE-wEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFFC09E03E6" name="A_opposite_property" memberEnd="_3ADC7B74022D3DFFC0A002E5 _3ADC7B74022D3DFFC0A00321">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFFC0A00321" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D3DFFC09E03E6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hlDjsU-zEduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hlDjsE-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFFC0D200D4" name="A_subsettedProperty_property" memberEnd="_3ADC7B74022D3DFFC0D30270 _3ADC7B74022D3DFFC0D302C0">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFFC0D302C0" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D3DFFC0D200D4">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lKYEkU-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lKYEkE-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFFC74E02D9" name="A_memberEnd_association" memberEnd="_3ADC7B74022D3DFFC7500047 _3ADC7B74022D3DFFC750006F"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0265FC036D" name="A_ownedType_package" memberEnd="_3ADC7B74022D3E0265FD0094 _3ADC7B74022D3E0265FD01CA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E02674800B8" name="A_nestedPackage_nestingPackage" memberEnd="_3ADC7B74022D3E02674A0088 _3ADC7B74022D3E02674A00A6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E026DF9022D" name="A_redefinedElement_redefinableElement" memberEnd="_3ADC7B74022D3E026DFA035B _3ADC7B74022D3E026DFA038D">
+ <ownedEnd xmi:id="_3ADC7B74022D3E026DFA038D" type="_3ADC7B74022D3CAB007101D7" association="_3ADC7B74022D3E026DF9022D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o8QtgUpGEdq_msFUC9mdCA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o8QtgEpGEdq_msFUC9mdCA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E026E2B024D" name="A_redefinitionContext_redefinableElement" memberEnd="_3ADC7B74022D3E026E2C0064 _3ADC7B74022D3E026E2C017C">
+ <ownedEnd xmi:id="_3ADC7B74022D3E026E2C017C" type="_3ADC7B74022D3CAB007101D7" association="_3ADC7B74022D3E026E2B024D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cIx9sU-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cIx9sE-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E026F5E033F" name="A_general_classifier" memberEnd="_3ADC7B74022D3E026F600201 _3ADC7B74022D3E026F600324">
+ <ownedEnd xmi:id="_3ADC7B74022D3E026F600324" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3E026F5E033F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ks2QgU-yEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ks2QgE-yEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E027BE901AC" name="A_superClass_class" memberEnd="_3ADC7B74022D3E027BEB00C8 _3ADC7B74022D3E027BEB00F0">
+ <ownedEnd xmi:id="_3ADC7B74022D3E027BEB00F0" type="_3ADC7B74022D3CAB1D6D00A0" association="_3ADC7B74022D3E027BE901AC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pYGCMU-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pYGCME-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E028185014C" name="A_bodyCondition_bodyContext" memberEnd="_3ADC7B74022D3E0281850391 _3ADC7B74022D3E028186000D">
+ <ownedEnd xmi:id="_3ADC7B74022D3E028186000D" name="bodyContext" type="_3ADC7B74022D3CAB1D710164" subsettedProperty="_3ADC7B74022D3CAAF5A901A6" association="_3ADC7B74022D3E028185014C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXF2EhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXF2ERTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E02824600C8" name="A_type_operation" memberEnd="_3ADC7B74022D3E0282460399 _3ADC7B74022D3E02824700D3">
+ <ownedEnd xmi:id="_3ADC7B74022D3E02824700D3" type="_3ADC7B74022D3CAB1D710164" association="_3ADC7B74022D3E02824600C8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Iqx3cU-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Iqx3cE-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0282CA02BC" name="A_ownedParameter_operation" memberEnd="_3ADC7B74022D3E0282CB0322 _3ADC7B74022D3E0282CB035E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E59221B012C" name="A_operand_expression" memberEnd="_3ADC7B74022D3E59221E027B _3ADC7B74022D3E59221E02FD">
+ <ownedEnd xmi:id="_3ADC7B74022D3E59221E02FD" name="expression" type="_3ADC7B74022D3E5921EE010A" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3E59221B012C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sXYw8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sXYw8hTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E5924100105" name="A_raisedException_operation" memberEnd="_3ADC7B74022D3E5924110020 _3ADC7B74022D3E592411003E">
+ <ownedEnd xmi:id="_3ADC7B74022D3E592411003E" type="_3ADC7B74022D3CAB1D710164" association="_3ADC7B74022D3E5924100105">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LveXgU-zEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LveXgE-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F14DD10196" name="A_navigableOwnedEnd_association" memberEnd="_3ADC7B74022D40F14DD30207 _3ADC7B74022D40F14DD3021B">
+ <ownedEnd xmi:id="_3ADC7B74022D40F14DD3021B" type="_3ADC7B74022D3CAB1DD70016" association="_3ADC7B74022D40F14DD10196">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bIl2kU-zEduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bIl2kE-zEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3BAF164701DA" name="Interfaces">
+ <packageMerge xmi:id="_HAhywRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3ADF556A0044"/>
+ <packageMerge xmi:id="_HAhywhTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3342A195014D" name="Interface">
+ <ownedComment xmi:id="_sYb50RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3342A195014D">
+ <body>An interface is a kind of classifier that represents a declaration of a set of coherent public features and obligations. An interface specifies a contract; any instance of a classifier that realizes the interface must fulfill that contract. The obligations that may be associated with an interface are in the form of various kinds of constraints (such as pre- and post-conditions) or protocol specifications, which may impose ordering restrictions on interactions through the interface.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sYb52hTaEdqZu-3Jy1-uYg" name="visibility" constrainedElement="_3ADC7B74022D3342A195014D">
+ <ownedComment xmi:id="_sYb51hTaEdqZu-3Jy1-uYg" annotatedElement="_sYb52hTaEdqZu-3Jy1-uYg">
+ <body>The visibility of all features owned by an interface must be public.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sYb52xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.feature->forAll(f | f.visibility = #public)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3342A19C01ED" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B71EABF00A2" name="ownedAttribute" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB21AF0364 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B71EABF00A0">
+ <ownedComment xmi:id="_sYlDzhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B71EABF00A2">
+ <body>The attributes (i.e. the properties) owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYlD0hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYlD0RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B71EAE7005C" name="ownedOperation" type="_3ADC7B74022D411409140398" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B71EAE7005A">
+ <ownedComment xmi:id="_sYu0xhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B71EAE7005C">
+ <body>The operations owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYu0yhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYu0yRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC1AB2D03C7" name="nestedClassifier" type="_3ADC7B74022D3CAAECE80199" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CC1AB2B0248">
+ <ownedComment xmi:id="_sY4lxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC1AB2D03C7">
+ <body>References all the Classifiers that are defined (nested) within the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sY4lyhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sY4lyRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC4DF2C0009" name="redefinedInterface" type="_3ADC7B74022D3342A195014D" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CC4DF29039E">
+ <ownedComment xmi:id="_sY4l0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC4DF2C0009">
+ <body>References all the Interfaces redefined by this Interface.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sY4l1xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sY4l1hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B6D70E00032" name="InterfaceRealization">
+ <ownedComment xmi:id="_sYb53xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B6D70E00032">
+ <body>An interface realization is a specialized realization relationship between a classifier and an interface. This relationship signifies that the realizing classifier conforms to the contract specified by the interface.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B6D70F3010E" general="_3ADC7B74022D3B71F6410244"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD88A54022D" name="contract" type="_3ADC7B74022D3342A195014D" subsettedProperty="_3ADC7B74022D3AFF021C0000" association="_3ADC7B74022D3BD88A4A0251">
+ <ownedComment xmi:id="_sYu0zRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD88A54022D">
+ <body>References the Interface specifying the conformance contract.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYu00RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYu00BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD88B4C03C5" name="implementingClassifier" type="_3ADC7B74022D3D0B41210023" subsettedProperty="_3ADC7B74022D3AFF02160001" association="_3ADC7B74022D3BD88B460272">
+ <ownedComment xmi:id="_sYu03RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD88B4C03C5">
+ <body>References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sY4lwxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sY4lwhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0B41210023" name="BehavioredClassifier" isAbstract="true">
+ <ownedComment xmi:id="_sYb55BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0B41210023">
+ <body>A behaviored classifier may have an interface realization.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E1D44080137" general="_3ADC7B74022D3CC0E4E5029C"/>
+ <generalization xmi:id="_3ADC7B74022D41B0D4C90208" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD88B4C03BB" name="interfaceRealization" type="_3ADC7B74022D3B6D70E00032" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187 _3ADC7B74022D3AFF02160000" association="_3ADC7B74022D3BD88B460272">
+ <ownedComment xmi:id="_sYu01xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD88B4C03BB">
+ <body>The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYu02xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYu02hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D411409140398" name="Operation">
+ <generalization xmi:id="_3ADC7B74022D41B0D49603BD" general="_3ADC7B74022D3CAAFD470326"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B71EAE7005B" name="interface" type="_3ADC7B74022D3342A195014D" subsettedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3B71EAE7005A">
+ <ownedComment xmi:id="_sYu0wBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B71EAE7005B">
+ <body>The Interface that owns this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYu0xBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYu0wxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B71EABF00A0" name="A_interface_ownedAttribute" memberEnd="_3ADC7B74022D3B71EABF00A1 _3ADC7B74022D3B71EABF00A2">
+ <ownedEnd xmi:id="_3ADC7B74022D3B71EABF00A1" type="_3ADC7B74022D3342A195014D" subsettedProperty="_3ADC7B74022D3CAB21AF036E _3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3B71EABF00A0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYlDzBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYlDyxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B71EAE7005A" name="A_interface_ownedOperation" memberEnd="_3ADC7B74022D3B71EAE7005B _3ADC7B74022D3B71EAE7005C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD88A4A0251" name="A_contract_interfaceRealization" memberEnd="_3ADC7B74022D3BD88A54022D _3ADC7B74022D3BD88A55006C">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD88A55006C" type="_3ADC7B74022D3B6D70E00032" association="_3ADC7B74022D3BD88A4A0251">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sYu01BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sYu00xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD88B460272" name="A_interfaceRealization_implementingClassifier" memberEnd="_3ADC7B74022D3BD88B4C03BB _3ADC7B74022D3BD88B4C03C5"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC1AB2B0248" name="A_nestedClassifier_interface" memberEnd="_3ADC7B74022D3CC1AB2D03C7 _3ADC7B74022D3CC1AB2D03E5">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC1AB2D03E5" type="_3ADC7B74022D3342A195014D" subsettedProperty="_3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3CC1AB2B0248">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sY4lzRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sY4lzBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC4DF29039E" name="A_interface_redefinedInterface" memberEnd="_3ADC7B74022D3CC4DF2B03D3 _3ADC7B74022D3CC4DF2C0009">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC4DF2B03D3" type="_3ADC7B74022D3342A195014D" association="_3ADC7B74022D3CC4DF29039E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sY4l0RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sY4l0BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3ADF556A0044" name="Dependencies">
+ <packageImport xmi:id="_UcugAD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_HBbKoxTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D33E8FEF701E0" name="Usage">
+ <ownedComment xmi:id="_sZBvtRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33E8FEF701E0">
+ <body>A usage is a relationship in which one element requires another element (or set of elements) for its full implementation or operation. A usage is a dependency in which the client requires the presence of the supplier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D33E8FF070082" general="_3ADC7B74022D327A646F00E6"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3388FE7D006E" name="Abstraction">
+ <ownedComment xmi:id="_sZBvuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3388FE7D006E">
+ <body>An abstraction is a relationship that relates two elements or sets of elements that represent the same concept at different levels of abstraction or from different viewpoints.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3388FE87006E" general="_3ADC7B74022D327A646F00E6"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD1E59402F0" name="mapping" type="_3ADC7B74022D3CAAF87D0107" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3BD1E5940083">
+ <ownedComment xmi:id="_sZUqpRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD1E59402F0">
+ <body>An composition of an Expression that states the abstraction relationship between the supplier and the client. In some cases, such as Derivation, it is usually formal and unidirectional; in other cases, such as Trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the elements is not specified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZUqqRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZUqqBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <pa