Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-08-31 13:12:53 +0000
committerEike Stepper2007-08-31 13:12:53 +0000
commitb74434a54e748752337096bfeff4604edc120507 (patch)
treed2c6cf279acf1f37e93544e18a5d6c909736d4c2 /plugins
parentbe097c966f461f5146535c7b546cbd4ee564dd2f (diff)
downloadcdo-b74434a54e748752337096bfeff4604edc120507.tar.gz
cdo-b74434a54e748752337096bfeff4604edc120507.tar.xz
cdo-b74434a54e748752337096bfeff4604edc120507.zip
[201839] Net4j/CDO Components must comform to incubation rules
https://bugs.eclipse.org/bugs/show_bug.cgi?id=201839
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.classpath9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.cvsignore3
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.project28
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch21
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch19
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF17
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties6
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml64
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml56
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/My.ecore3
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/about.html42
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/build.properties9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/copyright.txt8
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore498
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore94
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore518
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/epl-v10.html319
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/license.html319
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/model1.ecore69
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/model2.ecore9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/plugin.properties19
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java243
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java60
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java273
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java263
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java80
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java105
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java73
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java58
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java627
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java341
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java112
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java88
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml42
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml69
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml977
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml4818
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml45
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml57
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml57
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml18
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml14306
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.ecore15558
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.merged.uml15806
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/uml2/UML.uml1947
54 files changed, 58172 insertions, 170 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/.classpath b/plugins/org.eclipse.emf.cdo.tests/.classpath
new file mode 100644
index 0000000000..9e7e4b0614
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.net4j.db.derby"/>
+ <classpathentry kind="lib" path="/org.eclipse.net4j.db.derby/lib/derby.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.cdo.tests/.cvsignore b/plugins/org.eclipse.emf.cdo.tests/.cvsignore
new file mode 100644
index 0000000000..f43b3874ca
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.cvsignore
@@ -0,0 +1,3 @@
+bin
+doc
+model1X.ecore
diff --git a/plugins/org.eclipse.emf.cdo.tests/.project b/plugins/org.eclipse.emf.cdo.tests/.project
new file mode 100644
index 0000000000..e05af07d91
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.emf.cdo.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..85dc5b8c67
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sun Jan 07 14:27:04 CET 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch
new file mode 100644
index 0000000000..d13c4a9d2a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 AllTests.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch
new file mode 100644
index 0000000000..3a7041df70
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 ContainmentTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/ContainmentTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.ContainmentTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch
new file mode 100644
index 0000000000..f3e604c50f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 CrossReferenceTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/CrossReferenceTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.CrossReferenceTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch
new file mode 100644
index 0000000000..a431a65d5d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 InitialTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/InitialTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.InitialTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch
new file mode 100644
index 0000000000..5f6f90f4e5
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 InvalidationTest.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/InvalidationTest.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.InvalidationTest"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch b/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch
new file mode 100644
index 0000000000..45c76017c4
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/CDO2 TDD.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/tdd/TDD.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;folder nest=&amp;quot;false&amp;quot; path=&amp;quot;/org.eclipse.emf.cdo.weaver.ajdt/ecore&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.folder&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.TDD"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddebug=true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..a163542480
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.emf.cdo.tests
+Bundle-Version: 0.8.0.qualifier
+Bundle-Activator: org.eclipse.emf.cdo.tests.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.net4j.tests,
+ org.eclipse.net4j.tcp,
+ org.eclipse.emf.cdo.server,
+ org.eclipse.emf.cdo.server.db,
+ org.eclipse.emf.cdo,
+ org.eclipse.emf.cdo.tests.model1,
+ org.eclipse.emf.ecore.xmi
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties
deleted file mode 100644
index c79f2c2014..0000000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-# Service
-acceptor.listenAddr=0.0.0.0
-acceptor.listenPort=2037
-
-# Internal
-connectionManager.maxConnections=50
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml
deleted file mode 100644
index a5751d197f..0000000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/embedded/net4j-embedded.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
-
- <!-- ######################################################## -->
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value> plugin:/META-INF/net4j/embedded/net4j-embedded.properties </value>
- </list>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="serverControlProtocol"
- class="org.eclipse.net4j.core.protocol.ServerControlProtocol">
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="clientControlProtocol"
- class="org.eclipse.net4j.core.protocol.ClientControlProtocol">
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="connectionManager"
- class="org.eclipse.net4j.core.impl.ConnectionManagerImpl">
- <property name="maxConnections">
- <value>${connectionManager.maxConnections}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="connector" class="org.eclipse.net4j.embedded.impl.ActiveEmbeddedConnectorImpl">
- <property name="bufferPool">
- <ref bean="bufferPool"/>
- </property>
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="slave" singleton="false"
- class="org.eclipse.net4j.embedded.impl.PassiveEmbeddedConnectorImpl">
- <property name="bufferPool">
- <ref bean="bufferPool"/>
- </property>
- <property name="connectionManager">
- <ref local="connectionManager"/>
- </property>
- <property name="protocolManager">
- <ref bean="protocolManager"/>
- </property>
- </bean>
-
-</beans>
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties
deleted file mode 100644
index 451c04300d..0000000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# Internal
-randomizer.algorithm=SHA1PRNG
-bufferPool.bufferSize=4096
-channel.responseTimeoutMillis=2000
diff --git a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml b/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml
deleted file mode 100644
index c0ce91cccc..0000000000
--- a/plugins/org.eclipse.emf.cdo.tests/META-INF/net4j/net4j.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
-
- <!-- ######################################################## -->
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value> plugin:/META-INF/net4j/net4j.properties </value>
- </list>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="randomizer" class="org.eclipse.net4j.core.impl.RandomizerImpl">
- <property name="algorithmName">
- <value>${randomizer.algorithm}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="bufferPool" class="org.eclipse.net4j.core.impl.BufferPoolImpl">
- <property name="bufferSize">
- <value>${bufferPool.bufferSize}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="protocolManager"
- class="org.eclipse.net4j.core.impl.ProtocolManagerImpl"/>
-
- <!-- ######################################################## -->
- <bean id="multiplexer" class="org.eclipse.net4j.core.impl.MultiplexerImpl"/>
-
- <!-- ######################################################## -->
- <bean id="channel" singleton="false"
- class="org.eclipse.net4j.core.impl.ChannelImpl">
- <property name="multiplexer">
- <ref local="multiplexer"/>
- </property>
- <property name="responseTimeoutMillis">
- <value>${channel.responseTimeoutMillis}</value>
- </property>
- </bean>
-
- <!-- ######################################################## -->
- <bean id="selectorManager"
- class="org.eclipse.net4j.socket.impl.SelectorManagerImpl"/>
-
- <!-- ######################################################## -->
- <bean id="releaseExecutor"
- class="org.eclipse.net4j.core.impl.QueueingExecutorImpl"/>
-
-</beans>
diff --git a/plugins/org.eclipse.emf.cdo.tests/My.ecore b/plugins/org.eclipse.emf.cdo.tests/My.ecore
new file mode 100644
index 0000000000..e9428b96cf
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/My.ecore
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"/>
diff --git a/plugins/org.eclipse.emf.cdo.tests/about.html b/plugins/org.eclipse.emf.cdo.tests/about.html
new file mode 100644
index 0000000000..81a265f458
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/about.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+
+ <head>
+
+ <meta content="text/html; charset=ISO-8859-1"
+ http-equiv="Content-Type"/>
+
+ <title>About</title>
+
+ </head>
+
+ <body lang="EN-US">
+
+ <h2>About This Content</h2>
+
+ <p>May 17, 2007</p>
+
+ <h3>License</h3>
+
+ <p>The Eclipse Foundation makes available all content in this
+ plug-in (&quot;Content&quot;). Unless otherwise indicated below,
+ the Content is provided to you under the terms and conditions of
+ the Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of
+ the EPL is available at
+ <a href="http://www.eclipse.org/legal/epl-v10.html">
+ http://www.eclipse.org/legal/epl-v10.html</a>. For purposes of the
+ EPL, &quot;Program&quot; will mean the Content.</p>
+
+ <p>If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ (&quot;Redistributor&quot;) and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor&apos;s license that was provided with the Content. If
+ no such license exists, contact the Redistributor. Unless otherwise
+ indicated below, the terms and conditions of the EPL still apply to
+ any source code in the Content.</p>
+
+ </body>
+
+</html>
+
diff --git a/plugins/org.eclipse.emf.cdo.tests/build.properties b/plugins/org.eclipse.emf.cdo.tests/build.properties
new file mode 100644
index 0000000000..42d4758112
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ copyright.txt,\
+ epl-v10.html,\
+ license.html,\
+ plugin.properties
diff --git a/plugins/org.eclipse.emf.cdo.tests/copyright.txt b/plugins/org.eclipse.emf.cdo.tests/copyright.txt
new file mode 100644
index 0000000000..025f15218e
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/copyright.txt
@@ -0,0 +1,8 @@
+Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Eike Stepper - initial API and implementation \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore b/plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore
new file mode 100644
index 0000000000..7e266df1e8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/ecore/Ecore.ecore
@@ -0,0 +1,498 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ecore"
+ nsURI="http://www.eclipse.org/emf/2002/Ecore" nsPrefix="ecore">
+ <eClassifiers xsi:type="ecore:EClass" name="EAttribute" eSuperTypes="#//EStructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentTransient"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="iD" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributeType" lowerBound="1"
+ eType="#//EDataType" changeable="false" volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EAnnotation" eSuperTypes="#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedSourceURI"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="details" upperBound="-1"
+ eType="#//EStringToStringMapEntry" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eModelElement" eType="#//EModelElement"
+ transient="true" resolveProxies="false" eOpposite="#//EModelElement/eAnnotations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//EObject" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="references" upperBound="-1"
+ eType="#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EClass" eSuperTypes="#//EClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
+ </eAnnotations>
+ <eOperations name="isSuperTypeOf" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="someClass" eType="#//EClass"/>
+ </eOperations>
+ <eOperations name="getFeatureCount" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+ <eParameters name="featureID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getFeatureID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="getEStructuralFeature" eType="#//EStructuralFeature">
+ <eParameters name="featureName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="interface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperTypes" upperBound="-1"
+ eType="#//EClass" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOperations" upperBound="-1"
+ eType="#//EOperation" containment="true" resolveProxies="false" eOpposite="#//EOperation/eContainingClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllAttributes" upperBound="-1"
+ eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllReferences" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eReferences" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAttributes" upperBound="-1"
+ eType="#//EAttribute" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllContainments" upperBound="-1"
+ eType="#//EReference" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllOperations" upperBound="-1"
+ eType="#//EOperation" changeable="false" volatile="true" transient="true"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllStructuralFeatures"
+ upperBound="-1" eType="#//EStructuralFeature" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllSuperTypes" upperBound="-1"
+ eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eIDAttribute" eType="#//EAttribute"
+ changeable="false" volatile="true" transient="true" derived="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eStructuralFeatures" upperBound="-1"
+ eType="#//EStructuralFeature" containment="true" resolveProxies="false" eOpposite="#//EStructuralFeature/eContainingClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericSuperTypes" upperBound="-1"
+ eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAllGenericSuperTypes"
+ upperBound="-1" eType="#//EGenericType" changeable="false" volatile="true"
+ transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EClassifier" abstract="true" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+ </eAnnotations>
+ <eOperations name="isInstance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="object" eType="#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="getClassifierID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClassName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceClass" changeable="false"
+ volatile="true" transient="true" derived="true">
+ <eGenericType eClassifier="#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceTypeName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" eType="#//EPackage"
+ changeable="false" transient="true" eOpposite="#//EPackage/eClassifiers"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+ eType="#//ETypeParameter" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EDataType" eSuperTypes="#//EClassifier">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EEnum" eSuperTypes="#//EDataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+ </eAnnotations>
+ <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+ <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getEEnumLiteral" eType="#//EEnumLiteral">
+ <eParameters name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eOperations>
+ <eOperations name="getEEnumLiteralByLiteral" eType="#//EEnumLiteral">
+ <eParameters name="literal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eLiterals" upperBound="-1"
+ eType="#//EEnumLiteral" containment="true" resolveProxies="false" eOpposite="#//EEnumLiteral/eEnum"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EEnumLiteral" eSuperTypes="#//ENamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="instance" eType="#//EEnumerator"
+ transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="literal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eEnum" eType="#//EEnum"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EEnum/eLiterals"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EFactory" eSuperTypes="#//EModelElement">
+ <eOperations name="create" eType="#//EObject">
+ <eParameters name="eClass" eType="#//EClass"/>
+ </eOperations>
+ <eOperations name="createFromString" eType="#//EJavaObject">
+ <eParameters name="eDataType" eType="#//EDataType"/>
+ <eParameters name="literalValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="convertToString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eParameters name="eDataType" eType="#//EDataType"/>
+ <eParameters name="instanceValue" eType="#//EJavaObject"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ePackage" lowerBound="1"
+ eType="#//EPackage" transient="true" resolveProxies="false" eOpposite="#//EPackage/eFactoryInstance"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EModelElement" abstract="true" eSuperTypes="#//EObject">
+ <eOperations name="getEAnnotation" eType="#//EAnnotation">
+ <eParameters name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eAnnotations" upperBound="-1"
+ eType="#//EAnnotation" containment="true" resolveProxies="false" eOpposite="#//EAnnotation/eModelElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ENamedElement" abstract="true" eSuperTypes="#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedName"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EObject">
+ <eOperations name="eClass" eType="#//EClass"/>
+ <eOperations name="eIsProxy" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="eResource" eType="#//EResource"/>
+ <eOperations name="eContainer" eType="#//EObject"/>
+ <eOperations name="eContainingFeature" eType="#//EStructuralFeature"/>
+ <eOperations name="eContainmentFeature" eType="#//EReference"/>
+ <eOperations name="eContents">
+ <eGenericType eClassifier="#//EEList">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eAllContents">
+ <eGenericType eClassifier="#//ETreeIterator">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eCrossReferences">
+ <eGenericType eClassifier="#//EEList">
+ <eTypeArguments eClassifier="#//EObject"/>
+ </eGenericType>
+ </eOperations>
+ <eOperations name="eGet" eType="#//EJavaObject">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eGet" eType="#//EJavaObject">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ <eParameters name="resolve" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="eSet">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ <eParameters name="newValue" eType="#//EJavaObject"/>
+ </eOperations>
+ <eOperations name="eIsSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ <eOperations name="eUnset">
+ <eParameters name="feature" eType="#//EStructuralFeature"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EOperation" eSuperTypes="#//ETypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eOperations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameters" upperBound="-1"
+ eType="#//ETypeParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eParameters" upperBound="-1"
+ eType="#//EParameter" containment="true" resolveProxies="false" eOpposite="#//EParameter/eOperation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eExceptions" upperBound="-1"
+ eType="#//EClassifier" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericExceptions" upperBound="-1"
+ eType="#//EGenericType" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EPackage" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+ </eAnnotations>
+ <eOperations name="getEClassifier" eType="#//EClassifier">
+ <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsURI" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsPrefix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eFactoryInstance" lowerBound="1"
+ eType="#//EFactory" transient="true" resolveProxies="false" eOpposite="#//EFactory/ePackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifiers" upperBound="-1"
+ eType="#//EClassifier" containment="true" eOpposite="#//EClassifier/ePackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSubpackages" upperBound="-1"
+ eType="#//EPackage" containment="true" eOpposite="#//EPackage/eSuperPackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eSuperPackage" eType="#//EPackage"
+ changeable="false" transient="true" eOpposite="#//EPackage/eSubpackages"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EParameter" eSuperTypes="#//ETypedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOperation" eType="#//EOperation"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EOperation/eParameters"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EReference" eSuperTypes="#//EStructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="container" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resolveProxies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eOpposite" eType="#//EReference"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eReferenceType" lowerBound="1"
+ eType="#//EClass" changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eKeys" upperBound="-1"
+ eType="#//EAttribute"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EStructuralFeature" abstract="true"
+ eSuperTypes="#//ETypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ValidDefaultValueLiteral"/>
+ </eAnnotations>
+ <eOperations name="getFeatureID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eOperations name="getContainerClass">
+ <eGenericType eClassifier="#//EJavaClass">
+ <eTypeArguments/>
+ </eGenericType>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="changeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueLiteral" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="#//EJavaObject"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unsettable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="derived" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eContainingClass" eType="#//EClass"
+ changeable="false" transient="true" resolveProxies="false" eOpposite="#//EClass/eStructuralFeatures"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ETypedElement" abstract="true" eSuperTypes="#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordered" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ defaultValueLiteral="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="many" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="required" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eType" eType="#//EClassifier"
+ volatile="true" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eGenericType" eType="#//EGenericType"
+ volatile="true" unsettable="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedIsSetVisibility" value="true"/>
+ <details key="suppressedUnsetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBigDecimal" instanceClassName="java.math.BigDecimal">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBigInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBoolean" instanceClassName="boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EBooleanObject" instanceClassName="java.lang.Boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EBoolean"/>
+ <details key="name" value="EBoolean:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByte" instanceClassName="byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByteArray" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EByteObject" instanceClassName="java.lang.Byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EByte"/>
+ <details key="name" value="EByte:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EChar" instanceClassName="char"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="ECharacterObject" instanceClassName="java.lang.Character">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EChar"/>
+ <details key="name" value="EChar:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDate" instanceClassName="java.util.Date"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDiagnosticChain" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDouble" instanceClassName="double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EDoubleObject" instanceClassName="java.lang.Double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EDouble"/>
+ <details key="name" value="EDouble:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EEList" instanceClassName="org.eclipse.emf.common.util.EList"
+ serializable="false">
+ <eTypeParameters name="E"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EEnumerator" instanceClassName="org.eclipse.emf.common.util.Enumerator"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMap" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFeatureMapEntry" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFloat" instanceClassName="float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EFloatObject" instanceClassName="java.lang.Float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EFloat"/>
+ <details key="name" value="EFloat:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EInt" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EIntegerObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EInt"/>
+ <details key="name" value="EInt:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaClass" instanceClassName="java.lang.Class">
+ <eTypeParameters name="T"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EJavaObject" instanceClassName="java.lang.Object"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="ELong" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ELongObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="ELong"/>
+ <details key="name" value="ELong:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EMap" instanceClassName="java.util.Map"
+ serializable="false">
+ <eTypeParameters name="K"/>
+ <eTypeParameters name="V"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EResource" instanceClassName="org.eclipse.emf.ecore.resource.Resource"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EResourceSet" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet"
+ serializable="false"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="EShort" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EShortObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="EShort"/>
+ <details key="name" value="EShort:Object"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="EString" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EStringToStringMapEntry" instanceClassName="java.util.Map$Entry">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ETreeIterator" instanceClassName="org.eclipse.emf.common.util.TreeIterator"
+ serializable="false">
+ <eTypeParameters name="E"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EGenericType" eSuperTypes="#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eUpperBound" eType="#//EGenericType"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeArguments" upperBound="-1"
+ eType="#//EGenericType" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eRawType" lowerBound="1"
+ eType="#//EClassifier" changeable="false" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eLowerBound" eType="#//EGenericType"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eTypeParameter" eType="#//ETypeParameter"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eClassifier" eType="#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ETypeParameter" eSuperTypes="#//ENamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="eBounds" upperBound="-1"
+ eType="#//EGenericType" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore
new file mode 100644
index 0000000000..ed4ba16ab9
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLNamespace.ecore
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="namespace"
+ nsURI="http://www.w3.org/XML/1998/namespace" nsPrefix="xml">
+ <eAnnotations source="http://www.w3.org/XML/1998/namespace">
+ <details key="lang" value="en"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EDataType" name="LangType" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="lang_._type"/>
+ <details key="memberTypes" value="http://www.eclipse.org/emf/2003/XMLType#language lang_._type_._member_._1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="LangTypeNull" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="lang_._type_._member_._1"/>
+ <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#string"/>
+ <details key="enumeration" value=""/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="SpaceType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="space_._type"/>
+ </eAnnotations>
+ <eLiterals name="default"/>
+ <eLiterals name="preserve" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="SpaceTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="space_._type:Object"/>
+ <details key="baseType" value="space_._type"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XMLNamespaceDocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="base" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnyURI">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="base"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//ID"
+ iD="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="id"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lang" eType="#//LangType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="lang"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="space" eType="#//SpaceType"
+ defaultValueLiteral="preserve" unsettable="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="space"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore
new file mode 100644
index 0000000000..a24509bdf7
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/ecore/XMLType.ecore
@@ -0,0 +1,518 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="type"
+ nsURI="http://www.eclipse.org/emf/2003/XMLType" nsPrefix="ecore.xml.type">
+ <eClassifiers xsi:type="ecore:EDataType" name="AnySimpleType" instanceClassName="java.lang.Object">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="anySimpleType"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnyType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="anyType"/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="any" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="wildcards" value="##any"/>
+ <details key="name" value=":1"/>
+ <details key="processing" value="lax"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="anyAttribute" unique="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attributeWildcard"/>
+ <details key="wildcards" value="##any"/>
+ <details key="name" value=":2"/>
+ <details key="processing" value="lax"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="AnyURI" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="anyURI"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Base64Binary" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="base64Binary"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="boolean"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="BooleanObject" instanceClassName="java.lang.Boolean">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="boolean:Object"/>
+ <details key="baseType" value="boolean"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Byte" instanceClassName="byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ByteObject" instanceClassName="java.lang.Byte">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="byte:Object"/>
+ <details key="baseType" value="byte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Date" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="date"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="DateTime" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="dateTime"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Decimal" instanceClassName="java.math.BigDecimal">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="decimal"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Double" instanceClassName="double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="double"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="DoubleObject" instanceClassName="java.lang.Double">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="double:Object"/>
+ <details key="baseType" value="double"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Duration" instanceClassName="javax.xml.datatype.Duration">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="duration"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ENTITIES" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ENTITIES"/>
+ <details key="baseType" value="ENTITIES_._base"/>
+ <details key="minLength" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ENTITIESBase" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ENTITIES_._base"/>
+ <details key="itemType" value="ENTITY"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ENTITY" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ENTITY"/>
+ <details key="baseType" value="NCName"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Float" instanceClassName="float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="float"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="FloatObject" instanceClassName="java.lang.Float">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="float:Object"/>
+ <details key="baseType" value="float"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GDay" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gDay"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GMonth" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gMonth"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GMonthDay" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gMonthDay"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GYear" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gYear"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="GYearMonth" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="gYearMonth"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="HexBinary" instanceClassName="byte[]">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="hexBinary"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ID" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="ID"/>
+ <details key="baseType" value="NCName"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IDREF" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="IDREF"/>
+ <details key="baseType" value="NCName"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IDREFS" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="IDREFS"/>
+ <details key="baseType" value="IDREFS_._base"/>
+ <details key="minLength" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IDREFSBase" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="IDREFS_._base"/>
+ <details key="itemType" value="IDREF"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Int" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="integer"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="IntObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="int:Object"/>
+ <details key="baseType" value="int"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Language" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="language"/>
+ <details key="baseType" value="token"/>
+ <details key="pattern" value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Long" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="LongObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="long:Object"/>
+ <details key="baseType" value="long"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Name" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="Name"/>
+ <details key="baseType" value="token"/>
+ <details key="pattern" value="\i\c*"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NCName" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NCName"/>
+ <details key="baseType" value="Name"/>
+ <details key="pattern" value="[\i-[:]][\c-[:]]*"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NegativeInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="negativeInteger"/>
+ <details key="baseType" value="nonPositiveInteger"/>
+ <details key="maxInclusive" value="-1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NMTOKEN" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NMTOKEN"/>
+ <details key="baseType" value="token"/>
+ <details key="pattern" value="\c+"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NMTOKENS" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NMTOKENS"/>
+ <details key="baseType" value="NMTOKENS_._base"/>
+ <details key="minLength" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NMTOKENSBase" instanceClassName="java.util.List">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NMTOKENS_._base"/>
+ <details key="itemType" value="NMTOKEN"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NonNegativeInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="nonNegativeInteger"/>
+ <details key="baseType" value="integer"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NonPositiveInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="nonPositiveInteger"/>
+ <details key="baseType" value="integer"/>
+ <details key="maxInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NormalizedString" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="normalizedString"/>
+ <details key="baseType" value="string"/>
+ <details key="whiteSpace" value="replace"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="NOTATION" instanceClassName="javax.xml.namespace.QName">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="NOTATION"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PositiveInteger" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="positiveInteger"/>
+ <details key="baseType" value="nonNegativeInteger"/>
+ <details key="minInclusive" value="1"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProcessingInstruction">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="processingInstruction_._type"/>
+ <details key="kind" value="empty"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" eType="#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="data"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="target" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="target"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="QName" instanceClassName="javax.xml.namespace.QName">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="QName"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Short" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="ShortObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="short:Object"/>
+ <details key="baseType" value="short"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleAnyType" eSuperTypes="#//AnyType">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="simpleAnyType"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=":3"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//AnySimpleType"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=":4"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instanceType" lowerBound="1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EDataType" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=":5"/>
+ <details key="kind" value="simple"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="string"/>
+ <details key="whiteSpace" value="preserve"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Time" instanceClassName="javax.xml.datatype.XMLGregorianCalendar">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="time"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Token" instanceClassName="java.lang.String">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="token"/>
+ <details key="baseType" value="normalizedString"/>
+ <details key="whiteSpace" value="collapse"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedByte" instanceClassName="short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedByte"/>
+ <details key="maxInclusive" value="255"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedByteObject" instanceClassName="java.lang.Short">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedByte:Object"/>
+ <details key="baseType" value="unsignedByte"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedInt" instanceClassName="long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedInt"/>
+ <details key="maxInclusive" value="4294967295"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedIntObject" instanceClassName="java.lang.Long">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedInt:Object"/>
+ <details key="baseType" value="unsignedInt"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedLong" instanceClassName="java.math.BigInteger">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedLong"/>
+ <details key="baseType" value="nonNegativeInteger"/>
+ <details key="maxInclusive" value="18446744073709551615"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedShort" instanceClassName="int">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedShort"/>
+ <details key="maxInclusive" value="65535"/>
+ <details key="minInclusive" value="0"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnsignedShortObject" instanceClassName="java.lang.Integer">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value="unsignedShort:Object"/>
+ <details key="baseType" value="unsignedShort"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XMLTypeDocumentRoot">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="name" value=""/>
+ <details key="kind" value="mixed"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="elementWildcard"/>
+ <details key="name" value=":mixed"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xmlns:prefix"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+ transient="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="attribute"/>
+ <details key="name" value="xsi:schemaLocation"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cDATA" unique="false" upperBound="-2"
+ eType="#//String" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="cDATA"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" unique="false"
+ upperBound="-2" eType="#//String" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="comment"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="processingInstruction"
+ upperBound="-2" eType="#//ProcessingInstruction" volatile="true" transient="true"
+ derived="true" containment="true" resolveProxies="false">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="processingInstruction"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="text" unique="false" upperBound="-2"
+ eType="#//String" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ <details key="name" value="text"/>
+ <details key="namespace" value="##targetNamespace"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="suppressedGetVisibility" value="true"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/epl-v10.html b/plugins/org.eclipse.emf.cdo.tests/epl-v10.html
new file mode 100644
index 0000000000..d7b88e9416
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/epl-v10.html
@@ -0,0 +1,319 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/org/documents/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml"><title>Eclipse Public License - Version 1.0</title><!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2004-03-05T23:03:00Z</o:Created>
+ <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+ <o:Pages>4</o:Pages>
+ <o:Words>1626</o:Words>
+ <o:Characters>9270</o:Characters>
+ <o:Lines>77</o:Lines>
+ <o:Paragraphs>18</o:Paragraphs>
+ <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+ <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+
+
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style></head>
+
+<body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><!--[if !supportEmptyParas]-->&nbsp;<!--[endif]--><o:p></o:p></p>
+
+</div>
+
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/license.html b/plugins/org.eclipse.emf.cdo.tests/license.html
new file mode 100644
index 0000000000..d7b88e9416
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/license.html
@@ -0,0 +1,319 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/org/documents/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml"><title>Eclipse Public License - Version 1.0</title><!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2004-03-05T23:03:00Z</o:Created>
+ <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+ <o:Pages>4</o:Pages>
+ <o:Words>1626</o:Words>
+ <o:Characters>9270</o:Characters>
+ <o:Lines>77</o:Lines>
+ <o:Paragraphs>18</o:Paragraphs>
+ <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+ <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+
+
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style></head>
+
+<body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><!--[if !supportEmptyParas]-->&nbsp;<!--[endif]--><o:p></o:p></p>
+
+</div>
+
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/model1.ecore b/plugins/org.eclipse.emf.cdo.tests/model1.ecore
new file mode 100644
index 0000000000..9c39d345f6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/model1.ecore
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="model1"
+ nsURI="http://www.eclipse.org/emf/CDO/tests/model1/1.0.0" nsPrefix="model1">
+ <eClassifiers xsi:type="ecore:EClass" name="Company">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="test" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="categories" upperBound="-1"
+ eType="#//Category" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="suppliers" upperBound="-1"
+ eType="#//Supplier" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="customers" upperBound="-1"
+ eType="#//Customer" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="purchaseOrders" upperBound="-1"
+ eType="#//PurchaseOrder" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="salesOrders" upperBound="-1"
+ eType="#//SalesOrder" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Supplier">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="purchaseOrders" upperBound="-1"
+ eType="#//PurchaseOrder" eOpposite="#//PurchaseOrder/supplier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Customer">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="salesOrders" upperBound="-1"
+ eType="#//SalesOrder" eOpposite="#//SalesOrder/customer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Order">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderDetails" upperBound="-1"
+ eType="#//OrderDetail" containment="true" eOpposite="#//OrderDetail/order"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OrderDetail">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="order" lowerBound="1" eType="#//Order"
+ eOpposite="#//Order/orderDetails"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="product" eType="#//Product"
+ eOpposite="#//Product/orderDetails"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="price" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PurchaseOrder" eSuperTypes="#//Order">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supplier" lowerBound="1"
+ eType="#//Supplier" eOpposite="#//Supplier/purchaseOrders"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SalesOrder" eSuperTypes="#//Order">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="customer" lowerBound="1"
+ eType="#//Customer" eOpposite="#//Customer/salesOrders"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Category">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="categories" upperBound="-1"
+ eType="#//Category" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="products" upperBound="-1"
+ eType="#//Product" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Product">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderDetails" upperBound="-1"
+ eType="#//OrderDetail" eOpposite="#//OrderDetail/product"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/model2.ecore b/plugins/org.eclipse.emf.cdo.tests/model2.ecore
new file mode 100644
index 0000000000..c193111dbf
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/model2.ecore
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="model2"
+ nsURI="http://model2" nsPrefix="model2">
+ <eClassifiers xsi:type="ecore:EClass" name="CompanyProxy">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="company" eType="ecore:EClass model1.ecore#//Company"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/plugin.properties b/plugins/org.eclipse.emf.cdo.tests/plugin.properties
new file mode 100644
index 0000000000..3e4b3372e3
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/plugin.properties
@@ -0,0 +1,19 @@
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+# ====================================================================
+# To code developer:
+# Do NOT change the properties between this line and the
+# "%%% END OF TRANSLATED PROPERTIES %%%" line.
+# Make a new property name, append to the end of the file and change
+# the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = CDO Tests TDD (Incubation)
+providerName = Eclipse.org
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java
new file mode 100644
index 0000000000..53fa8774b1
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AbstractCDOTest.java
@@ -0,0 +1,243 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOState;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.internal.server.ContainerRepositoryProvider;
+import org.eclipse.emf.cdo.internal.server.Repository;
+import org.eclipse.emf.cdo.server.CDOServerUtil;
+import org.eclipse.emf.cdo.server.db.IMappingStrategy;
+import org.eclipse.emf.cdo.server.internal.db.DBStore;
+import org.eclipse.emf.cdo.server.internal.db.HorizontalMappingStrategy;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.net4j.db.ConnectionProvider;
+import org.eclipse.net4j.db.DBUtil;
+import org.eclipse.net4j.db.IDBAdapter;
+import org.eclipse.net4j.db.internal.derby.DerbyAdapter;
+import org.eclipse.net4j.tests.AbstractTransportTest;
+import org.eclipse.net4j.util.container.IManagedContainer;
+
+import org.eclipse.emf.internal.cdo.util.FSMUtil;
+
+import javax.sql.DataSource;
+
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class AbstractCDOTest extends AbstractTransportTest
+{
+ public static final String REPOSITORY_NAME = "repo1";
+
+ @Override
+ protected IManagedContainer createContainer()
+ {
+ IManagedContainer container = super.createContainer();
+ CDOUtil.prepareContainer(container);
+ CDOServerUtil.prepareContainer(container, new ContainerRepositoryProvider(container));
+ CDOServerUtil.addRepository(container, createRepository());
+ return container;
+ }
+
+ protected Repository createRepository()
+ {
+ IMappingStrategy mappingStrategy = new HorizontalMappingStrategy();
+ IDBAdapter dbAdapter = new DerbyAdapter();
+
+ Properties properties = new Properties();
+ properties.put("driverClass", "org.apache.derby.jdbc.EmbeddedDataSource");
+ properties.put("databaseName", "C:/temp/cdo-repo1");
+ properties.put("createDatabase", "create");
+ DataSource dataSource = DBUtil.createDataSource(properties);
+ ConnectionProvider connectionProvider = DBUtil.createConnectionProvider(dataSource);
+
+ DBStore store = new DBStore(mappingStrategy, dbAdapter, connectionProvider);
+ mappingStrategy.setStore(store);
+
+ Repository repository = new Repository();
+ repository.setName(REPOSITORY_NAME);
+ repository.setStore(store);
+
+ store.setRepository(repository);
+ return repository;
+ }
+
+ @Override
+ protected void doSetUp() throws Exception
+ {
+ super.doSetUp();
+ startTransport();
+ }
+
+ protected CDOSession openModel1Session()
+ {
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(Model1Package.eINSTANCE);
+ return session;
+ }
+
+ protected void assertTransient(CDOObject object)
+ {
+ assertTrue(FSMUtil.isTransient(object));
+ assertEquals(null, object.cdoID());
+ assertEquals(null, object.cdoRevision());
+ assertEquals(null, object.cdoView());
+ assertEquals(object.eResource(), object.cdoResource());
+ }
+
+ protected void assertNotTransient(CDOObject object)
+ {
+ assertFalse(FSMUtil.isTransient(object));
+ assertNotNull(object.cdoID());
+ assertNotNull(object.cdoRevision());
+ assertNotNull(object.cdoView());
+ assertNotNull(object.cdoResource());
+ assertNotNull(object.eResource());
+ assertEquals(object.eResource(), object.cdoResource());
+ }
+
+ protected void assertNew(CDOObject object)
+ {
+ assertNotTransient(object);
+ assertEquals(CDOState.NEW, object.cdoState());
+ }
+
+ protected void assertDirty(CDOObject object)
+ {
+ assertNotTransient(object);
+ assertEquals(CDOState.DIRTY, object.cdoState());
+ }
+
+ protected void assertClean(CDOObject object)
+ {
+ assertNotTransient(object);
+ assertEquals(CDOState.CLEAN, object.cdoState());
+ }
+
+ protected void assertProxy(CDOObject object)
+ {
+ assertFalse(FSMUtil.isTransient(object));
+ assertNotNull(object.cdoID());
+ assertNotNull(object.cdoView());
+ assertNotNull(object.cdoResource());
+ assertNotNull(object.eResource());
+ assertEquals(object.eResource(), object.cdoResource());
+ assertEquals(CDOState.PROXY, object.cdoState());
+ }
+
+ protected void assertContent(CDOObject container, CDOObject contained)
+ {
+ assertEquals(container.eResource(), contained.eResource());
+ assertEquals(container.cdoResource(), contained.cdoResource());
+ assertTrue(container.eContents().contains(contained));
+ if (container instanceof CDOResource)
+ {
+ assertEquals(null, contained.eContainer());
+ assertTrue(((CDOResource)container).getContents().contains(contained));
+ }
+ else
+ {
+ assertEquals(container, contained.eContainer());
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static interface ITimeOuter
+ {
+ public boolean timedOut() throws InterruptedException;
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static abstract class PollingTimeOuter implements ITimeOuter
+ {
+ private int retries;
+
+ private long interval;
+
+ public PollingTimeOuter(int retries, long interval)
+ {
+ this.retries = retries;
+ this.interval = interval;
+ }
+
+ public int getRetries()
+ {
+ return retries;
+ }
+
+ public long getInterval()
+ {
+ return interval;
+ }
+
+ public boolean timedOut() throws InterruptedException
+ {
+ for (int i = 0; i < retries; i++)
+ {
+ if (successful())
+ {
+ return false;
+ }
+
+ Thread.sleep(interval);
+ }
+
+ return true;
+ }
+
+ protected abstract boolean successful();
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static class LockTimeOuter implements ITimeOuter
+ {
+ private Lock lock;
+
+ private long millis;
+
+ public LockTimeOuter(Lock lock, long millis)
+ {
+ this.lock = lock;
+ this.millis = millis;
+ }
+
+ public Lock getLock()
+ {
+ return lock;
+ }
+
+ public long getMillis()
+ {
+ return millis;
+ }
+
+ public boolean timedOut() throws InterruptedException
+ {
+ Condition condition = lock.newCondition();
+ return !condition.await(millis, TimeUnit.MILLISECONDS);
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java
new file mode 100644
index 0000000000..1c67941b69
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/Activator.java
@@ -0,0 +1,60 @@
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.core.runtime.Plugin;
+
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin
+{
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.emf.cdo.tests";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator()
+ {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception
+ {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception
+ {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault()
+ {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java
new file mode 100644
index 0000000000..ceac314dbb
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTests.java
@@ -0,0 +1,36 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author Eike Stepper
+ */
+public class AllTests
+{
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("Tests for CDO");
+
+ // $JUnit-BEGIN$
+ suite.addTestSuite(InitialTest.class);
+ suite.addTestSuite(ContainmentTest.class);
+ suite.addTestSuite(InvalidationTest.class);
+ suite.addTestSuite(CrossReferenceTest.class);
+ suite.addTestSuite(PackageRegistryTest.class);
+ suite.addTestSuite(GeneratedEcoreTest.class);
+ // $JUnit-END$
+
+ return suite;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java
new file mode 100644
index 0000000000..8c7427f1c8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java
@@ -0,0 +1,273 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Category;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Supplier;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+/**
+ * @author Eike Stepper
+ */
+public class ContainmentTest extends AbstractCDOTest
+{
+ public void testTransientContainment() throws Exception
+ {
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding supplier");
+ company.getSuppliers().add(supplier);
+
+ assertTransient(company);
+ assertTransient(supplier);
+ assertContent(company, supplier);
+ }
+
+ public void testBasicContainment() throws Exception
+ {
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding supplier");
+ company.getSuppliers().add(supplier);
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertClean(resource);
+ assertClean(company);
+ assertClean(supplier);
+ assertContent(resource, company);
+ assertContent(company, supplier);
+ }
+
+ public void test3Levels() throws Exception
+ {
+ msg("Creating category1");
+ Category category1 = Model1Factory.eINSTANCE.createCategory();
+ category1.setName("category1");
+
+ msg("Creating category2");
+ Category category2 = Model1Factory.eINSTANCE.createCategory();
+ category2.setName("category2");
+
+ msg("Creating category3");
+ Category category3 = Model1Factory.eINSTANCE.createCategory();
+ category3.setName("category3");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ company.getCategories().add(category1);
+ category1.getCategories().add(category2);
+ category2.getCategories().add(category3);
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertClean(resource);
+ assertClean(company);
+ assertClean(category1);
+ assertClean(category2);
+ assertClean(category3);
+ assertContent(resource, company);
+ assertContent(company, category1);
+ assertContent(category1, category2);
+ assertContent(category2, category3);
+ }
+
+ public void testSeparateView() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ msg("Creating category1");
+ Category category1 = Model1Factory.eINSTANCE.createCategory();
+ category1.setName("category1");
+
+ msg("Creating category2");
+ Category category2 = Model1Factory.eINSTANCE.createCategory();
+ category2.setName("category2");
+
+ msg("Creating category3");
+ Category category3 = Model1Factory.eINSTANCE.createCategory();
+ category3.setName("category3");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ company.getCategories().add(category1);
+ category1.getCategories().add(category2);
+ category2.getCategories().add(category3);
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertProxy(resource);
+
+ EList<EObject> contents = resource.getContents();
+ Company company = (Company)contents.get(0);
+ assertClean(company);
+ assertClean(resource);
+ assertContent(resource, company);
+
+ Category category1 = company.getCategories().get(0);
+ assertClean(category1);
+ assertClean(company);
+ assertContent(company, category1);
+
+ Category category2 = category1.getCategories().get(0);
+ assertClean(category2);
+ assertClean(category1);
+ assertContent(category1, category2);
+
+ Category category3 = category2.getCategories().get(0);
+ assertClean(category3);
+ assertClean(category2);
+ assertContent(category2, category3);
+ assertClean(category3);
+ }
+
+ public void testSeparateSession() throws Exception
+ {
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Creating category1");
+ Category category1 = Model1Factory.eINSTANCE.createCategory();
+ category1.setName("category1");
+
+ msg("Creating category2");
+ Category category2 = Model1Factory.eINSTANCE.createCategory();
+ category2.setName("category2");
+
+ msg("Creating category3");
+ Category category3 = Model1Factory.eINSTANCE.createCategory();
+ category3.setName("category3");
+
+ msg("Creating company");
+ Company company = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ company.getCategories().add(category1);
+ category1.getCategories().add(category2);
+ category2.getCategories().add(category3);
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resource.getContents().add(company);
+
+ msg("Committing");
+ transaction.commit();
+ }
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertProxy(resource);
+
+ EList<EObject> contents = resource.getContents();
+ Company company = (Company)contents.get(0);
+ assertClean(company);
+ assertClean(resource);
+ assertContent(resource, company);
+
+ Category category1 = company.getCategories().get(0);
+ assertClean(category1);
+ assertClean(company);
+ assertContent(company, category1);
+
+ Category category2 = category1.getCategories().get(0);
+ assertClean(category2);
+ assertClean(category1);
+ assertContent(category1, category2);
+
+ Category category3 = category2.getCategories().get(0);
+ assertClean(category3);
+ assertClean(category2);
+ assertContent(category2, category3);
+ assertClean(category3);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java
new file mode 100644
index 0000000000..b69d25a1a8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java
@@ -0,0 +1,263 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.CDOView;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Customer;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.SalesOrder;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+/**
+ * @author Eike Stepper
+ */
+public class CrossReferenceTest extends AbstractCDOTest
+{
+ public void testLoadViaContainment() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating customer");
+ Customer customerA = Model1Factory.eINSTANCE.createCustomer();
+ customerA.setName("customer");
+
+ msg("Creating salesOrder1");
+ SalesOrder salesOrder1A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder1A.setId(1);
+ salesOrder1A.setCustomer(customerA);
+
+ msg("Creating salesOrder2");
+ SalesOrder salesOrder2A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder2A.setId(2);
+ salesOrder2A.setCustomer(customerA);
+
+ msg("Creating company");
+ Company companyA = Model1Factory.eINSTANCE.createCompany();
+ companyA.getCustomers().add(customerA);
+ companyA.getSalesOrders().add(salesOrder1A);
+ companyA.getSalesOrders().add(salesOrder2A);
+
+ msg("Attaching transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertEquals(2, customerA.getSalesOrders().size());
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ Customer customerB = companyB.getCustomers().get(0);
+ assertClean(customerB);
+ assertClean(companyB);
+ assertContent(companyB, customerB);
+
+ SalesOrder salesOrder1B = companyB.getSalesOrders().get(0);
+ assertClean(salesOrder1B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder1B);
+
+ SalesOrder salesOrder2B = companyB.getSalesOrders().get(1);
+ assertClean(salesOrder2B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder2B);
+ assertClean(salesOrder2B);
+
+ assertEquals(2, customerB.getSalesOrders().size());
+ }
+
+ public void testLoadViaXRef() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating customer");
+ Customer customerA = Model1Factory.eINSTANCE.createCustomer();
+ customerA.setName("customer");
+
+ msg("Creating salesOrder1");
+ SalesOrder salesOrder1A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder1A.setId(1);
+ salesOrder1A.setCustomer(customerA);
+
+ msg("Creating salesOrder2");
+ SalesOrder salesOrder2A = Model1Factory.eINSTANCE.createSalesOrder();
+ salesOrder2A.setId(2);
+ salesOrder2A.setCustomer(customerA);
+
+ msg("Creating company");
+ Company companyA = Model1Factory.eINSTANCE.createCompany();
+ companyA.getCustomers().add(customerA);
+ companyA.getSalesOrders().add(salesOrder1A);
+ companyA.getSalesOrders().add(salesOrder2A);
+
+ msg("Attaching transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ assertEquals(2, customerA.getSalesOrders().size());
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ Customer customerB = companyB.getCustomers().get(0);
+ assertClean(customerB);
+ assertClean(companyB);
+ assertContent(companyB, customerB);
+
+ SalesOrder salesOrder1B = customerB.getSalesOrders().get(0);
+ assertClean(salesOrder1B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder1B);
+
+ SalesOrder salesOrder2B = customerB.getSalesOrders().get(1);
+ assertClean(salesOrder2B);
+ assertClean(companyB);
+ assertContent(companyB, salesOrder2B);
+ assertClean(salesOrder2B);
+ }
+
+ public void testTwoResources() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Attaching transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ // ************************************************************* //
+
+ msg("Creating customer");
+ Customer customerA = Model1Factory.eINSTANCE.createCustomer();
+ customerA.setName("customer");
+
+ msg("Creating company1");
+ Company company1A = Model1Factory.eINSTANCE.createCompany();
+ company1A.getCustomers().add(customerA);
+
+ msg("Creating resource1");
+ CDOResource resource1A = transaction.createResource("/test1");
+
+ msg("Adding company1");
+ resource1A.getContents().add(company1A);
+
+ // ************************************************************* //
+
+ msg("Creating salesOrder1");
+ SalesOrder salesOrder1A = Model1Factory.eINSTANCE.createSalesOrder();
+ assertTransient(salesOrder1A);
+ salesOrder1A.setId(1);
+ salesOrder1A.setCustomer(customerA);
+ assertTransient(salesOrder1A);
+
+ msg("Creating salesOrder2");
+ SalesOrder salesOrder2A = Model1Factory.eINSTANCE.createSalesOrder();
+ assertTransient(salesOrder2A);
+ salesOrder2A.setId(2);
+ salesOrder2A.setCustomer(customerA);
+ assertTransient(salesOrder2A);
+
+ msg("Creating company2");
+ Company company2A = Model1Factory.eINSTANCE.createCompany();
+ company2A.getSalesOrders().add(salesOrder1A);
+ company2A.getSalesOrders().add(salesOrder2A);
+
+ msg("Creating resource2");
+ CDOResource resource2A = transaction.createResource("/test2");
+
+ msg("Adding company");
+ resource2A.getContents().add(company2A);
+
+ // ************************************************************* //
+
+ msg("Committing");
+ transaction.commit();
+
+ assertEquals(2, customerA.getSalesOrders().size());
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource1");
+ CDOResource resource1B = viewB.getResource("/test1");
+ assertProxy(resource1B);
+
+ EList<EObject> contents = resource1B.getContents();
+ Company company1B = (Company)contents.get(0);
+ assertClean(company1B);
+ assertClean(resource1B);
+ assertContent(resource1B, company1B);
+
+ Customer customerB = company1B.getCustomers().get(0);
+ assertClean(customerB);
+ assertClean(company1B);
+ assertContent(company1B, customerB);
+
+ SalesOrder salesOrder1B = customerB.getSalesOrders().get(0);
+ assertClean(salesOrder1B);
+
+ SalesOrder salesOrder2B = customerB.getSalesOrders().get(1);
+ assertClean(salesOrder2B);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java
new file mode 100644
index 0000000000..f01010cbfa
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicEcoreTest.java
@@ -0,0 +1,80 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class DymamicEcoreTest extends AbstractCDOTest
+{
+ public void testDynamicEcore() throws Exception
+ {
+ {
+ // Obtain model
+ EPackage ecore = (EPackage)loadModel("ecore/Ecore.ecore", EPackage.Registry.INSTANCE);
+
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(ecore);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ EObject root = loadModel("model1.ecore", session.getPackageRegistry());
+ res.getContents().add(root);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ EObject root = res.getContents().get(0);
+ saveModel("model1X.ecore", root);
+ }
+ }
+
+ private static EObject loadModel(String fileName, EPackage.Registry packageRegistry) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+ resourceSet.setPackageRegistry(packageRegistry);
+
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ return resource.getContents().get(0);
+ }
+
+ private static void saveModel(String fileName, EObject root) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ resource.getContents().add(EcoreUtil.copy(root));
+ resource.save(null);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
new file mode 100644
index 0000000000..f3594c5825
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/DymamicUmlTest.java
@@ -0,0 +1,105 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class DymamicUmlTest extends AbstractCDOTest
+{
+ public void testGeneratedPackage() throws Exception
+ {
+ {
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(Model1Package.eINSTANCE);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ Company company = Model1Factory.eINSTANCE.createCompany();
+ company.setName("Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ Company company = (Company)res.getContents().get(0);
+ assertEquals("Eike", company.getName());
+ }
+ }
+
+ public void testDynamicPackage() throws Exception
+ {
+ {
+ // Obtain model
+ EPackage model1 = loadModel("model1.ecore");
+ EClass companyClass = (EClass)model1.getEClassifier("Company");
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(model1);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ CDOObject company = transaction.newInstance(companyClass);
+ company.eSet(nameAttribute, "Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ CDOObject company = (CDOObject)res.getContents().get(0);
+ EClass companyClass = company.eClass();
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+ String name = (String)company.eGet(nameAttribute);
+ assertEquals("Eike", name);
+ }
+ }
+
+ private static EPackage loadModel(String fileName) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ return (EPackage)resource.getContents().get(0);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
new file mode 100644
index 0000000000..370d417f9b
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/EMFTest.java
@@ -0,0 +1,73 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.util.EMFUtil;
+
+import org.eclipse.net4j.util.tests.AbstractOMTest;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * @author Eike Stepper
+ */
+public class EMFTest extends AbstractOMTest
+{
+ public EMFTest()
+ {
+ }
+
+ public void testProxy()
+ {
+ EPackage model2 = (EPackage)EMFUtil.loadXMI("model2.ecore");
+ EClass companyProxy = (EClass)model2.getEClassifier("CompanyProxy");
+ EReference reference = (EReference)companyProxy.getEStructuralFeature("company");
+
+ EClass type = (EClass)reference.getEType();
+ dumpProxy(type);
+ System.out.println(type.getName());
+ dumpProxy(type);
+
+ System.out.println();
+
+ if (false)
+ {
+ model2.eResource().getResourceSet().getResources().get(1).unload();
+ }
+ else
+ {
+ ((InternalEObject)type).eSetProxyURI(URI.createURI("model1.ecore#//Company"));
+ }
+
+ if (true)
+ {
+ type = (EClass)reference.getEType();
+ }
+
+ dumpProxy(type);
+ System.out.println(type.getName());
+ dumpProxy(type);
+ }
+
+ private void dumpProxy(EObject object)
+ {
+ InternalEObject eObject = (InternalEObject)object;
+ String label = eObject.eClass().getName();
+
+ System.out.println(label + ": " + eObject.eIsProxy());
+ System.out.println(label + ": " + eObject.eProxyURI());
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
new file mode 100644
index 0000000000..cb362bd591
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/GeneratedEcoreTest.java
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.util.CDOUtil;
+import org.eclipse.emf.cdo.util.EMFUtil;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+/**
+ * @author Eike Stepper
+ */
+public class GeneratedEcoreTest extends AbstractCDOTest
+{
+ public void testGeneratedEcore() throws Exception
+ {
+ // Obtain model
+ EPackage ecore = EcorePackage.eINSTANCE;
+
+ // Create resource in session 1
+ CDOSession session1 = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session1.getPackageRegistry().putEPackage(ecore);
+ CDOTransaction transaction1 = session1.openTransaction();
+ CDOResource res1 = transaction1.createResource("/res");
+
+ EPackage root1 = (EPackage)EMFUtil.loadEcore("model1.ecore", session1.getPackageRegistry());
+ res1.getContents().add(root1);
+ transaction1.commit();
+
+ // Load resource in session 2
+ CDOSession session2 = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction2 = session2.openTransaction();
+ CDOResource res2 = transaction2.getResource("/res");
+
+ EList<EObject> contents = res2.getContents();
+ EPackage root2 = (EPackage)contents.get(0);
+ assertFalse("Unresolved proxy", root2.eIsProxy());
+ assertEquals(res2, root2.eResource());
+
+ CDOUtil.load(root2, transaction2);// FIXME
+ EMFUtil.saveEcore("model1X.ecore", root2);
+ // assertTrue("Models differ", EcoreUtil.equals(root1, root2));
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java
new file mode 100644
index 0000000000..03591e9564
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InitialTest.java
@@ -0,0 +1,627 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOState;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
+import org.eclipse.emf.cdo.tests.model1.Supplier;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.net4j.IBufferHandler;
+import org.eclipse.net4j.IChannel;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import java.util.Date;
+
+/**
+ * @author Eike Stepper
+ */
+public class InitialTest extends AbstractCDOTest
+{
+ public void testTransientObject() throws Exception
+ {
+ final Date date = new Date();
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+ assertTransient(supplier);
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+ assertTransient(supplier);
+
+ msg("Verifying name");
+ assertEquals("Stepper", supplier.getName());
+ assertTransient(supplier);
+
+ msg("Creating purchaseOrder");
+ PurchaseOrder purchaseOrder = Model1Factory.eINSTANCE.createPurchaseOrder();
+ assertTransient(purchaseOrder);
+
+ msg("Setting date");
+ purchaseOrder.setDate(date);
+ assertTransient(purchaseOrder);
+
+ msg("Verifying date");
+ assertEquals(date, purchaseOrder.getDate());
+ assertTransient(purchaseOrder);
+
+ msg("Setting supplier");
+ purchaseOrder.setSupplier(supplier);
+ assertTransient(supplier);
+ assertTransient(purchaseOrder);
+
+ msg("Verifying supplier");
+ assertEquals(supplier, purchaseOrder.getSupplier());
+ assertTransient(supplier);
+ assertTransient(purchaseOrder);
+ }
+
+ public void testTransientResource() throws Exception
+ {
+ final URI uri = URI.createURI("cdo:/test1");
+
+ msg("Creating resourceSet");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ CDOUtil.prepareResourceSet(resourceSet);
+
+ msg("Creating resource");
+ CDOResource resource = (CDOResource)resourceSet.createResource(uri);
+ assertTransient(resource);
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+ assertTransient(supplier);
+ assertEquals(null, supplier.eContainer());
+
+ msg("Verifying contents");
+ EList<EObject> contents = resource.getContents();
+ assertNotNull(contents);
+ assertTrue(contents.isEmpty());
+ assertEquals(0, contents.size());
+ assertTransient(resource);
+
+ msg("Adding supplier");
+ contents.add(supplier);
+ assertTransient(resource);
+ assertTransient(supplier);
+ assertContent(resource, supplier);
+ }
+
+ public void testOpenSession() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+ assertNotNull(session);
+
+ IChannel channel = session.getChannel();
+ assertNotNull(channel);
+
+ IBufferHandler receiveHandler = channel.getReceiveHandler();
+ assertNotNull(receiveHandler);
+ }
+
+ public void testStartTransaction() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+ assertNotNull(transaction);
+ assertEquals(session, transaction.getSession());
+ }
+
+ public void testAttachResource() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+ assertNew(resource);
+ assertEquals(URI.createURI("cdo:/test1"), resource.getURI());
+ ResourceSet expected = transaction.getResourceSet();
+ ResourceSet actual = resource.getResourceSet();
+ assertEquals(expected, actual);
+
+ }
+
+ public void testAttachView() throws Exception
+ {
+ final URI uri = URI.createURI("cdo:/test1");
+
+ msg("Creating resourceSet");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ CDOUtil.prepareResourceSet(resourceSet);
+
+ msg("Creating resource");
+ CDOResource resource = (CDOResource)resourceSet.createResource(uri);
+ assertTransient(resource);
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(resourceSet);
+
+ msg("Verifying resource");
+ assertNew(resource);
+ assertEquals(uri, resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+ }
+
+ public void testAttachViewWithObject() throws Exception
+ {
+ final URI uri = URI.createURI("cdo:/test1");
+
+ msg("Creating resourceSet");
+ ResourceSet resourceSet = new ResourceSetImpl();
+ CDOUtil.prepareResourceSet(resourceSet);
+
+ msg("Creating resource");
+ CDOResource resource = (CDOResource)resourceSet.createResource(uri);
+ assertTransient(resource);
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+ assertTransient(supplier);
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+ assertTransient(supplier);
+
+ msg("Verifying name");
+ assertEquals("Stepper", supplier.getName());
+ assertTransient(supplier);
+
+ msg("Adding supplier");
+ EList<EObject> contents = resource.getContents();
+ contents.add(supplier);
+ assertTransient(resource);
+ assertTransient(supplier);
+ assertContent(resource, supplier);
+
+ msg("Verifying supplier");
+ contents = resource.getContents();
+ assertNotNull(contents);
+ assertEquals(1, contents.size());
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(resourceSet);
+
+ msg("Verifying resource");
+ assertNew(resource);
+ assertEquals(uri, resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+
+ msg("Verifying contents");
+ contents = resource.getContents();
+ assertNotNull(contents);
+ assertEquals(1, contents.size());
+
+ msg("Verifying supplier");
+ Supplier s = (Supplier)contents.get(0);
+ assertNew(supplier);
+ assertNew(resource);
+ assertEquals(supplier, s);
+ assertEquals(resource, s.cdoResource());
+ assertEquals(null, s.eContainer());
+ }
+
+ public void testAttachObject() throws Exception
+ {
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+
+ msg("Adding supplier");
+ contents.add(supplier);
+ assertNew(supplier);
+ assertEquals(transaction, supplier.cdoView());
+ assertEquals(resource, supplier.cdoResource());
+ assertEquals(resource, supplier.eResource());
+ assertEquals(null, supplier.eContainer());
+ }
+
+ public void testCommitNew() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ assertEquals(CDOState.CLEAN, resource.cdoState());
+ assertEquals(CDOState.CLEAN, supplier.cdoState());
+ }
+
+ public void testReadResourceClean() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Getting supplier");
+ EList<EObject> contents = resource.getContents();
+ Supplier s = (Supplier)contents.get(0);
+ assertEquals(supplier, s);
+ }
+
+ public void testReadObjectClean() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)resource.getContents().get(0);
+
+ msg("Verifying name");
+ assertEquals("Stepper", s.getName());
+ }
+
+ public void testWriteClean() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)resource.getContents().get(0);
+
+ msg("Setting name");
+ s.setName("Eike");
+ assertEquals("Eike", s.getName());
+ assertEquals(CDOState.DIRTY, supplier.cdoState());
+ assertEquals(CDOState.CLEAN, resource.cdoState());
+ }
+
+ public void testCommitDirty() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Setting name");
+ supplier.setName("Eike");
+
+ msg("Committing");
+ transaction.commit();
+ assertEquals(CDOState.CLEAN, resource.cdoState());
+ assertEquals(CDOState.CLEAN, supplier.cdoState());
+ }
+
+ public void testGetResource() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ disableConsole();
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ enableConsole();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertNotNull(resource);
+ assertEquals(URI.createURI("cdo:/test1"), resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+ assertEquals(CDOState.PROXY, resource.cdoState());
+ assertEquals(transaction, resource.cdoView());
+ assertNull(resource.cdoRevision());
+ }
+
+ public void testGetContents() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ disableConsole();
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ enableConsole();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+ assertNotNull(contents);
+ }
+
+ public void testReadObjectProxy() throws Exception
+ {
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ {
+ disableConsole();
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ enableConsole();
+ }
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)contents.get(0);
+ assertNotNull(s);
+
+ msg("Verifying name");
+ assertEquals("Stepper", s.getName());
+ }
+
+ public void testLoadResource() throws Exception
+ {
+ {
+ // disableConsole();
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ // XXX session.close();
+ // enableConsole();
+ }
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+ assertNotNull(resource);
+ assertEquals(URI.createURI("cdo:/test1"), resource.getURI());
+ assertEquals(transaction.getResourceSet(), resource.getResourceSet());
+ assertEquals(CDOState.PROXY, resource.cdoState());
+ assertEquals(transaction, resource.cdoView());
+ assertNull(resource.cdoRevision());
+ }
+
+ public void testLoadObject() throws Exception
+ {
+ {
+ // disableConsole();
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ CDOResource resource = transaction.createResource("/test1");
+
+ msg("Creating supplier");
+ Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
+
+ msg("Setting name");
+ supplier.setName("Stepper");
+
+ msg("Adding supplier");
+ resource.getContents().add(supplier);
+
+ msg("Committing");
+ transaction.commit();
+ // XXX session.close();
+ enableConsole();
+ }
+
+ msg("Opening session");
+ CDOSession session = openModel1Session();
+
+ msg("Opening transaction");
+ CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Getting resource");
+ CDOResource resource = transaction.getResource("/test1");
+
+ msg("Getting contents");
+ EList<EObject> contents = resource.getContents();
+
+ msg("Getting supplier");
+ Supplier s = (Supplier)contents.get(0);
+ assertNotNull(s);
+
+ msg("Verifying name");
+ assertEquals("Stepper", s.getName());
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java
new file mode 100644
index 0000000000..c860c2bfbf
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/InvalidationTest.java
@@ -0,0 +1,341 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOSessionInvalidationEvent;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.CDOView;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Category;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * @author Eike Stepper
+ */
+public class InvalidationTest extends AbstractCDOTest
+{
+ public void testSeparateView() throws Exception
+ {
+ msg("Opening session");
+ final CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating category1");
+ final Category category1A = Model1Factory.eINSTANCE.createCategory();
+ category1A.setName("category1");
+
+ msg("Creating category2");
+ final Category category2A = Model1Factory.eINSTANCE.createCategory();
+ category2A.setName("category2");
+
+ msg("Creating category3");
+ final Category category3A = Model1Factory.eINSTANCE.createCategory();
+ category3A.setName("category3");
+
+ msg("Creating company");
+ final Company companyA = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ companyA.getCategories().add(category1A);
+ category1A.getCategories().add(category2A);
+ category2A.getCategories().add(category3A);
+
+ msg("Attaching transaction");
+ final CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ final CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ final CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ final CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ final Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ final Category category1B = companyB.getCategories().get(0);
+ assertClean(category1B);
+ assertClean(companyB);
+ assertContent(companyB, category1B);
+
+ final Category category2B = category1B.getCategories().get(0);
+ assertClean(category2B);
+ assertClean(category1B);
+ assertContent(category1B, category2B);
+
+ final Category category3B = category2B.getCategories().get(0);
+ assertClean(category3B);
+ assertClean(category2B);
+ assertContent(category2B, category3B);
+ assertClean(category3B);
+
+ // ************************************************************* //
+
+ msg("Changing name");
+ category1A.setName("CHANGED NAME");
+ Thread.sleep(500);
+
+ msg("Checking before commit");
+ assertEquals("category1", category1B.getName());
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Checking after commit");
+ boolean timedOut = new PollingTimeOuter(4, 100)
+ {
+ @Override
+ protected boolean successful()
+ {
+ return "CHANGED NAME".equals(category1B.getName());
+ }
+ }.timedOut();
+
+ assertEquals(false, timedOut);
+ }
+
+ public void testSeparateViewNotification() throws Exception
+ {
+ msg("Opening session");
+ final CDOSession session = openModel1Session();
+
+ // ************************************************************* //
+
+ msg("Creating category1");
+ final Category category1A = Model1Factory.eINSTANCE.createCategory();
+ category1A.setName("category1");
+
+ msg("Creating category2");
+ final Category category2A = Model1Factory.eINSTANCE.createCategory();
+ category2A.setName("category2");
+
+ msg("Creating category3");
+ final Category category3A = Model1Factory.eINSTANCE.createCategory();
+ category3A.setName("category3");
+
+ msg("Creating company");
+ final Company companyA = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ companyA.getCategories().add(category1A);
+ category1A.getCategories().add(category2A);
+ category2A.getCategories().add(category3A);
+
+ msg("Attaching transaction");
+ final CDOTransaction transaction = session.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ final CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ // ************************************************************* //
+
+ msg("Attaching viewB");
+ final CDOView viewB = session.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ final CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ final Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ final Category category1B = companyB.getCategories().get(0);
+ assertClean(category1B);
+ assertClean(companyB);
+ assertContent(companyB, category1B);
+
+ final Category category2B = category1B.getCategories().get(0);
+ assertClean(category2B);
+ assertClean(category1B);
+ assertContent(category1B, category2B);
+
+ final Category category3B = category2B.getCategories().get(0);
+ assertClean(category3B);
+ assertClean(category2B);
+ assertContent(category2B, category3B);
+ assertClean(category3B);
+
+ // ************************************************************* //
+
+ final boolean unlocked[] = { false };
+ final Lock lock = new ReentrantLock();
+ lock.lock();
+ viewB.getSession().addListener(new IListener()
+ {
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof CDOSessionInvalidationEvent)
+ {
+ CDOSessionInvalidationEvent e = (CDOSessionInvalidationEvent)event;
+ if (e.getView() == viewB)
+ {
+ msg("CDOSessionInvalidationEvent: " + e);
+ // TODO This code has no influence
+ unlocked[0] = true;
+ lock.unlock();
+ }
+ }
+ }
+ });
+
+ msg("Changing name");
+ category1A.setName("CHANGED NAME");
+
+ msg("Checking before commit");
+ LockTimeOuter timeOuter = new LockTimeOuter(lock, 500);
+ boolean timedOut = timeOuter.timedOut();
+ assertEquals(true, timedOut);
+ assertEquals(false, unlocked[0]);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Checking after commit");
+ if (!unlocked[0])
+ {
+ timedOut = timeOuter.timedOut();
+ assertEquals(true, timedOut);
+ }
+ }
+
+ public void testSeparateSession() throws Exception
+ {
+ msg("Creating category1");
+ final Category category1A = Model1Factory.eINSTANCE.createCategory();
+ category1A.setName("category1");
+
+ msg("Creating category2");
+ final Category category2A = Model1Factory.eINSTANCE.createCategory();
+ category2A.setName("category2");
+
+ msg("Creating category3");
+ final Category category3A = Model1Factory.eINSTANCE.createCategory();
+ category3A.setName("category3");
+
+ msg("Creating company");
+ final Company companyA = Model1Factory.eINSTANCE.createCompany();
+
+ msg("Adding categories");
+ companyA.getCategories().add(category1A);
+ category1A.getCategories().add(category2A);
+ category2A.getCategories().add(category3A);
+
+ msg("Opening sessionA");
+ final CDOSession sessionA = openModel1Session();
+
+ msg("Attaching transaction");
+ final CDOTransaction transaction = sessionA.openTransaction(new ResourceSetImpl());
+
+ msg("Creating resource");
+ final CDOResource resourceA = transaction.createResource("/test1");
+
+ msg("Adding company");
+ resourceA.getContents().add(companyA);
+
+ msg("Committing");
+ transaction.commit();
+
+ // ************************************************************* //
+
+ msg("Opening sessionB");
+ final CDOSession sessionB = openModel1Session();
+
+ msg("Attaching viewB");
+ final CDOView viewB = sessionB.openTransaction(new ResourceSetImpl());
+
+ msg("Loading resource");
+ final CDOResource resourceB = viewB.getResource("/test1");
+ assertProxy(resourceB);
+
+ EList<EObject> contents = resourceB.getContents();
+ final Company companyB = (Company)contents.get(0);
+ assertClean(companyB);
+ assertClean(resourceB);
+ assertContent(resourceB, companyB);
+
+ final Category category1B = companyB.getCategories().get(0);
+ assertClean(category1B);
+ assertClean(companyB);
+ assertContent(companyB, category1B);
+
+ final Category category2B = category1B.getCategories().get(0);
+ assertClean(category2B);
+ assertClean(category1B);
+ assertContent(category1B, category2B);
+
+ final Category category3B = category2B.getCategories().get(0);
+ assertClean(category3B);
+ assertClean(category2B);
+ assertContent(category2B, category3B);
+ assertClean(category3B);
+
+ // ************************************************************* //
+
+ msg("Changing name");
+ category1A.setName("CHANGED NAME");
+
+ ITimeOuter timeOuter = new PollingTimeOuter(4, 100)
+ {
+ @Override
+ protected boolean successful()
+ {
+ return "CHANGED NAME".equals(category1B.getName());
+ }
+ };
+
+ msg("Checking before commit");
+ boolean timedOut = timeOuter.timedOut();
+ assertEquals(true, timedOut);
+
+ msg("Committing");
+ transaction.commit();
+
+ msg("Checking after commit");
+ timedOut = timeOuter.timedOut();
+ assertEquals(false, timedOut);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
new file mode 100644
index 0000000000..26983e1f25
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java
@@ -0,0 +1,112 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.CDOSession;
+import org.eclipse.emf.cdo.CDOTransaction;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.tests.model1.Company;
+import org.eclipse.emf.cdo.tests.model1.Model1Factory;
+import org.eclipse.emf.cdo.tests.model1.Model1Package;
+import org.eclipse.emf.cdo.util.CDOUtil;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class PackageRegistryTest extends AbstractCDOTest
+{
+ public void testGeneratedPackage() throws Exception
+ {
+ {
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(Model1Package.eINSTANCE);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ Company company = Model1Factory.eINSTANCE.createCompany();
+ company.setName("Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ Company company = (Company)res.getContents().get(0);
+ assertEquals("Eike", company.getName());
+ }
+ }
+
+ /**
+ * TODO Fix testDynamicPackage()
+ */
+ public void _testDynamicPackage() throws Exception
+ {
+ {
+ // Obtain model
+ EPackage model1 = loadModel("model1.ecore");
+ // EClass supplierClass = (EClass)model1.getEClassifier("Supplier");
+ // EStructuralFeature firstFeature =
+ // supplierClass.getEStructuralFeatures().get(0);
+
+ EClass companyClass = (EClass)model1.getEClassifier("Company");
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+
+ // Create resource in session 1
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ session.getPackageRegistry().putEPackage(model1);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.createResource("/res");
+
+ CDOObject company = transaction.newInstance(companyClass);
+ company.eSet(nameAttribute, "Eike");
+ res.getContents().add(company);
+ transaction.commit();
+ }
+
+ {
+ // Load resource in session 2
+ CDOSession session = CDOUtil.openSession(getConnector(), REPOSITORY_NAME);
+ CDOTransaction transaction = session.openTransaction();
+ CDOResource res = transaction.getResource("/res");
+
+ CDOObject company = (CDOObject)res.getContents().get(0);
+ EClass companyClass = company.eClass();
+ EAttribute nameAttribute = (EAttribute)companyClass.getEStructuralFeature("name");
+ String name = (String)company.eGet(nameAttribute);
+ assertEquals("Eike", name);
+ }
+ }
+
+ private static EPackage loadModel(String fileName) throws IOException
+ {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new EcoreResourceFactoryImpl());
+ Resource resource = resourceSet.getResource(URI.createFileURI(fileName), true);
+ return (EPackage)resource.getContents().get(0);
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java
new file mode 100644
index 0000000000..469d67e684
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TDD.java
@@ -0,0 +1,88 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.emf.cdo.tests;
+
+import org.eclipse.net4j.util.tests.AbstractOMTest;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * @author Eike Stepper
+ */
+public class TDD
+{
+ private static final AbstractOMTest test = new PackageRegistryTest();
+
+ private static final String METHOD_NAME = "testDynamicPackage";
+
+ public static void main(String[] args) throws Throwable
+ {
+ if (METHOD_NAME != null && METHOD_NAME.length() != 0)
+ {
+ runTest(test, METHOD_NAME);
+ }
+ else
+ {
+ Method[] methods = test.getClass().getMethods();
+ for (Method method : methods)
+ {
+
+ String methodName = method.getName();
+ if (methodName.startsWith("test"))
+ {
+ runTest(test, methodName);
+ }
+ }
+ }
+
+ System.out.println("******* COMPLETED *******");
+ }
+
+ private static void runTest(AbstractOMTest test, String methodName) throws Exception, Throwable
+ {
+ test.setName(methodName);
+ test.setUp();
+ callMethod(test, methodName);
+ test.tearDown();
+ }
+
+ private static void callMethod(Object object, String methodName) throws Throwable
+ {
+ try
+ {
+ Method method = object.getClass().getMethod(methodName, new Class[0]);
+ method.invoke(object, new Object[0]);
+ }
+ catch (InvocationTargetException ex)
+ {
+ throw filterException(ex.getTargetException(), object.getClass());
+ }
+ }
+
+ private static Throwable filterException(Throwable t, Class entry)
+ {
+ StackTraceElement[] stackTrace = t.getStackTrace();
+ int len;
+ for (len = stackTrace.length - 1; len >= 0; len--)
+ {
+ if (stackTrace[len].getClassName().equals(entry.getName()))
+ {
+ StackTraceElement[] filtered = new StackTraceElement[++len];
+ System.arraycopy(stackTrace, 0, filtered, 0, len);
+ t.setStackTrace(filtered);
+ break;
+ }
+ }
+
+ return t;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java
deleted file mode 100644
index dceb8de298..0000000000
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/internal/CDOTestPlugin.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/***************************************************************************
- * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- **************************************************************************/
-package org.eclipse.emf.cdo.tests.internal;
-
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-
-public class CDOTestPlugin implements BundleActivator
-{
- private static CDOTestPlugin instance;
-
- public CDOTestPlugin()
- {
- super();
- instance = this;
- }
-
- public static CDOTestPlugin getPlugin()
- {
- return instance;
- }
-
- public void start(BundleContext context) throws Exception
- {
- }
-
- public void stop(BundleContext context) throws Exception
- {
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml
new file mode 100644
index 0000000000..7c50b81281
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/10536.uml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_y16xIPnhEdunWsS3se92JQ" name="10536">
+ <packagedElement xmi:type="uml:Class" xmi:id="_0dB44PnhEdunWsS3se92JQ" name="ConnectableElement" isAbstract="true">
+ <ownedAttribute xmi:id="_5fDBQPnhEdunWsS3se92JQ" name="end" visibility="public" type="_2UPSIPnhEdunWsS3se92JQ" isDerived="true" association="_5e5QQPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fDBQvnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5fDBQfnhEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_tL_ewPniEdunWsS3se92JQ" name="getEnds" visibility="protected">
+ <ownedParameter xmi:id="_uvsGIPniEdunWsS3se92JQ" name="" type="_2UPSIPnhEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xsLscfniEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xsLscPniEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2UPSIPnhEdunWsS3se92JQ" name="ConnectorEnd">
+ <ownedAttribute xmi:id="_81UZgfnhEdunWsS3se92JQ" name="role" visibility="public" type="_0dB44PnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZg_nhEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZgvnhEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_5e5QQPnhEdunWsS3se92JQ" name="A_connectableElement_end" memberEnd="_5fDBQPnhEdunWsS3se92JQ _5fDBQ_nhEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_5fDBQ_nhEdunWsS3se92JQ" name="" visibility="private" type="_0dB44PnhEdunWsS3se92JQ" association="_5e5QQPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fDBRfnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5fDBRPnhEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_81UZgPnhEdunWsS3se92JQ" name="A_end_role" memberEnd="_81UZgfnhEdunWsS3se92JQ _81UZhPnhEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_81UZhPnhEdunWsS3se92JQ" name="end" visibility="private" type="_2UPSIPnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZhvnhEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZhfnhEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_vz32QPn-EduCCoNWMwSrOA">
+ <eAnnotations xmi:id="_v2Qb4Pn-EduCCoNWMwSrOA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_yzfpEPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_5fDBQPnhEdunWsS3se92JQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml
new file mode 100644
index 0000000000..bd271b4ac6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/10537.uml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_udv6MPnlEdunWsS3se92JQ" name="10537">
+ <packagedElement xmi:type="uml:Class" xmi:id="_xM1WoPnlEdunWsS3se92JQ" name="Vertex" isAbstract="true">
+ <ownedAttribute xmi:id="_R1FbMfnmEdunWsS3se92JQ" name="incoming" visibility="public" type="_ykKV8PnlEdunWsS3se92JQ" isDerived="true" association="_R1FbMPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R1FbM_nmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R1FbMvnmEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_X_OCMPnmEdunWsS3se92JQ" name="outgoing" visibility="public" type="_ykKV8PnlEdunWsS3se92JQ" isDerived="true" association="_X_E4QPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_OCMvnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_OCMfnmEdunWsS3se92JQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_RqYxoPnnEdunWsS3se92JQ" name="getIncomings" visibility="protected">
+ <ownedParameter xmi:id="_UvruoPnnEdunWsS3se92JQ" name="" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YahosfnnEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YahosPnnEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aHv_gPnnEdunWsS3se92JQ" name="getOutgoings" visibility="protected">
+ <ownedParameter xmi:id="_aHv_gfnnEdunWsS3se92JQ" name="" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aHv_gvnnEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aHv_g_nnEdunWsS3se92JQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ykKV8PnlEdunWsS3se92JQ" name="Transition">
+ <ownedAttribute xmi:id="_EhVtMPnmEdunWsS3se92JQ" name="target" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtMvnmEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtMfnmEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JPYJofnmEdunWsS3se92JQ" name="source" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPYJo_nmEdunWsS3se92JQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPYJovnmEdunWsS3se92JQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_EhL8MPnmEdunWsS3se92JQ" name="A_incoming_target" memberEnd="_EhVtMPnmEdunWsS3se92JQ _EhVtM_nmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_EhVtM_nmEdunWsS3se92JQ" name="incoming" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtNfnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtNPnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JPYJoPnmEdunWsS3se92JQ" name="A_outgoing_source" memberEnd="_JPYJofnmEdunWsS3se92JQ _JPh6oPnmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_JPh6oPnmEdunWsS3se92JQ" name="outgoing" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPh6ovnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPh6ofnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_R1FbMPnmEdunWsS3se92JQ" name="A_vertex_incoming" memberEnd="_R1FbMfnmEdunWsS3se92JQ _R1FbNPnmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_R1FbNPnmEdunWsS3se92JQ" name="" visibility="private" type="_xM1WoPnlEdunWsS3se92JQ" association="_R1FbMPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R1FbNvnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R1FbNfnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_X_E4QPnmEdunWsS3se92JQ" name="A_vertex_outgoing" memberEnd="_X_OCMPnmEdunWsS3se92JQ _X_OCM_nmEdunWsS3se92JQ">
+ <ownedEnd xmi:id="_X_OCM_nmEdunWsS3se92JQ" name="" visibility="private" type="_xM1WoPnlEdunWsS3se92JQ" association="_X_E4QPnmEdunWsS3se92JQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X_OCNfnmEdunWsS3se92JQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X_OCNPnmEdunWsS3se92JQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_3zuBsPn-EduCCoNWMwSrOA">
+ <eAnnotations xmi:id="_3zuBsfn-EduCCoNWMwSrOA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_5aiOgPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_R1FbMfnmEdunWsS3se92JQ"/>
+ <Ecore:EReference xmi:id="_8M5BYPn-EduCCoNWMwSrOA" isTransient="true" isVolatile="true" base_Property="_X_OCMPnmEdunWsS3se92JQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml
new file mode 100644
index 0000000000..ca43ec675f
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Ecore.uml
@@ -0,0 +1,977 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_SeWiQMX_EduPJbEsMYXjUQ" name="Ecore">
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWj6cX_EduPJbEsMYXjUQ" name="EAnnotation">
+ <eAnnotations xmi:id="_SeWj6sX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWj68X_EduPJbEsMYXjUQ" key="constraints" value="WellFormedSourceURI"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWj7MX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWj7cX_EduPJbEsMYXjUQ" name="source" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj7sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj78X_EduPJbEsMYXjUQ" name="details" type="_SeWj-sX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj_8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj8MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj8cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj8sX_EduPJbEsMYXjUQ" name="eModelElement" type="_SeWihMX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkAcX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj88X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj9MX_EduPJbEsMYXjUQ" name="contents" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkAsX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj9cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj9sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj98X_EduPJbEsMYXjUQ" name="references" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkBMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWj-MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj-cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiQcX_EduPJbEsMYXjUQ" name="EAttribute">
+ <eAnnotations xmi:id="_SeWiQsX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiQ8X_EduPJbEsMYXjUQ" key="constraints" value="ConsistentTransient"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWiRMX_EduPJbEsMYXjUQ" general="_SeWiSMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiRcX_EduPJbEsMYXjUQ" name="id" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiRsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiR8X_EduPJbEsMYXjUQ" name="eAttributeType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWkCsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWizcX_EduPJbEsMYXjUQ" name="EClass">
+ <eAnnotations xmi:id="_SeWizsX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiz8X_EduPJbEsMYXjUQ" key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWi0MX_EduPJbEsMYXjUQ" general="_SeWjG8X_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWi0cX_EduPJbEsMYXjUQ" name="abstract" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi0sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi08X_EduPJbEsMYXjUQ" name="interface" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi1MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi1cX_EduPJbEsMYXjUQ" name="eSuperTypes" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjlsX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWi1sX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWi18X_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWi2MX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi2cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi2sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi28X_EduPJbEsMYXjUQ" name="eOperations" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjsMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi3MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi3cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi3sX_EduPJbEsMYXjUQ" name="eAllAttributes" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWjvMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi38X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi4MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi4cX_EduPJbEsMYXjUQ" name="eAllReferences" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj1MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi4sX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi48X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi5MX_EduPJbEsMYXjUQ" name="eReferences" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj1sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi5cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi5sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi58X_EduPJbEsMYXjUQ" name="eAttributes" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj2MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi6MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi6cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi6sX_EduPJbEsMYXjUQ" name="eAllContainments" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj2sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi68X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi7MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi7cX_EduPJbEsMYXjUQ" name="eAllOperations" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj3MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi7sX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi78X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi8MX_EduPJbEsMYXjUQ" name="eAllStructuralFeatures" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj3sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi8cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi8sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi88X_EduPJbEsMYXjUQ" name="eAllSuperTypes" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj4MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi9MX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi9cX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi9sX_EduPJbEsMYXjUQ" name="eIDAttribute" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj4sX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi98X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi-MX_EduPJbEsMYXjUQ" name="eStructuralFeatures" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj5MX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi-cX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWi-sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWi-8X_EduPJbEsMYXjUQ" name="eGenericSuperTypes" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWj5cX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWi_MX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWi_cX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWi_sX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWi_8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjAMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjAcX_EduPJbEsMYXjUQ" name="eAllGenericSuperTypes" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj58X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjAsX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjA8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWjBMX_EduPJbEsMYXjUQ" name="isSuperTypeOf" visibility="public">
+ <ownedParameter xmi:id="_SeWjBcX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjBsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjB8X_EduPJbEsMYXjUQ" name="someClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjCMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjCcX_EduPJbEsMYXjUQ" name="getFeatureCount" visibility="public">
+ <ownedParameter xmi:id="_SeWjCsX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjC8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjDMX_EduPJbEsMYXjUQ" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWjDcX_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjDsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjD8X_EduPJbEsMYXjUQ" name="featureID" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjEMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjEcX_EduPJbEsMYXjUQ" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_SeWjEsX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjE8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjFMX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjFcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjFsX_EduPJbEsMYXjUQ" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWjF8X_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjGMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjGcX_EduPJbEsMYXjUQ" name="featureName" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjGsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjG8X_EduPJbEsMYXjUQ" name="EClassifier" isAbstract="true">
+ <eAnnotations xmi:id="_SeWjHMX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjHcX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjHsX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjH8X_EduPJbEsMYXjUQ" name="instanceClassName" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <eAnnotations xmi:id="_SeWjIMX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjIcX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjIsX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjI8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjJMX_EduPJbEsMYXjUQ" name="instanceClass" visibility="public" type="_SeWjM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjJcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjJsX_EduPJbEsMYXjUQ" name="defaultValue" visibility="public" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjJ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjKMX_EduPJbEsMYXjUQ" name="instanceTypeName" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <eAnnotations xmi:id="_SeWjKcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjKsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjK8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjLMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjLcX_EduPJbEsMYXjUQ" name="ePackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjb8X_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjLsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjL8X_EduPJbEsMYXjUQ" name="eTypeParameters" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjlMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjMMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjMcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_SeWjMsX_EduPJbEsMYXjUQ" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWjM8X_EduPJbEsMYXjUQ" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_SeWjNMX_EduPJbEsMYXjUQ" signature="_SeWkbsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWjNcX_EduPJbEsMYXjUQ" formal="_SeWkb8X_EduPJbEsMYXjUQ" actual="_SeWjMsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWjNsX_EduPJbEsMYXjUQ" name="isInstance" visibility="public">
+ <ownedParameter xmi:id="_SeWjN8X_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjOMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjOcX_EduPJbEsMYXjUQ" name="object" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjOsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjO8X_EduPJbEsMYXjUQ" name="getClassifierID" visibility="public">
+ <ownedParameter xmi:id="_SeWjPMX_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjPcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjasX_EduPJbEsMYXjUQ" name="EDataType">
+ <generalization xmi:id="_SeWja8X_EduPJbEsMYXjUQ" general="_SeWjG8X_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjbMX_EduPJbEsMYXjUQ" name="serializable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjbcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWkDMX_EduPJbEsMYXjUQ" name="EEnum">
+ <eAnnotations xmi:id="_SeWkDcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWkDsX_EduPJbEsMYXjUQ" key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkD8X_EduPJbEsMYXjUQ" general="_SeWjasX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWkEMX_EduPJbEsMYXjUQ" name="eLiterals" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkLMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWkEcX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkEsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWkE8X_EduPJbEsMYXjUQ" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkFMX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkFcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkFsX_EduPJbEsMYXjUQ" name="name" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkF8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWkGMX_EduPJbEsMYXjUQ" name="getEEnumLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkGcX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkGsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkG8X_EduPJbEsMYXjUQ" name="value" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkHMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWkHcX_EduPJbEsMYXjUQ" name="getEEnumLiteralByLiteral" visibility="public">
+ <ownedParameter xmi:id="_SeWkHsX_EduPJbEsMYXjUQ" type="_SeWkIsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkH8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWkIMX_EduPJbEsMYXjUQ" name="literal" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkIcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWkIsX_EduPJbEsMYXjUQ" name="EEnumLiteral">
+ <generalization xmi:id="_SeWkI8X_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWkJMX_EduPJbEsMYXjUQ" name="value" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkJcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkJsX_EduPJbEsMYXjUQ" name="instance" visibility="public" type="_SeWkWsX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkJ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkKMX_EduPJbEsMYXjUQ" name="literal" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkKcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWkKsX_EduPJbEsMYXjUQ" name="eEnum" type="_SeWkDMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWkLMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWkK8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjVMX_EduPJbEsMYXjUQ" name="EFactory">
+ <generalization xmi:id="_SeWjVcX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjVsX_EduPJbEsMYXjUQ" name="ePackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjbsX_EduPJbEsMYXjUQ"/>
+ <ownedOperation xmi:id="_SeWjV8X_EduPJbEsMYXjUQ" name="create" visibility="public">
+ <ownedParameter xmi:id="_SeWjWMX_EduPJbEsMYXjUQ" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjWcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjWsX_EduPJbEsMYXjUQ" name="eClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjW8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjXMX_EduPJbEsMYXjUQ" name="createFromString" visibility="public">
+ <ownedParameter xmi:id="_SeWjXcX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjXsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjX8X_EduPJbEsMYXjUQ" name="eDataType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjYMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjYcX_EduPJbEsMYXjUQ" name="literalValue" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjYsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWjY8X_EduPJbEsMYXjUQ" name="convertToString" visibility="public">
+ <ownedParameter xmi:id="_SeWjZMX_EduPJbEsMYXjUQ" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjZcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjZsX_EduPJbEsMYXjUQ" name="eDataType" type="_SeWjasX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjZ8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjaMX_EduPJbEsMYXjUQ" name="instanceValue" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjacX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjdsX_EduPJbEsMYXjUQ" name="EGenericType">
+ <eAnnotations xmi:id="_SeWjd8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjeMX_EduPJbEsMYXjUQ" key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjecX_EduPJbEsMYXjUQ" general="_SeWijsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjesX_EduPJbEsMYXjUQ" name="eUpperBound" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjhsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWje8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjfMX_EduPJbEsMYXjUQ" name="eTypeArguments" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjiMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjfcX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjfsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjf8X_EduPJbEsMYXjUQ" name="eRawType" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWjisX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjgMX_EduPJbEsMYXjUQ" name="eLowerBound" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjjMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjgcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjgsX_EduPJbEsMYXjUQ" name="eTypeParameter" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjjsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjg8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjhMX_EduPJbEsMYXjUQ" name="eClassifier" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjkMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjhcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWihMX_EduPJbEsMYXjUQ" name="EModelElement" isAbstract="true">
+ <generalization xmi:id="_SeWihcX_EduPJbEsMYXjUQ" general="_SeWijsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWihsX_EduPJbEsMYXjUQ" name="eAnnotations" type="_SeWj6cX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkAcX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWih8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiiMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWiicX_EduPJbEsMYXjUQ" name="getEAnnotation" visibility="public">
+ <ownedParameter xmi:id="_SeWiisX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWii8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWijMX_EduPJbEsMYXjUQ" name="source" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWijcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWifsX_EduPJbEsMYXjUQ" name="ENamedElement" isAbstract="true">
+ <eAnnotations xmi:id="_SeWif8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWigMX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedName"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWigcX_EduPJbEsMYXjUQ" general="_SeWihMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWigsX_EduPJbEsMYXjUQ" name="name" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWig8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWijsX_EduPJbEsMYXjUQ" name="EObject">
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWij8X_EduPJbEsMYXjUQ" name="EEList_EObject">
+ <templateBinding xmi:id="_SeWikMX_EduPJbEsMYXjUQ" signature="_SeWkV8X_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWikcX_EduPJbEsMYXjUQ" formal="_SeWkWMX_EduPJbEsMYXjUQ" actual="_SeWijsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWiksX_EduPJbEsMYXjUQ" name="ETreeIterator_EObject">
+ <templateBinding xmi:id="_SeWik8X_EduPJbEsMYXjUQ" signature="_SeWkjsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWilMX_EduPJbEsMYXjUQ" formal="_SeWkj8X_EduPJbEsMYXjUQ" actual="_SeWijsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWilcX_EduPJbEsMYXjUQ" name="eClass" visibility="public">
+ <ownedParameter xmi:id="_SeWilsX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWil8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWimMX_EduPJbEsMYXjUQ" name="eIsProxy" visibility="public">
+ <ownedParameter xmi:id="_SeWimcX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWimsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWim8X_EduPJbEsMYXjUQ" name="eResource" visibility="public">
+ <ownedParameter xmi:id="_SeWinMX_EduPJbEsMYXjUQ" type="_SeWkgMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWincX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWinsX_EduPJbEsMYXjUQ" name="eContainer" visibility="public">
+ <ownedParameter xmi:id="_SeWin8X_EduPJbEsMYXjUQ" type="_SeWijsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWioMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiocX_EduPJbEsMYXjUQ" name="eContainingFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWiosX_EduPJbEsMYXjUQ" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWio8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWipMX_EduPJbEsMYXjUQ" name="eContainmentFeature" visibility="public">
+ <ownedParameter xmi:id="_SeWipcX_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWipsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWip8X_EduPJbEsMYXjUQ" name="eContents" visibility="public">
+ <ownedParameter xmi:id="_SeWiqMX_EduPJbEsMYXjUQ" type="_SeWij8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiqcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiqsX_EduPJbEsMYXjUQ" name="eAllContents" visibility="public">
+ <ownedParameter xmi:id="_SeWiq8X_EduPJbEsMYXjUQ" type="_SeWiksX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWirMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWircX_EduPJbEsMYXjUQ" name="eCrossReferences" visibility="public">
+ <ownedParameter xmi:id="_SeWirsX_EduPJbEsMYXjUQ" type="_SeWij8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWir8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWisMX_EduPJbEsMYXjUQ" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_SeWiscX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWissX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWis8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWitMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWitcX_EduPJbEsMYXjUQ" name="eGet" visibility="public">
+ <ownedParameter xmi:id="_SeWitsX_EduPJbEsMYXjUQ" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWit8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiuMX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiucX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiusX_EduPJbEsMYXjUQ" name="resolve" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiu8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWivMX_EduPJbEsMYXjUQ" name="eSet" visibility="public">
+ <ownedParameter xmi:id="_SeWivcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWivsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiv8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiwMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiwcX_EduPJbEsMYXjUQ" name="newValue" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiwsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiw8X_EduPJbEsMYXjUQ" name="eIsSet" visibility="public">
+ <ownedParameter xmi:id="_SeWixMX_EduPJbEsMYXjUQ" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWixcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWixsX_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWix8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiyMX_EduPJbEsMYXjUQ" name="eUnset" visibility="public">
+ <ownedParameter xmi:id="_SeWiycX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiysX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWiy8X_EduPJbEsMYXjUQ" name="feature" type="_SeWiSMX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWizMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjmMX_EduPJbEsMYXjUQ" name="EOperation">
+ <eAnnotations xmi:id="_SeWjmcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjmsX_EduPJbEsMYXjUQ" key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjm8X_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjnMX_EduPJbEsMYXjUQ" name="eContainingClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjsMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjncX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjnsX_EduPJbEsMYXjUQ" name="eTypeParameters" type="_SeWjccX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjscX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjn8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjoMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjocX_EduPJbEsMYXjUQ" name="eParameters" type="_SeWjs8X_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjt8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjosX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjo8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjpMX_EduPJbEsMYXjUQ" name="eExceptions" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjuMX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWjpcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjpsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjp8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjqMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjqcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjqsX_EduPJbEsMYXjUQ" name="eGenericExceptions" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjusX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWjq8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWjrMX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWjrcX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjrsX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjr8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjPsX_EduPJbEsMYXjUQ" name="EPackage">
+ <eAnnotations xmi:id="_SeWjP8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjQMX_EduPJbEsMYXjUQ" key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjQcX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjQsX_EduPJbEsMYXjUQ" name="nsURI" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjQ8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjRMX_EduPJbEsMYXjUQ" name="nsPrefix" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjRcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjRsX_EduPJbEsMYXjUQ" name="eFactoryInstance" type="_SeWjVMX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjbsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjR8X_EduPJbEsMYXjUQ" name="eClassifiers" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjb8X_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjSMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjScX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjSsX_EduPJbEsMYXjUQ" name="eSubpackages" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjcMX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjS8X_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjTMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjTcX_EduPJbEsMYXjUQ" name="eSuperPackage" type="_SeWjPsX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjcMX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjTsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_SeWjT8X_EduPJbEsMYXjUQ" name="getEClassifier" visibility="public">
+ <ownedParameter xmi:id="_SeWjUMX_EduPJbEsMYXjUQ" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjUcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_SeWjUsX_EduPJbEsMYXjUQ" name="name" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjU8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjs8X_EduPJbEsMYXjUQ" name="EParameter">
+ <generalization xmi:id="_SeWjtMX_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjtcX_EduPJbEsMYXjUQ" name="eOperation" type="_SeWjmMX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWjt8X_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjtsX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjvsX_EduPJbEsMYXjUQ" name="EReference">
+ <eAnnotations xmi:id="_SeWjv8X_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWjwMX_EduPJbEsMYXjUQ" key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWjwcX_EduPJbEsMYXjUQ" general="_SeWiSMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjwsX_EduPJbEsMYXjUQ" name="containment" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjw8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjxMX_EduPJbEsMYXjUQ" name="container" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjxcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjxsX_EduPJbEsMYXjUQ" name="resolveProxies" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjx8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjyMX_EduPJbEsMYXjUQ" name="eOpposite" type="_SeWjvsX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWjzsX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjycX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWjysX_EduPJbEsMYXjUQ" name="eReferenceType" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true" association="_SeWj0MX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjy8X_EduPJbEsMYXjUQ" name="eKeys" type="_SeWiQcX_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWj0sX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjzMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjzcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWj-sX_EduPJbEsMYXjUQ" name="EStringToStringMapEntry">
+ <ownedAttribute xmi:id="_SeWj-8X_EduPJbEsMYXjUQ" name="key" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj_MX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWj_cX_EduPJbEsMYXjUQ" name="value" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWj_sX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiSMX_EduPJbEsMYXjUQ" name="EStructuralFeature" isAbstract="true">
+ <generalization xmi:id="_SeWiScX_EduPJbEsMYXjUQ" general="_SeWiZMX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiSsX_EduPJbEsMYXjUQ" name="eContainingClass" type="_SeWizcX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" association="_SeWj5MX_EduPJbEsMYXjUQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiS8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiTMX_EduPJbEsMYXjUQ" name="changeable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiTcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiTsX_EduPJbEsMYXjUQ" name="volatile" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiT8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiUMX_EduPJbEsMYXjUQ" name="transient" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiUcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiUsX_EduPJbEsMYXjUQ" name="defaultValueLiteral" visibility="public" type="_SeWkisX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiU8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiVMX_EduPJbEsMYXjUQ" name="defaultValue" visibility="public" type="_SeWkccX_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiVcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiVsX_EduPJbEsMYXjUQ" name="unsettable" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiV8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiWMX_EduPJbEsMYXjUQ" name="derived" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiWcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_SeWiWsX_EduPJbEsMYXjUQ" name="Wildcard"/>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_SeWiW8X_EduPJbEsMYXjUQ" name="EJavaClass_Wildcard">
+ <templateBinding xmi:id="_SeWiXMX_EduPJbEsMYXjUQ" signature="_SeWkbsX_EduPJbEsMYXjUQ">
+ <parameterSubstitution xmi:id="_SeWiXcX_EduPJbEsMYXjUQ" formal="_SeWkb8X_EduPJbEsMYXjUQ" actual="_SeWiWsX_EduPJbEsMYXjUQ"/>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_SeWiXsX_EduPJbEsMYXjUQ" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_SeWiX8X_EduPJbEsMYXjUQ" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiYMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SeWiYcX_EduPJbEsMYXjUQ" name="getContainerClass" visibility="public">
+ <ownedParameter xmi:id="_SeWiYsX_EduPJbEsMYXjUQ" type="_SeWiW8X_EduPJbEsMYXjUQ" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiY8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWiZMX_EduPJbEsMYXjUQ" name="ETypedElement" isAbstract="true">
+ <eAnnotations xmi:id="_SeWiZcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_SeWiZsX_EduPJbEsMYXjUQ" key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWiZ8X_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWiaMX_EduPJbEsMYXjUQ" name="ordered" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiacX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiasX_EduPJbEsMYXjUQ" name="unique" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWia8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWibMX_EduPJbEsMYXjUQ" name="lowerBound" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWibcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWibsX_EduPJbEsMYXjUQ" name="upperBound" visibility="public" type="_SeWkZcX_EduPJbEsMYXjUQ" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWib8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWicMX_EduPJbEsMYXjUQ" name="many" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWiccX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWicsX_EduPJbEsMYXjUQ" name="required" visibility="public" type="_SeWkM8X_EduPJbEsMYXjUQ" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWic8X_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWidMX_EduPJbEsMYXjUQ" name="eType" type="_SeWjG8X_EduPJbEsMYXjUQ" isOrdered="true" association="_SeWkBsX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWidcX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWidsX_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWid8X_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWieMX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SeWiecX_EduPJbEsMYXjUQ" name="eGenericType" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWkCMX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWiesX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_SeWie8X_EduPJbEsMYXjUQ" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_SeWifMX_EduPJbEsMYXjUQ" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWifcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SeWjccX_EduPJbEsMYXjUQ" name="ETypeParameter">
+ <generalization xmi:id="_SeWjcsX_EduPJbEsMYXjUQ" general="_SeWifsX_EduPJbEsMYXjUQ"/>
+ <ownedAttribute xmi:id="_SeWjc8X_EduPJbEsMYXjUQ" name="eBounds" type="_SeWjdsX_EduPJbEsMYXjUQ" isOrdered="true" aggregation="composite" association="_SeWjksX_EduPJbEsMYXjUQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SeWjdMX_EduPJbEsMYXjUQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeWjdcX_EduPJbEsMYXjUQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjbsX_EduPJbEsMYXjUQ" memberEnd="_SeWjVsX_EduPJbEsMYXjUQ _SeWjRsX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjb8X_EduPJbEsMYXjUQ" memberEnd="_SeWjR8X_EduPJbEsMYXjUQ _SeWjLcX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjcMX_EduPJbEsMYXjUQ" memberEnd="_SeWjSsX_EduPJbEsMYXjUQ _SeWjTcX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjhsX_EduPJbEsMYXjUQ" memberEnd="_SeWjesX_EduPJbEsMYXjUQ _SeWjh8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjh8X_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjhsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjiMX_EduPJbEsMYXjUQ" memberEnd="_SeWjfMX_EduPJbEsMYXjUQ _SeWjicX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjicX_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjiMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjisX_EduPJbEsMYXjUQ" memberEnd="_SeWjf8X_EduPJbEsMYXjUQ _SeWji8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWji8X_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjisX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjjMX_EduPJbEsMYXjUQ" memberEnd="_SeWjgMX_EduPJbEsMYXjUQ _SeWjjcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjjcX_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjjMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjjsX_EduPJbEsMYXjUQ" memberEnd="_SeWjgsX_EduPJbEsMYXjUQ _SeWjj8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjj8X_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjjsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjkMX_EduPJbEsMYXjUQ" memberEnd="_SeWjhMX_EduPJbEsMYXjUQ _SeWjkcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjkcX_EduPJbEsMYXjUQ" type="_SeWjdsX_EduPJbEsMYXjUQ" association="_SeWjkMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjksX_EduPJbEsMYXjUQ" memberEnd="_SeWjc8X_EduPJbEsMYXjUQ _SeWjk8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjk8X_EduPJbEsMYXjUQ" type="_SeWjccX_EduPJbEsMYXjUQ" association="_SeWjksX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjlMX_EduPJbEsMYXjUQ" memberEnd="_SeWjL8X_EduPJbEsMYXjUQ _SeWjlcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjlcX_EduPJbEsMYXjUQ" type="_SeWjG8X_EduPJbEsMYXjUQ" association="_SeWjlMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjlsX_EduPJbEsMYXjUQ" memberEnd="_SeWi1cX_EduPJbEsMYXjUQ _SeWjl8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjl8X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWjlsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjsMX_EduPJbEsMYXjUQ" memberEnd="_SeWi28X_EduPJbEsMYXjUQ _SeWjnMX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjscX_EduPJbEsMYXjUQ" memberEnd="_SeWjnsX_EduPJbEsMYXjUQ _SeWjssX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjssX_EduPJbEsMYXjUQ" type="_SeWjmMX_EduPJbEsMYXjUQ" association="_SeWjscX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjt8X_EduPJbEsMYXjUQ" memberEnd="_SeWjocX_EduPJbEsMYXjUQ _SeWjtcX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjuMX_EduPJbEsMYXjUQ" memberEnd="_SeWjpMX_EduPJbEsMYXjUQ _SeWjucX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjucX_EduPJbEsMYXjUQ" type="_SeWjmMX_EduPJbEsMYXjUQ" association="_SeWjuMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjusX_EduPJbEsMYXjUQ" memberEnd="_SeWjqsX_EduPJbEsMYXjUQ _SeWju8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWju8X_EduPJbEsMYXjUQ" type="_SeWjmMX_EduPJbEsMYXjUQ" association="_SeWjusX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjvMX_EduPJbEsMYXjUQ" memberEnd="_SeWi3sX_EduPJbEsMYXjUQ _SeWjvcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjvcX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWjvMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWjzsX_EduPJbEsMYXjUQ" memberEnd="_SeWjyMX_EduPJbEsMYXjUQ _SeWjz8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWjz8X_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" association="_SeWjzsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj0MX_EduPJbEsMYXjUQ" memberEnd="_SeWjysX_EduPJbEsMYXjUQ _SeWj0cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj0cX_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" association="_SeWj0MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj0sX_EduPJbEsMYXjUQ" memberEnd="_SeWjy8X_EduPJbEsMYXjUQ _SeWj08X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj08X_EduPJbEsMYXjUQ" type="_SeWjvsX_EduPJbEsMYXjUQ" association="_SeWj0sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj1MX_EduPJbEsMYXjUQ" memberEnd="_SeWi4cX_EduPJbEsMYXjUQ _SeWj1cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj1cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj1MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj1sX_EduPJbEsMYXjUQ" memberEnd="_SeWi5MX_EduPJbEsMYXjUQ _SeWj18X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj18X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj1sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj2MX_EduPJbEsMYXjUQ" memberEnd="_SeWi58X_EduPJbEsMYXjUQ _SeWj2cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj2cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj2MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj2sX_EduPJbEsMYXjUQ" memberEnd="_SeWi6sX_EduPJbEsMYXjUQ _SeWj28X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj28X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj2sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj3MX_EduPJbEsMYXjUQ" memberEnd="_SeWi7cX_EduPJbEsMYXjUQ _SeWj3cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj3cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj3MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj3sX_EduPJbEsMYXjUQ" memberEnd="_SeWi8MX_EduPJbEsMYXjUQ _SeWj38X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj38X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj3sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj4MX_EduPJbEsMYXjUQ" memberEnd="_SeWi88X_EduPJbEsMYXjUQ _SeWj4cX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj4cX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj4MX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj4sX_EduPJbEsMYXjUQ" memberEnd="_SeWi9sX_EduPJbEsMYXjUQ _SeWj48X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj48X_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj4sX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj5MX_EduPJbEsMYXjUQ" memberEnd="_SeWi-MX_EduPJbEsMYXjUQ _SeWiSsX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj5cX_EduPJbEsMYXjUQ" memberEnd="_SeWi-8X_EduPJbEsMYXjUQ _SeWj5sX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj5sX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj5cX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj58X_EduPJbEsMYXjUQ" memberEnd="_SeWjAcX_EduPJbEsMYXjUQ _SeWj6MX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWj6MX_EduPJbEsMYXjUQ" type="_SeWizcX_EduPJbEsMYXjUQ" association="_SeWj58X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWj_8X_EduPJbEsMYXjUQ" memberEnd="_SeWj78X_EduPJbEsMYXjUQ _SeWkAMX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkAMX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" association="_SeWj_8X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkAcX_EduPJbEsMYXjUQ" memberEnd="_SeWihsX_EduPJbEsMYXjUQ _SeWj8sX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkAsX_EduPJbEsMYXjUQ" memberEnd="_SeWj9MX_EduPJbEsMYXjUQ _SeWkA8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkA8X_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" association="_SeWkAsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkBMX_EduPJbEsMYXjUQ" memberEnd="_SeWj98X_EduPJbEsMYXjUQ _SeWkBcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkBcX_EduPJbEsMYXjUQ" type="_SeWj6cX_EduPJbEsMYXjUQ" association="_SeWkBMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkBsX_EduPJbEsMYXjUQ" memberEnd="_SeWidMX_EduPJbEsMYXjUQ _SeWkB8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkB8X_EduPJbEsMYXjUQ" type="_SeWiZMX_EduPJbEsMYXjUQ" association="_SeWkBsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkCMX_EduPJbEsMYXjUQ" memberEnd="_SeWiecX_EduPJbEsMYXjUQ _SeWkCcX_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkCcX_EduPJbEsMYXjUQ" type="_SeWiZMX_EduPJbEsMYXjUQ" association="_SeWkCMX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkCsX_EduPJbEsMYXjUQ" memberEnd="_SeWiR8X_EduPJbEsMYXjUQ _SeWkC8X_EduPJbEsMYXjUQ">
+ <ownedEnd xmi:id="_SeWkC8X_EduPJbEsMYXjUQ" type="_SeWiQcX_EduPJbEsMYXjUQ" association="_SeWkCsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_SeWkLMX_EduPJbEsMYXjUQ" memberEnd="_SeWkEMX_EduPJbEsMYXjUQ _SeWkKsX_EduPJbEsMYXjUQ"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkLcX_EduPJbEsMYXjUQ" name="EBigDecimal">
+ <eAnnotations xmi:id="_SeWkLsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkL8X_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkMMX_EduPJbEsMYXjUQ" name="EBigInteger">
+ <eAnnotations xmi:id="_SeWkMcX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkMsX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkM8X_EduPJbEsMYXjUQ" name="EBoolean">
+ <eAnnotations xmi:id="_SeWkNMX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkNcX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkNsX_EduPJbEsMYXjUQ" name="EBooleanObject">
+ <eAnnotations xmi:id="_SeWkN8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkOMX_EduPJbEsMYXjUQ" key="name" value="EBoolean:Object"/>
+ <details xmi:id="_SeWkOcX_EduPJbEsMYXjUQ" key="baseType" value="EBoolean"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkOsX_EduPJbEsMYXjUQ" general="_SeWkM8X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkO8X_EduPJbEsMYXjUQ" name="EByte">
+ <eAnnotations xmi:id="_SeWkPMX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkPcX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkPsX_EduPJbEsMYXjUQ" name="EByteArray">
+ <eAnnotations xmi:id="_SeWkP8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkQMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkQcX_EduPJbEsMYXjUQ" name="EByteObject">
+ <eAnnotations xmi:id="_SeWkQsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkQ8X_EduPJbEsMYXjUQ" key="name" value="EByte:Object"/>
+ <details xmi:id="_SeWkRMX_EduPJbEsMYXjUQ" key="baseType" value="EByte"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkRcX_EduPJbEsMYXjUQ" general="_SeWkO8X_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkRsX_EduPJbEsMYXjUQ" name="EChar"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkR8X_EduPJbEsMYXjUQ" name="ECharacterObject">
+ <eAnnotations xmi:id="_SeWkSMX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkScX_EduPJbEsMYXjUQ" key="name" value="EChar:Object"/>
+ <details xmi:id="_SeWkSsX_EduPJbEsMYXjUQ" key="baseType" value="EChar"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkS8X_EduPJbEsMYXjUQ" general="_SeWkRsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkTMX_EduPJbEsMYXjUQ" name="EDate"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkTcX_EduPJbEsMYXjUQ" name="EDiagnosticChain"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkTsX_EduPJbEsMYXjUQ" name="EDouble">
+ <eAnnotations xmi:id="_SeWkT8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkUMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkUcX_EduPJbEsMYXjUQ" name="EDoubleObject">
+ <eAnnotations xmi:id="_SeWkUsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkU8X_EduPJbEsMYXjUQ" key="name" value="EDouble:Object"/>
+ <details xmi:id="_SeWkVMX_EduPJbEsMYXjUQ" key="baseType" value="EDouble"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkVcX_EduPJbEsMYXjUQ" general="_SeWkTsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkVsX_EduPJbEsMYXjUQ" name="EEList">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWkV8X_EduPJbEsMYXjUQ" parameter="_SeWkWMX_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkWMX_EduPJbEsMYXjUQ" parameteredElement="_SeWkWcX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkWcX_EduPJbEsMYXjUQ" name="E" templateParameter="_SeWkWMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkWsX_EduPJbEsMYXjUQ" name="EEnumerator"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkW8X_EduPJbEsMYXjUQ" name="EFeatureMap"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkXMX_EduPJbEsMYXjUQ" name="EFeatureMapEntry"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkXcX_EduPJbEsMYXjUQ" name="EFloat">
+ <eAnnotations xmi:id="_SeWkXsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkX8X_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkYMX_EduPJbEsMYXjUQ" name="EFloatObject">
+ <eAnnotations xmi:id="_SeWkYcX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkYsX_EduPJbEsMYXjUQ" key="name" value="EFloat:Object"/>
+ <details xmi:id="_SeWkY8X_EduPJbEsMYXjUQ" key="baseType" value="EFloat"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkZMX_EduPJbEsMYXjUQ" general="_SeWkXcX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkZcX_EduPJbEsMYXjUQ" name="EInt">
+ <eAnnotations xmi:id="_SeWkZsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkZ8X_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkaMX_EduPJbEsMYXjUQ" name="EIntegerObject">
+ <eAnnotations xmi:id="_SeWkacX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkasX_EduPJbEsMYXjUQ" key="name" value="EInt:Object"/>
+ <details xmi:id="_SeWka8X_EduPJbEsMYXjUQ" key="baseType" value="EInt"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkbMX_EduPJbEsMYXjUQ" general="_SeWkZcX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkbcX_EduPJbEsMYXjUQ" name="EJavaClass">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWkbsX_EduPJbEsMYXjUQ" parameter="_SeWkb8X_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkb8X_EduPJbEsMYXjUQ" parameteredElement="_SeWkcMX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkcMX_EduPJbEsMYXjUQ" name="T" templateParameter="_SeWkb8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkccX_EduPJbEsMYXjUQ" name="EJavaObject"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkcsX_EduPJbEsMYXjUQ" name="ELong">
+ <eAnnotations xmi:id="_SeWkc8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkdMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkdcX_EduPJbEsMYXjUQ" name="ELongObject">
+ <eAnnotations xmi:id="_SeWkdsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkd8X_EduPJbEsMYXjUQ" key="name" value="ELong:Object"/>
+ <details xmi:id="_SeWkeMX_EduPJbEsMYXjUQ" key="baseType" value="ELong"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkecX_EduPJbEsMYXjUQ" general="_SeWkcsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkesX_EduPJbEsMYXjUQ" name="EMap">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWke8X_EduPJbEsMYXjUQ" parameter="_SeWkfMX_EduPJbEsMYXjUQ _SeWkfsX_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkfMX_EduPJbEsMYXjUQ" parameteredElement="_SeWkfcX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkfcX_EduPJbEsMYXjUQ" name="K" templateParameter="_SeWkfMX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkfsX_EduPJbEsMYXjUQ" parameteredElement="_SeWkf8X_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkf8X_EduPJbEsMYXjUQ" name="V" templateParameter="_SeWkfsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkgMX_EduPJbEsMYXjUQ" name="EResource"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkgcX_EduPJbEsMYXjUQ" name="EResourceSet"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkgsX_EduPJbEsMYXjUQ" name="EShort">
+ <eAnnotations xmi:id="_SeWkg8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkhMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkhcX_EduPJbEsMYXjUQ" name="EShortObject">
+ <eAnnotations xmi:id="_SeWkhsX_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkh8X_EduPJbEsMYXjUQ" key="name" value="EShort:Object"/>
+ <details xmi:id="_SeWkiMX_EduPJbEsMYXjUQ" key="baseType" value="EShort"/>
+ </eAnnotations>
+ <generalization xmi:id="_SeWkicX_EduPJbEsMYXjUQ" general="_SeWkgsX_EduPJbEsMYXjUQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkisX_EduPJbEsMYXjUQ" name="EString">
+ <eAnnotations xmi:id="_SeWki8X_EduPJbEsMYXjUQ" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details xmi:id="_SeWkjMX_EduPJbEsMYXjUQ" key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
+ </eAnnotations>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SeWkjcX_EduPJbEsMYXjUQ" name="ETreeIterator">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_SeWkjsX_EduPJbEsMYXjUQ" parameter="_SeWkj8X_EduPJbEsMYXjUQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_SeWkj8X_EduPJbEsMYXjUQ" parameteredElement="_SeWkkMX_EduPJbEsMYXjUQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_SeWkkMX_EduPJbEsMYXjUQ" name="E" templateParameter="_SeWkj8X_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <profileApplication xmi:id="_SeWkkcX_EduPJbEsMYXjUQ">
+ <eAnnotations xmi:id="_SeWkksX_EduPJbEsMYXjUQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_uuJ5sMYcEduPJbEsMYXjUQ" base_Package="_SeWiQMX_EduPJbEsMYXjUQ" packageName="ecore" nsPrefix="ecore" nsURI="http://www.eclipse.org/emf/2002/Ecore"/>
+ <Ecore:EAttribute xmi:id="_uuJ5tMYcEduPJbEsMYXjUQ" base_Property="_SeWiRcX_EduPJbEsMYXjUQ" attributeName="iD"/>
+ <Ecore:EReference xmi:id="_uuJ5tcYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWiR8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlqsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWiSsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EAttribute xmi:id="_uumlq8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWiVMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuvvkMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWicMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uvfWcMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWicsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uvfWccYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWidMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uvfWcsYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWiecX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0qsYcEduPJbEsMYXjUQ" base_Property="_SeWihsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5tsYcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWi1cX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5t8YcEduPJbEsMYXjUQ" base_Property="_SeWi28X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5uMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi3sX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5ucYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi4cX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5usYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi5MX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDoMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi58X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDocYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi6sX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDosYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi7cX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDo8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi8MX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDpMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi88X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuTDpcYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWi9sX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuTDpsYcEduPJbEsMYXjUQ" base_Property="_SeWi-MX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuTDp8YcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWi-8X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuTDqMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjAcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDqcYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjH8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDqsYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjJMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDq8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjJsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EAttribute xmi:id="_uuTDrMYcEduPJbEsMYXjUQ" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjKMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0oMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjLcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlpMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjRsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlpcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjTcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0pMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjVsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uvfWc8YcEduPJbEsMYXjUQ" base_Property="_SeWjc8X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0pcYcEduPJbEsMYXjUQ" base_Property="_SeWjesX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0psYcEduPJbEsMYXjUQ" base_Property="_SeWjfMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0p8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjf8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0qMYcEduPJbEsMYXjUQ" base_Property="_SeWjgMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuc0qcYcEduPJbEsMYXjUQ" base_Property="_SeWjgsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumloMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjnMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlocYcEduPJbEsMYXjUQ" base_Property="_SeWjocX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlosYcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjpMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlo8YcEduPJbEsMYXjUQ" isUnsettable="true" visibility="ReadWrite" base_Property="_SeWjqsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uumlpsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWjtcX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EAttribute xmi:id="_uumlp8YcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjxMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uumlqMYcEduPJbEsMYXjUQ" isTransient="true" isVolatile="true" base_Property="_SeWjysX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuJ5scYcEduPJbEsMYXjUQ" base_Property="_SeWj78X_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5ssYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWj8sX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EReference xmi:id="_uuJ5s8YcEduPJbEsMYXjUQ" base_Property="_SeWj9MX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EClass xmi:id="_uumlqcYcEduPJbEsMYXjUQ" instanceClassName="java.util.Map$Entry" base_Class="_SeWj-sX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0ocYcEduPJbEsMYXjUQ" base_Property="_SeWkEMX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EAttribute xmi:id="_uuc0osYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWkJsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EReference xmi:id="_uuc0o8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_SeWkKsX_EduPJbEsMYXjUQ" isResolveProxies="false"/>
+ <Ecore:EDataType xmi:id="_uvpHcMYcEduPJbEsMYXjUQ" instanceClassName="java.math.BigDecimal" base_PrimitiveType="_SeWkLcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHccYcEduPJbEsMYXjUQ" instanceClassName="java.math.BigInteger" base_PrimitiveType="_SeWkMMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHcsYcEduPJbEsMYXjUQ" instanceClassName="boolean" base_PrimitiveType="_SeWkM8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHc8YcEduPJbEsMYXjUQ" xmlName="EBoolean:Object" instanceClassName="java.lang.Boolean" base_PrimitiveType="_SeWkNsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHdMYcEduPJbEsMYXjUQ" instanceClassName="byte" base_PrimitiveType="_SeWkO8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHdcYcEduPJbEsMYXjUQ" instanceClassName="byte[]" base_PrimitiveType="_SeWkPsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHdsYcEduPJbEsMYXjUQ" xmlName="EByte:Object" instanceClassName="java.lang.Byte" base_PrimitiveType="_SeWkQcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHd8YcEduPJbEsMYXjUQ" instanceClassName="char" base_PrimitiveType="_SeWkRsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHeMYcEduPJbEsMYXjUQ" xmlName="EChar:Object" instanceClassName="java.lang.Character" base_PrimitiveType="_SeWkR8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHecYcEduPJbEsMYXjUQ" instanceClassName="java.util.Date" base_PrimitiveType="_SeWkTMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHesYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain" base_PrimitiveType="_SeWkTcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHe8YcEduPJbEsMYXjUQ" instanceClassName="double" base_PrimitiveType="_SeWkTsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHfMYcEduPJbEsMYXjUQ" xmlName="EDouble:Object" instanceClassName="java.lang.Double" base_PrimitiveType="_SeWkUcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHfcYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.EList" base_PrimitiveType="_SeWkVsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHfsYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.Enumerator" base_PrimitiveType="_SeWkWsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHf8YcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap" base_PrimitiveType="_SeWkW8X_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHgMYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry" base_PrimitiveType="_SeWkXMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHgcYcEduPJbEsMYXjUQ" instanceClassName="float" base_PrimitiveType="_SeWkXcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvpHgsYcEduPJbEsMYXjUQ" xmlName="EFloat:Object" instanceClassName="java.lang.Float" base_PrimitiveType="_SeWkYMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4cMYcEduPJbEsMYXjUQ" instanceClassName="int" base_PrimitiveType="_SeWkZcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4ccYcEduPJbEsMYXjUQ" xmlName="EInt:Object" instanceClassName="java.lang.Integer" base_PrimitiveType="_SeWkaMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4csYcEduPJbEsMYXjUQ" instanceClassName="java.lang.Class" base_PrimitiveType="_SeWkbcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4c8YcEduPJbEsMYXjUQ" instanceClassName="java.lang.Object" base_PrimitiveType="_SeWkccX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4dMYcEduPJbEsMYXjUQ" instanceClassName="long" base_PrimitiveType="_SeWkcsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4dcYcEduPJbEsMYXjUQ" xmlName="ELong:Object" instanceClassName="java.lang.Long" base_PrimitiveType="_SeWkdcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4dsYcEduPJbEsMYXjUQ" instanceClassName="java.util.Map" base_PrimitiveType="_SeWkesX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4d8YcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.resource.Resource" base_PrimitiveType="_SeWkgMX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4eMYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet" base_PrimitiveType="_SeWkgcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4ecYcEduPJbEsMYXjUQ" instanceClassName="short" base_PrimitiveType="_SeWkgsX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4esYcEduPJbEsMYXjUQ" xmlName="EShort:Object" instanceClassName="java.lang.Short" base_PrimitiveType="_SeWkhcX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4e8YcEduPJbEsMYXjUQ" instanceClassName="java.lang.String" base_PrimitiveType="_SeWkisX_EduPJbEsMYXjUQ"/>
+ <Ecore:EDataType xmi:id="_uvy4fMYcEduPJbEsMYXjUQ" instanceClassName="org.eclipse.emf.common.util.TreeIterator" base_PrimitiveType="_SeWkjcX_EduPJbEsMYXjUQ"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml
new file mode 100644
index 0000000000..7c6f83b9d3
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Infrastructure.uml
@@ -0,0 +1,4818 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_z3j3UBZaEdqs4ZsykdgStg" name="InfrastructureLibrary">
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FFCAA00D1" name="Core">
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FFCB502E0" name="Abstractions">
+ <packageImport xmi:id="_3ADC7B74022D3DEE2BE80333" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA002E901AD" name="Ownerships">
+ <packageImport xmi:id="_3ADC7B74022D3DF78BD10282" importedPackage="_3ADC7B74022D3DF78B7503C0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CADCAEE0250" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rMSPwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADCAEE0250">
+ <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rMlxwxTaEdqZu-3Jy1-uYg" name="not_own_self" constrainedElement="_3ADC7B74022D3CADCAEE0250">
+ <ownedComment xmi:id="_rMcAwxTaEdqZu-3Jy1-uYg" annotatedElement="_rMlxwxTaEdqZu-3Jy1-uYg">
+ <body>An element may not directly or indirectly own itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMlxxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allOwnedElements()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rMu7sxTaEdqZu-3Jy1-uYg" name="has_owner" constrainedElement="_3ADC7B74022D3CADCAEE0250">
+ <ownedComment xmi:id="_rMlxyBTaEdqZu-3Jy1-uYg" annotatedElement="_rMu7sxTaEdqZu-3Jy1-uYg">
+ <body>Elements that must be owned must have an owner.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rMu7tBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.mustBeOwned() implies owner->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADCD85009B" name="ownedElement" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="_3ADC7B74022D3CADCD8300C0">
+ <ownedComment xmi:id="_rNLnqRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADCD85009B">
+ <body>The Elements owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rNeikxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rNeikhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADCD8500A5" name="owner" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CADCD8300C0">
+ <ownedComment xmi:id="_rOE_gRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADCD8500A5">
+ <body>The Element that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rOOwgxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rOOwghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB1D63A01EB" name="ownedComment" type="_3ADC7B74022D3CAC070A03AB" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CB1D639015E">
+ <ownedComment xmi:id="_rXxHCxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB1D63A01EB">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXxHDxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXxHDhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106A8400E6" name="allOwnedElements" isQuery="true" bodyCondition="_rMu7vBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rMu7uBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106A8400E6">
+ <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rMu7vBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106A8400E6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rM4ssBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rMu7uxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CADCAEE0250" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbH_oRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbH_oBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106AD00153" name="mustBeOwned" isQuery="true" bodyCondition="_rNLnoxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rM4stRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106AD00153">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rNLnoxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106AD00153">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rNLnpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rNLnohTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CADCD8300C0" name="A_ownedElement_owner" memberEnd="_3ADC7B74022D3CADCD85009B _3ADC7B74022D3CADCD8500A5"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB1D639015E" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D3CB1D63A01EB _3ADC7B74022D3CB1D63A020A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB1D63A020A" name="owningElement" type="_3ADC7B74022D3CADCAEE0250" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CB1D639015E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXxHEhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXxHERTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA002FD0120" name="Namespaces">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A4350048" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0071C02FD" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_rRNMBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0071C02FD">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRgG8xTaEdqZu-3Jy1-uYg" name="has_no_qualified_name" constrainedElement="_3ADC7B74022D3CA0071C02FD">
+ <ownedComment xmi:id="_rRW9ARTaEdqZu-3Jy1-uYg" annotatedElement="_rRgG8xTaEdqZu-3Jy1-uYg">
+ <body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRgG9BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rRgG_BTaEdqZu-3Jy1-uYg" name="has_qualified_name" constrainedElement="_3ADC7B74022D3CA0071C02FD">
+ <ownedComment xmi:id="_rRgG-BTaEdqZu-3Jy1-uYg" annotatedElement="_rRgG_BTaEdqZu-3Jy1-uYg">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRgG_RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA; self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CADD38B00D4" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0080E03C3" name="name" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rR8y5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0080E03C3">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSGj4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSGj4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA008400375" name="qualifiedName" type="_3ADC7B74022D3CA010B103C3" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_rSGj5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA008400375">
+ <body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSPt0xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSPt0hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA008A2036C" name="namespace" type="_3ADC7B74022D3CA0072700FA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA008A20037">
+ <ownedComment xmi:id="_rSsZxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA008A2036C">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rS2KwhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rS2KwRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10644F034E" name="allNamespaces" isQuery="true" bodyCondition="_rRp38xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRgHARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10644F034E">
+ <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRp38xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10644F034E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRp39BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRp38hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0072700FA" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbRwoRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbRwoBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1064C70329" name="isDistinguishableFrom" isQuery="true" bodyCondition="_rRp3_hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRp3-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1064C70329">
+ <body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRp3_hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1064C70329">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRp3_xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRp3-xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C0090" name="n" type="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1064F402E7" name="ns" type="_3ADC7B74022D3CA0072700FA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10653C0010" name="separator" isQuery="true" bodyCondition="_rRzB4xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRp4AxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10653C0010">
+ <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRzB4xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10653C0010">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rRzB5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = '::'</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRzB4hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1065EF023E" name="qualifiedName" isQuery="true" bodyCondition="_rRzB7BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rRzB6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1065EF023E">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rRzB7BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1065EF023E _3ADC7B74022D3CA008400375">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rR8y4BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rRzB6xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0072700FA" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_rSPt1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0072700FA">
+ <body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rSZe2BTaEdqZu-3Jy1-uYg" name="members_distinguishable" constrainedElement="_3ADC7B74022D3CA0072700FA">
+ <ownedComment xmi:id="_rSZe1BTaEdqZu-3Jy1-uYg" annotatedElement="_rSZe2BTaEdqZu-3Jy1-uYg">
+ <body>All the members of a Namespace are distinguishable within it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSZe2RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>membersAreDistinguishable()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CA00777024A" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA008A20358" name="ownedMember" type="_3ADC7B74022D3CA0071C02FD" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B _3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3CA008A20037">
+ <ownedComment xmi:id="_rSjP2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA008A20358">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rSsZwxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSsZwhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0098401B9" name="member" type="_3ADC7B74022D3CA0071C02FD" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CA009830275">
+ <ownedComment xmi:id="_rS2KxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0098401B9">
+ <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rS2KyxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rS2KyhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1068D4021B" name="getNamesOfMember" isQuery="true" bodyCondition="_rSZe4hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rSZe3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1068D4021B">
+ <body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. Those semantics are specified by overriding the getNamesOfMember operation. The specification here simply returns a set containing a single name, or the empty set if no name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rSZe4hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1068D4021B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSZe4xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if member->includes(element) then Set{}->including(element.name) else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rSZe4BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbRwoxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbRwohTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1068FF0064" name="element" type="_3ADC7B74022D3CA0071C02FD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106939005E" name="membersAreDistinguishable" isQuery="true" bodyCondition="_rSjP1BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rSjP0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106939005E">
+ <body>The Boolean query membersAreDistinguishable() determines whether all of the namespaces members are distinguishable within it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rSjP1BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106939005E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rSjP1RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.member->forAll( memb |&#xA;self.member->excluding(memb)->forAll(other |&#xA;memb.isDistinguishableFrom(other, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rSjP0xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA008A20037" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D3CA008A20358 _3ADC7B74022D3CA008A2036C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA009830275" name="A_member_namespace" memberEnd="_3ADC7B74022D3CA0098401B9 _3ADC7B74022D3CA0098401CD">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA0098401CD" type="_3ADC7B74022D3CA0072700FA" association="_3ADC7B74022D3CA009830275">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bqZIkVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bqZIkFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA003360013" name="Classifiers">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3270343" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packageImport xmi:id="_h9WTwD9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A2A018F" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rS_7zBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A2A018F">
+ <body>A classifier is a classification of instances - it describes a set of instances that have features in common.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA00B0C03CF" general="_3ADC7B74022D3CA0072700FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA00B92018D" name="feature" type="_3ADC7B74022D3CA00A3900A0" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3CA00B91036C">
+ <ownedComment xmi:id="_rTS2vRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00B92018D">
+ <body>Specifies each feature defined in the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rTcAoxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rTcAohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E118E370051" name="allFeatures" isQuery="true" bodyCondition="_rTJFuBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rTJFtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E118E370051">
+ <body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rTJFuBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E118E370051">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rTJFuRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(oclIsKindOf(Feature))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rTJFtxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA00A3900A0" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GbbhoRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GbbhoBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A3900A0" name="Feature" isAbstract="true">
+ <ownedComment xmi:id="_rTJFvRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A3900A0">
+ <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD687034A" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA00B920183" name="featuringClassifier" type="_3ADC7B74022D3CA00A2A018F" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CA00B91036C">
+ <ownedComment xmi:id="_rTS2tRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00B920183">
+ <body>The Classifiers that have this Feature as a feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_izGigRikEdqJdcmiZMM1MA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_izGigBikEdqJdcmiZMM1MA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA00B91036C" name="A_feature_featuringClassifier" memberEnd="_3ADC7B74022D3CA00B92018D _3ADC7B74022D3CA00B920183"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA00EE60015" name="Expressions">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3C401C2" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00EFB03B9" name="OpaqueExpression">
+ <ownedComment xmi:id="_rTvipRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00EFB03B9">
+ <body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD243035D" general="_3ADC7B74022D3CA00F020323"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AE11E501C8" name="body" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rULnkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AE11E501C8">
+ <body>The text of the expression, possibly in multiple languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rULnlxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rULnlhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AE120C0319" name="language" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rUVYgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AE120C0319">
+ <body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUVYhRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rUVYhBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00F020323" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_rTviqhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00F020323">
+ <body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD247010A" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1402B00031" name="isComputable" isQuery="true" bodyCondition="_rT4skxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rTvirxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1402B00031">
+ <body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rT4skxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1402B00031">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rT4slBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rT4skhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1402DE0204" name="integerValue" isQuery="true" bodyCondition="_rT4snBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rT4smBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1402DE0204">
+ <body>The query integerValue() gives a single Integer value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rT4snBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1402DE0204">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rT4snRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rT4smxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14030E0325" name="booleanValue" isQuery="true" bodyCondition="_rUCdkRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rT4soRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14030E0325">
+ <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdkRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14030E0325">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdkhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdkBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1403380299" name="stringValue" isQuery="true" bodyCondition="_rUCdmhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUCdlhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1403380299">
+ <body>The query stringValue() gives a single String value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdmhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1403380299">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdmxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdmRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140370027C" name="unlimitedValue" isQuery="true" bodyCondition="_rUCdoxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUCdnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140370027C">
+ <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdoxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140370027C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdohTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1403A502BE" name="isNull" isQuery="true" bodyCondition="_rUCdrBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUCdqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1403A502BE">
+ <body>The query isNull() returns true when it can be computed that the value is null.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUCdrBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1403A502BE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUCdrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUCdqxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E555C610097" name="Expression">
+ <ownedComment xmi:id="_rUCdsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555C610097">
+ <body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E555CF0029C" general="_3ADC7B74022D3CA00F020323"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E555C7702E8" name="symbol" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rULnhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555C7702E8">
+ <body>The symbol associated with the node in the expression tree.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4cgRYWgYEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4cgRYGgYEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E555CFE0288" name="operand" type="_3ADC7B74022D3CA00F020323" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3E555CFC002C">
+ <ownedComment xmi:id="_rULniRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555CFE0288">
+ <body>Specifies a sequence of operands.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rULnjRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rULnjBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E555CFC002C" name="A_operand_expression" memberEnd="_3ADC7B74022D3E555CFE0288 _3ADC7B74022D3E555CFE02CE">
+ <ownedEnd xmi:id="_3ADC7B74022D3E555CFE02CE" name="expression" type="_3ADC7B74022D3E555C610097" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3E555CFC002C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rULnkBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rULnjxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA023540016" name="MultiplicityExpressions">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A41C01AB" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packageImport xmi:id="_3ADC7B74022D3DF6636E0383" importedPackage="_3ADC7B74022D3DF65C06026F"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0237A0346" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_rUoTdxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0237A0346">
+ <body>MultiplicityElement supports the use of value specifications to define each bound of the multiplicity.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF78EA20170" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78F1C034C" name="lower" type="_3ADC7B74022D3CA010A4007B" isDerived="true">
+ <ownedComment xmi:id="_rU71gRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78F1C034C">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rU71hRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rU71hBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_GQsusCkbEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78F2B0290" name="upper" type="_3ADC7B74022D3DE6A93C0003" isDerived="true">
+ <ownedComment xmi:id="_rU71iRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78F2B0290">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rU71jRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rU71jBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J0Y34CkbEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D5391BE0239" name="upperValue" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3D5391BE00B3">
+ <ownedComment xmi:id="_rVE_ZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D5391BE0239">
+ <body>The specification of the upper bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_aBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_ZxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D5391E6031D" name="lowerValue" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3D5391E6015B">
+ <ownedComment xmi:id="_qAlgIBVzEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3D5391E6031D">
+ <body>The specification of the lower bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_chTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_cRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140A3102FA" name="lower" isQuery="true" bodyCondition="_rUyEehTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUyEdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140A3102FA">
+ <body>The derived lower attribute must equal the lowerBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUyEehTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140A3102FA _3ADC7B74022D3DF78F1C034C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUyEexTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUyEdxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140A6C013C" name="upper" isQuery="true" bodyCondition="_rUyEhRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUyEfxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140A6C013C">
+ <body>The derived upper attribute must equal the upperBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rUyEhRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140A6C013C _3ADC7B74022D3DF78F2B0290">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rUyEhhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rUyEghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140B0801A5" name="lowerBound" isQuery="true" bodyCondition="_rU71cxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rUyEihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140B0801A5">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rU71cxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140B0801A5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rU71dBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rU71chTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140B58039F" name="upperBound" isQuery="true" bodyCondition="_rU71fBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rU71eBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140B58039F">
+ <body>The query upperBound() returns the upper bound of the multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rU71fBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140B58039F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rU71fRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rU71exTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D5391BE00B3" name="A_upperValue_owningUpper" memberEnd="_3ADC7B74022D3D5391BE0239 _3ADC7B74022D3D5391BE024D">
+ <ownedEnd xmi:id="_3ADC7B74022D3D5391BE024D" name="owningUpper" type="_3ADC7B74022D3CA0237A0346" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3D5391BE00B3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_axTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_ahTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D5391E6015B" name="A_lowerValue_owningLower" memberEnd="_3ADC7B74022D3D5391E6031D _3ADC7B74022D3D5391E6033B">
+ <ownedEnd xmi:id="_3ADC7B74022D3D5391E6033B" name="owningLower" type="_3ADC7B74022D3CA0237A0346" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3D5391E6015B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVE_dRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVE_dBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA026E00397" name="BehavioralFeatures">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A2F2033D" importedPackage="_3ADC7B74022D3CA003360013"/>
+ <packageImport xmi:id="_3ADC7B74022D3E56169B00A7" importedPackage="_3ADC7B74022D3E554B4A028B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA026FB0381" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rVYhYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA026FB0381">
+ <body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA0277D00C1" general="_3ADC7B74022D3CA00A3900A0"/>
+ <generalization xmi:id="_3ADC7B74022D3CB1519A0173" general="_3ADC7B74022D3CA0072700FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA02BDB0015" name="parameter" type="_3ADC7B74022D3CA02702036E" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3CA02BDA01C2">
+ <ownedComment xmi:id="_rVhrYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA02BDB0015">
+ <body>Specifies the parameters of the BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVhrZRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVhrZBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105A8A018F" name="isDistinguishableFrom" isQuery="true" redefinedOperation="_3ADC7B74022D3E1064C70329" bodyCondition="_rVhrVRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rVYhZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105A8A018F">
+ <body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rVhrVRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105A8A018F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rVhrVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if n.oclIsKindOf(BehavioralFeature)&#xA;then&#xA; if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()&#xA; then Set{}->including(self)->including(n)->isUnique( bf | bf.parameter->collect(type))&#xA; else true&#xA; endif&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rVhrUhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E105BC103DB" name="n" type="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E105C0900B4" name="ns" type="_3ADC7B74022D3CA0072700FA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA02702036E" name="Parameter" isAbstract="true">
+ <ownedComment xmi:id="_rVhrWhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA02702036E">
+ <body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA02ABF01C5" general="_3ADC7B74022D3CA0071C02FD"/>
+ <generalization xmi:id="_3ADC7B74022D3CA02F820073" general="_3ADC7B74022D3CA00A3100E5"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA02BDA01C2" name="A_parameter_behavioralFeature" memberEnd="_3ADC7B74022D3CA02BDB0015 _3ADC7B74022D3CA02BDB001F">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA02BDB001F" type="_3ADC7B74022D3CA026FB0381" association="_3ADC7B74022D3CA02BDA01C2">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rVhrahTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rVhraRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA0306302C6" name="Instances">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A40303D6" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packageImport xmi:id="_3ADC7B74022D3DE6A40C0270" importedPackage="_3ADC7B74022D3CAB68D00279"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0320C02DB" name="InstanceSpecification">
+ <ownedComment xmi:id="_rVrcXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0320C02DB">
+ <body>An instance specification is a model element that represents an instance in a modeled system.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rV0mQxTaEdqZu-3Jy1-uYg" name="slots_are_defined" constrainedElement="_3ADC7B74022D3CA0320C02DB">
+ <ownedComment xmi:id="_rVrcYxTaEdqZu-3Jy1-uYg" annotatedElement="_rV0mQxTaEdqZu-3Jy1-uYg">
+ <body>The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rV0mRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>slot->forAll(s |&#xA;classifier->exists(c | c.allFeatures()->includes(s.definingFeature))&#xA;)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rV0mTBTaEdqZu-3Jy1-uYg" name="no_duplicate_slots" constrainedElement="_3ADC7B74022D3CA0320C02DB">
+ <ownedComment xmi:id="_rV0mSBTaEdqZu-3Jy1-uYg" annotatedElement="_rV0mTBTaEdqZu-3Jy1-uYg">
+ <body>One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rV0mTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>classifier->forAll(c |&#xA;(c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)&#xA;)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CB5A10A02FF" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0333B03B3" name="slot" type="_3ADC7B74022D3CA032120334" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CA0333B0178">
+ <ownedComment xmi:id="_rV-XTRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0333B03B3">
+ <body>A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rV-XURTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rV-XUBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA034DC0362" name="classifier" type="_3ADC7B74022D3CA00A2A018F" association="_3ADC7B74022D3CA034DC00E1">
+ <ownedComment xmi:id="_rWIIQBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA034DC0362">
+ <body>The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIIRBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIQxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D11161F0240" name="specification" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3D11161E02D5">
+ <ownedComment xmi:id="_rWIIUhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D11161F0240">
+ <body>A specification of how to compute, derive, or construct the instance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIIVhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIVRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA032120334" name="Slot">
+ <ownedComment xmi:id="_rV-XQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA032120334">
+ <body>A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADD59B02E6" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0333B03BD" name="owningInstance" type="_3ADC7B74022D3CA0320C02DB" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA0333B0178">
+ <ownedComment xmi:id="_rV-XUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0333B03BD">
+ <body>The instance specification that owns this slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rV-XVxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rV-XVhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CDA7CBE0189" name="value" type="_3ADC7B74022D3CA00F020323" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CDA7CBD025A">
+ <ownedComment xmi:id="_rWIISBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CDA7CBE0189">
+ <body>The value or values corresponding to the defining feature for the owning instance specification.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIITBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIISxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0353B0369" name="definingFeature" type="_3ADC7B74022D3CA00A410002" association="_3ADC7B74022D3CA0353B00FC">
+ <ownedComment xmi:id="_rWRSNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0353B0369">
+ <body>The structural feature that specifies the values that may be held by the slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWRSOxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWRSOhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D1115A7028B" name="InstanceValue">
+ <ownedComment xmi:id="_rV-XRxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D1115A7028B">
+ <body>An instance value is a value specification that identifies an instance.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D1116820335" general="_3ADC7B74022D3CA00F020323"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D1238B00178" name="instance" type="_3ADC7B74022D3CA0320C02DB" association="_3ADC7B74022D3D1238AE0111">
+ <ownedComment xmi:id="_rWIIXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D1238B00178">
+ <body>The instance that is the specified value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWRSMxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWRSMhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0333B0178" name="A_slot_owningInstance" memberEnd="_3ADC7B74022D3CA0333B03B3 _3ADC7B74022D3CA0333B03BD"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA034DC00E1" name="A_classifier_instanceSpecification" memberEnd="_3ADC7B74022D3CA034DC0362 _3ADC7B74022D3CA034DC0380">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA034DC0380" type="_3ADC7B74022D3CA0320C02DB" association="_3ADC7B74022D3CA034DC00E1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IjKZAVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IjKZAFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CDA7CBD025A" name="A_value_owningSlot" memberEnd="_3ADC7B74022D3CDA7CBE0189 _3ADC7B74022D3CDA7CBE0193">
+ <ownedEnd xmi:id="_3ADC7B74022D3CDA7CBE0193" name="owningSlot" type="_3ADC7B74022D3CA032120334" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CDA7CBD025A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIITxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIThTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D11161E02D5" name="A_specification_owningInstanceSpec" memberEnd="_3ADC7B74022D3D11161F0240 _3ADC7B74022D3D11161F025E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D11161F025E" name="owningInstanceSpec" type="_3ADC7B74022D3CA0320C02DB" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3D11161E02D5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWIIWRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWIIWBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D1238AE0111" name="A_instance_instanceValue" memberEnd="_3ADC7B74022D3D1238B00178 _3ADC7B74022D3D1238B001C8">
+ <ownedEnd xmi:id="_3ADC7B74022D3D1238B001C8" type="_3ADC7B74022D3D1115A7028B" association="_3ADC7B74022D3D1238AE0111">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M_64MVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M_64MFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0353B00FC" name="A_definingFeature_slot" memberEnd="_3ADC7B74022D3CA0353B0369 _3ADC7B74022D3CA0353B037D">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA0353B037D" type="_3ADC7B74022D3CA032120334" association="_3ADC7B74022D3CA0353B00FC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PJwSgVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PJwSgFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA017500243" name="Redefinitions">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A44502D6" importedPackage="_3ADC7B74022D3DF65990033B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA019640144" name="RedefinableElement" isAbstract="true">
+ <ownedComment xmi:id="_rWbDNRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA019640144">
+ <body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rWbDPhTaEdqZu-3Jy1-uYg" name="redefinition_context_valid" constrainedElement="_3ADC7B74022D3CA019640144">
+ <ownedComment xmi:id="_rWbDOhTaEdqZu-3Jy1-uYg" annotatedElement="_rWbDPhTaEdqZu-3Jy1-uYg">
+ <body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWbDPxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rWbDRxTaEdqZu-3Jy1-uYg" name="redefinition_consistent" constrainedElement="_3ADC7B74022D3CA019640144">
+ <ownedComment xmi:id="_rWbDQxTaEdqZu-3Jy1-uYg" annotatedElement="_rWbDRxTaEdqZu-3Jy1-uYg">
+ <body>A redefining element must be consistent with each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWbDSBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CA01AB203CF" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA01B20019D" name="redefinedElement" type="_3ADC7B74022D3CA019640144" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CA01B1E012C">
+ <ownedComment xmi:id="_rWkNORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA01B20019D">
+ <body>The redefinable element that is being redefined by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWkNPRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWkNPBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADABFE01E3" name="redefinitionContext" type="_3ADC7B74022D3DF659AC02FF" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3CADABFD03A5">
+ <ownedComment xmi:id="_rWt-JBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADABFE01E3">
+ <body>References the contexts that this element may be redefined from.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rWt-KBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rWt-JxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106C2C03A3" name="isConsistentWith" isQuery="true" precondition="_rWkNJxTaEdqZu-3Jy1-uYg" bodyCondition="_rWkNKRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rWkNIhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106C2C03A3">
+ <body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rWkNJxTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E106C2C03A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWkNKBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rWkNKRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106C2C03A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWkNKhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rWkNJRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00D5" name="redefinee" type="_3ADC7B74022D3CA019640144"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E106C8A007D" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_rWkNMxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rWkNLhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E106C8A007D">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rWkNMxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E106C8A007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rWkNNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = redefinitionContext->exists(c | c.allParents()->includes (redefined.redefinitionContext)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rWkNMRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00D8" name="redefined" type="_3ADC7B74022D3CA019640144"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA01B1E012C" name="A_redefinedElement_redefinableElement" memberEnd="_3ADC7B74022D3CA01B20019D _3ADC7B74022D3CA01B20019F">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA01B20019F" type="_3ADC7B74022D3CA019640144" association="_3ADC7B74022D3CA01B1E012C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ka1DcVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ka1DcFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CADABFD03A5" name="A_redefinitionContext_redefinableElement" memberEnd="_3ADC7B74022D3CADABFE01E3 _3ADC7B74022D3CADABFE0215">
+ <ownedEnd xmi:id="_3ADC7B74022D3CADABFE0215" type="_3ADC7B74022D3CA019640144" association="_3ADC7B74022D3CADABFD03A5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lSaLsVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lSaLsFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA0118D00B2" name="Generalizations">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3F103E4" importedPackage="_3ADC7B74022D3D5142640297"/>
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3E90189" importedPackage="_3ADC7B74022D3DF65990033B"/>
+ <packageImport xmi:id="_3ADC7B74022D3E55640A0169" importedPackage="_3ADC7B74022D3E554B4A028B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA011B1028A" name="Generalization">
+ <ownedComment xmi:id="_5kpB0eDwEdqI1ohUEQYFdg" annotatedElement="_3ADC7B74022D3CA011B1028A">
+ <body>A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Each instance of the specific classifier is also an instance of the general classifier. Thus, the specific classifier indirectly has features of the more general classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA01274037B" general="_3ADC7B74022D3D51445B01FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0127D01D9" name="specific" type="_3ADC7B74022D3CA011BE01AD" subsettedProperty="_3ADC7B74022D3DE6A15F02E3 _3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA0127C032D">
+ <ownedComment xmi:id="_rXUbIBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0127D01D9">
+ <body>References the specializing classifier in the Generalization relationship. </body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXUbJBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXUbIxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA01299018A" name="general" type="_3ADC7B74022D3CA011BE01AD" subsettedProperty="_3ADC7B74022D3DE6A1830227" association="_3ADC7B74022D3CA012980355">
+ <ownedComment xmi:id="_rXdlAhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA01299018A">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXdlBhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXdlBRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA011BE01AD" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rW3vMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA011BE01AD">
+ <body>A classifier is a type and can own generalizations, thereby making it possible to define generalization relationships to&#xD;
+other classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E554FB4033A" general="_3ADC7B74022D3E554AF2005E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0127D01CF" name="generalization" type="_3ADC7B74022D3CA011B1028A" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CA0127C032D">
+ <ownedComment xmi:id="_rXUbGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0127D01CF">
+ <body>Specifies the Generalization relationships for this Classifier. These Generalizations navigate to more general classifiers in the generalization hierarchy.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXUbHhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXUbHRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65B8D0134" name="general" type="_3ADC7B74022D3CA011BE01AD" isDerived="true" association="_3ADC7B74022D3DF65B8A03C5">
+ <ownedComment xmi:id="_rXdlChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65B8D0134">
+ <body>Specifies the general Classifiers for this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXdlDhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXdlDRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105DC8003E" name="general" isQuery="true" bodyCondition="_rXKqExTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rXA5EhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105DC8003E">
+ <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rXKqExTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105DC8003E _3ADC7B74022D3DF65B8D0134">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXKqFBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rXKqEBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA011BE01AD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GcBXgRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GcBXgBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105E6D030C" name="parents" isQuery="true" bodyCondition="_rXKqHBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rXKqGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105E6D030C">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rXKqHBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105E6D030C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXKqHRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = generalization.general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rXKqGxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA011BE01AD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GcBXgxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GcBXghTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10747B0198" name="conformsTo" isQuery="true" redefinedOperation="_3ADC7B74022D3E554FFD0353" bodyCondition="_rXUbFBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rXKqIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10747B0198">
+ <body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rXUbFBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10747B0198">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rXUbFRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self=other) or (self.allParents()->includes(other))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rXUbEhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E107494009A" name="other" type="_3ADC7B74022D3CA011BE01AD"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0127C032D" name="A_generalization_specific" memberEnd="_3ADC7B74022D3CA0127D01CF _3ADC7B74022D3CA0127D01D9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA012980355" name="A_general_generalization" memberEnd="_3ADC7B74022D3CA01299018A _3ADC7B74022D3CA012990194">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA012990194" type="_3ADC7B74022D3CA011B1028A" association="_3ADC7B74022D3CA012980355">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FM-LMVokEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FM-LMFokEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF65B8A03C5" name="A_general_classifier" memberEnd="_3ADC7B74022D3DF65B8D0134 _3ADC7B74022D3DF65B8D0152">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF65B8D0152" type="_3ADC7B74022D3CA011BE01AD" association="_3ADC7B74022D3DF65B8A03C5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CP4H8VokEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CP4H8FokEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D513F63025F" name="Comments">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3030189" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CAC070A03AB" name="Comment">
+ <ownedComment xmi:id="_rXxHARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC070A03AB">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D73B026C" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CAC072502E2" name="body" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rXxHBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAC072502E2">
+ <body>Specifies a string that is the comment</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g7Pt4WgVEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7Pt4GgVEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB1D7400094" name="annotatedElement" type="_3ADC7B74022D3CADCAEE0250" association="_3ADC7B74022D3CB1D73F02EB">
+ <ownedComment xmi:id="_rXxHFRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB1D7400094">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rXxHGRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rXxHGBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB1D73F02EB" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D3CB1D7400094 _3ADC7B74022D3CB1D74000F8">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB1D74000F8" type="_3ADC7B74022D3CAC070A03AB" association="_3ADC7B74022D3CB1D73F02EB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fJE9UVojEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fJE9UFojEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D5142640297" name="Relationships">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A4590393" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D51445B01FA" name="DirectedRelationship" isAbstract="true">
+ <ownedComment xmi:id="_rYEB8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D51445B01FA">
+ <body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D5144E80329" general="_3ADC7B74022D3CA004180181"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6A15F02E3" name="source" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3D7A3113026A" association="_3ADC7B74022D3DE6A15E0179">
+ <ownedComment xmi:id="_rYECBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A15F02E3">
+ <body>Specifies the sources of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYNL4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rYNL4hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6A1830227" name="target" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3D7A3113026A" association="_3ADC7B74022D3DE6A1820366">
+ <ownedComment xmi:id="_rYNL6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A1830227">
+ <body>Specifies the targets of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYNL7RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rYNL7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA004180181" name="Relationship" isAbstract="true">
+ <ownedComment xmi:id="_rYEB9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA004180181">
+ <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CADCD40027C" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D7A3113026A" name="relatedElement" type="_3ADC7B74022D3CADCAEE0250" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3D7A311203C7">
+ <ownedComment xmi:id="_rYEB_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7A3113026A">
+ <body>Specifies the elements related by the Relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rYECABTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rYEB_xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D7A311203C7" name="A_relatedElement_relationship" memberEnd="_3ADC7B74022D3D7A3113026A _3ADC7B74022D3D7A3113031E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D7A3113031E" type="_3ADC7B74022D3CA004180181" association="_3ADC7B74022D3D7A311203C7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ukOVUVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ukOVUFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6A15E0179" name="A_source_directedRelationship" memberEnd="_3ADC7B74022D3DE6A15F02E3 _3ADC7B74022D3DE6A15F031F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6A15F031F" type="_3ADC7B74022D3D51445B01FA" association="_3ADC7B74022D3DE6A15E0179">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vUzdsVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vUzdsFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6A1820366" name="A_target_directedRelationship" memberEnd="_3ADC7B74022D3DE6A1830227 _3ADC7B74022D3DE6A1830277">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6A1830277" type="_3ADC7B74022D3D51445B01FA" association="_3ADC7B74022D3DE6A1820366">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wM-b0VomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wM-b0FomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D627A4F00CE" name="Changeabilities">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A31202D5" importedPackage="_3ADC7B74022D3CAB68D00279"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D627A6F0193" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rYW85RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D627A6F0193">
+ <body>StructuralFeature has an attribute that determines whether a client may modify its value.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D627AFC009B" name="isReadOnly" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rYW86RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D627AFC009B">
+ <body>States whether the feature's value may be modified by a client.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GcLIhBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CAB68D00279" name="StructuralFeatures">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A46C0124" importedPackage="_3ADC7B74022D3CA003360013"/>
+ <packageImport xmi:id="_3ADC7B74022D3E56169000F2" importedPackage="_3ADC7B74022D3E554B4A028B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A410002" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rYgt7RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A410002">
+ <body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CA00C2E02A0" general="_3ADC7B74022D3CA00A3900A0"/>
+ <generalization xmi:id="_3ADC7B74022D3CA00C3A02A7" general="_3ADC7B74022D3CA00A3100E5"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA0307C0055" name="Constraints">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A3AA003E" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packageImport xmi:id="_3ADC7B74022D3DE6C2A902E7" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packageImport xmi:id="_m_pwAD9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3CA002E901AD"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA099F902D0" name="Constraint">
+ <ownedComment xmi:id="_rY8yxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA099F902D0">
+ <body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rY8yzxTaEdqZu-3Jy1-uYg" name="not_apply_to_self" constrainedElement="_3ADC7B74022D3CA099F902D0">
+ <ownedComment xmi:id="_rY8yyxTaEdqZu-3Jy1-uYg" annotatedElement="_rY8yzxTaEdqZu-3Jy1-uYg">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rY8y0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rZGjwxTaEdqZu-3Jy1-uYg" name="value_specification_boolean" constrainedElement="_3ADC7B74022D3CA099F902D0">
+ <ownedComment xmi:id="_rY8y1BTaEdqZu-3Jy1-uYg" annotatedElement="_rZGjwxTaEdqZu-3Jy1-uYg">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rZGjxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DEE22390033" general="_3ADC7B74022D41B9EDB10307"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0A17602EB" name="context" type="_3ADC7B74022D3CA0A069009F" subsettedProperty="_3ADC7B74022D41B9C1A000FD" association="_3ADC7B74022D3CA0A17600A6">
+ <ownedComment xmi:id="_rZZetRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A17602EB">
+ <body>The Namespace that owns this NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPsxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0A4F60158" name="specification" type="_3ADC7B74022D3CA00F020323" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B" association="_3ADC7B74022D3CA0A4F5008F">
+ <ownedComment xmi:id="_rZjPthTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A4F60158">
+ <body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPuhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPuRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADD91701B2" name="constrainedElement" type="_3ADC7B74022D3CADCAEE0250" isOrdered="true" association="_3ADC7B74022D3CADD916037D">
+ <ownedComment xmi:id="_rZjPwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADD91701B2">
+ <body>The ordered set of Elements referenced by this Constraint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPxBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPwxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA0A069009F" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_rZGjyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A069009F">
+ <body>A namespace can own constraints. A constraint associated with a namespace may either apply to the namespace itself, or it may apply to elements in the namespace.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B085CF035A" general="_3ADC7B74022D41B9EDB10307"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA0A17602E1" name="ownedRule" type="_3ADC7B74022D3CA099F902D0" aggregation="composite" subsettedProperty="_3ADC7B74022D41B9C1A000D5" association="_3ADC7B74022D3CA0A17600A6">
+ <ownedComment xmi:id="_rZQUwhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA0A17602E1">
+ <body>Specifies a set of Constraints owned by this Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZZesxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZZeshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9C1A000D5" name="ownedMember" type="_3ADC7B74022D41B9EDB10307" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CADCD85009B _3ADC7B74022D41B9EF3300FA" association="_3ADC7B74022D41B9C19E0263">
+ <ownedComment xmi:id="_rZtAshTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9C1A000D5">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZtAthTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZtAtRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9EF3300FA" name="member" type="_3ADC7B74022D41B9EDB10307" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D41B9EF2F0270">
+ <ownedComment xmi:id="_rZ2KqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9EF3300FA">
+ <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZ2KrBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZ2KqxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41B9EDB10307" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_rZGjzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9EDB10307">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B9EE51018B" general="_3ADC7B74022D3CADCAEE0250"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B9C1A000FD" name="namespace" type="_3ADC7B74022D3CA0A069009F" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D41B9C19E0263">
+ <ownedComment xmi:id="_rZtAuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B9C1A000FD">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZ2KoxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZ2KohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0A17600A6" name="A_ownedRule_context" memberEnd="_3ADC7B74022D3CA0A17602E1 _3ADC7B74022D3CA0A17602EB"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA0A4F5008F" name="A_specification_owningConstraint" memberEnd="_3ADC7B74022D3CA0A4F60158 _3ADC7B74022D3CA0A4F6019E">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA0A4F6019E" name="owningConstraint" type="_3ADC7B74022D3CA099F902D0" subsettedProperty="_3ADC7B74022D3CADCD8500A5" association="_3ADC7B74022D3CA0A4F5008F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rZjPvRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rZjPvBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CADD916037D" name="A_constrainedElement_constraint" memberEnd="_3ADC7B74022D3CADD91701B2 _3ADC7B74022D3CADD9170216">
+ <ownedEnd xmi:id="_3ADC7B74022D3CADD9170216" type="_3ADC7B74022D3CA099F902D0" association="_3ADC7B74022D3CADD916037D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFuZ8VojEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFuZ8FojEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B9C19E0263" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D41B9C1A000D5 _3ADC7B74022D41B9C1A000FD"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B9EF2F0270" name="A_member_namespace" memberEnd="_3ADC7B74022D41B9EF3300FA _3ADC7B74022D41B9EF330104">
+ <ownedEnd xmi:id="_3ADC7B74022D41B9EF330104" type="_3ADC7B74022D3CA0A069009F" association="_3ADC7B74022D41B9EF2F0270">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vlsgwVojEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vlsgwFojEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CAD9E020290" name="Visibilities">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A47D0128" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CADB30F028F" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_raS2mxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADB30F028F">
+ <body>NamedElement has a visibility attribute.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_raS2oxTaEdqZu-3Jy1-uYg" name="visibility_needs_ownership" constrainedElement="_3ADC7B74022D3CADB30F028F">
+ <ownedComment xmi:id="_raS2nxTaEdqZu-3Jy1-uYg" annotatedElement="_raS2oxTaEdqZu-3Jy1-uYg">
+ <body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_raS2pBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>namespace->isEmpty() implies visibility->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CADC5B702BE" name="visibility" type="_3ADC7B74022D3CAD9E0F01D0">
+ <ownedComment xmi:id="_raS2qBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CADC5B702BE">
+ <body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_racnkxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_racnkhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3CAD9E0F01D0" name="VisibilityKind">
+ <ownedComment xmi:id="_raJsoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9E0F01D0">
+ <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_3ADC7B74022D3E107BB80139" name="bestVisibility" isQuery="true" bodyCondition="_raJsqhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_raJspRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E107BB80139">
+ <body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_raJsqhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E107BB80139">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_raJsqxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if vis->includes(#public) then #public else #private endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_raJsqBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAD9E0F01D0" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00E5" name="vis" type="_3ADC7B74022D3CAD9E0F01D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GceDcRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GceDcBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAD9EB900BC" name="public">
+ <ownedComment xmi:id="_raJsrxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9EB900BC">
+ <body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3CAD9EBB02C8" name="private">
+ <ownedComment xmi:id="_raJssxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CAD9EBB02C8">
+ <body>A private element is only visible inside the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A15005A" name="protected">
+ <ownedComment xmi:id="_raS2kxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A15005A">
+ <body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A40019D" name="package">
+ <ownedComment xmi:id="_raS2lxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A40019D">
+ <body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF65990033B" name="Super">
+ <packageImport xmi:id="_3ADC7B74022D3DF6632E020F" importedPackage="_3ADC7B74022D3CA003360013"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF659AC02FF" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_ralxhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF659AC02FF">
+ <body>A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ralxjRTaEdqZu-3Jy1-uYg" name="no_cycles_in_generalization" constrainedElement="_3ADC7B74022D3DF659AC02FF">
+ <ownedComment xmi:id="_ralxiRTaEdqZu-3Jy1-uYg" annotatedElement="_ralxjRTaEdqZu-3Jy1-uYg">
+ <body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ralxjhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ralxlhTaEdqZu-3Jy1-uYg" name="specialize_type" constrainedElement="_3ADC7B74022D3DF659AC02FF">
+ <ownedComment xmi:id="_ralxkhTaEdqZu-3Jy1-uYg" annotatedElement="_ralxlhTaEdqZu-3Jy1-uYg">
+ <body>A classifier may only specialize classifiers of a valid type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ralxlxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.parents()->forAll(c | self.maySpecializeType(c))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B085FE002C" general="_3ADC7B74022D3CA0072700FA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65AB001F5" name="isAbstract" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_ra5TqxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65AB001F5">
+ <body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GceDchTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65A9D02E0" name="inheritedMember" type="_3ADC7B74022D3CA0071C02FD" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3CA0098401B9" association="_3ADC7B74022D3DF65A9D02DE">
+ <ownedComment xmi:id="_rbCddhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65A9D02E0">
+ <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rbCdehTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rbCdeRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65ACD0034" name="general" type="_3ADC7B74022D3DF659AC02FF" association="_3ADC7B74022D3DF65ACA038D">
+ <ownedComment xmi:id="_rbCdfxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65ACD0034">
+ <body>Specifies the more general classifiers in the generalization hierarchy for this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rbCdgxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rbCdghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10722C00E4" name="inheritedMember" isQuery="true" bodyCondition="_raviiRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravigxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10722C00E4">
+ <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_raviiRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10722C00E4 _3ADC7B74022D3DF65A9D02E0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_raviihTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ravihhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0071C02FD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0cRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0cBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1072FF02E6" name="parents" isQuery="true" bodyCondition="_ravikhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravijhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1072FF02E6">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ravikhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1072FF02E6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ravikxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ravikRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DF659AC02FF" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0cxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0chTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10734200DA" name="allParents" isQuery="true" bodyCondition="_ravimxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravilxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10734200DA">
+ <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ravimxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10734200DA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ravinBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()->union(self.parents()->collect(p | p.allParents())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ravimhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DF659AC02FF" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0dRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0dBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10738400DF" name="inheritableMembers" isQuery="true" precondition="_ra5ThBTaEdqZu-3Jy1-uYg" bodyCondition="_ra5ThhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ravioBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10738400DF">
+ <body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5ThBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E10738400DF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5ThRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ra5ThhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10738400DF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5ThxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(m | c.hasVisibilityOf(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0071C02FD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcn0dxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcn0dhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1073B9026C" name="c" type="_3ADC7B74022D3DF659AC02FF"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10740603B7" name="hasVisibilityOf" isQuery="true" precondition="_ra5TkBTaEdqZu-3Jy1-uYg" bodyCondition="_ra5TkhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ra5TixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10740603B7">
+ <body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5TkBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E10740603B7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TkRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.allParents()->collect(c | c.member)->includes(n)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ra5TkhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10740603B7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TkxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if (self.inheritedMember->includes (n)) then (n.visibility &lt;> #private) else true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TjhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C00FF" name="n" type="_3ADC7B74022D3CA0071C02FD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1074EF0344" name="inherit" isQuery="true" bodyCondition="_ra5TnBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ra5TlxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1074EF0344">
+ <body>The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5TnBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1074EF0344">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TnRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TmhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA0071C02FD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcw-YRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcw-YBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C0102" name="inhs" type="_3ADC7B74022D3CA0071C02FD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gcw-YxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gcw-YhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10770902B1" name="maySpecializeType" isQuery="true" bodyCondition="_ra5TphTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ra5ToRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10770902B1">
+ <body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ra5TphTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10770902B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ra5TpxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.oclIsKindOf(c.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ra5TpBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C010A" name="c" type="_3ADC7B74022D3DF659AC02FF"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF65A9D02DE" name="A_classifier_inheritedMember" memberEnd="_3ADC7B74022D3DF65A9D02DF _3ADC7B74022D3DF65A9D02E0">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF65A9D02DF" type="_3ADC7B74022D3DF659AC02FF" association="_3ADC7B74022D3DF65A9D02DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7A1nAVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7A1nAFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF65ACA038D" name="A_general_classifier" memberEnd="_3ADC7B74022D3DF65ACD0034 _3ADC7B74022D3DF65ACD003E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF65ACD003E" type="_3ADC7B74022D3DF659AC02FF" association="_3ADC7B74022D3DF65ACA038D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Qx-oVomEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Qx-oFomEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF659EE021E" name="Literals">
+ <packageImport xmi:id="_3ADC7B74022D3DF663400034" importedPackage="_3ADC7B74022D3CA00EE60015"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A2FE03E5" name="LiteralBoolean">
+ <ownedComment xmi:id="_rbfJaxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2FE03E5">
+ <body>A literal Boolean is a specification of a Boolean value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A32B0118" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5A3110161" name="value" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rbo6chTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A3110161">
+ <body>The specified Boolean value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_YDXU8GgaEdqfYrlcy8iLFA" type="_3ADC7B74022D3CA010AC0090"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1406E501AC" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rbo6ZBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbo6YBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1406E501AC">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbo6ZBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1406E501AC">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbo6ZRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbo6YxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407110029" name="booleanValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E14030E0325" bodyCondition="_rbo6bRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbo6aRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407110029">
+ <body>The query booleanValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbo6bRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407110029">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbo6bhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbo6bBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A2720176" name="LiteralString">
+ <ownedComment xmi:id="_rbo6dhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2720176">
+ <body>A literal string is a specification of a string value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2D101E1" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5A28802FF" name="value" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rbyEWhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A28802FF">
+ <body>The specified String value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_g5BHAWgaEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g5BHAGgaEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407FF0374" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rbo6fxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbo6exTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407FF0374">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbo6fxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407FF0374">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbo6gBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbo6fhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140821003E" name="stringValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E1403380299" bodyCondition="_rbyEVRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbyEURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140821003E">
+ <body>The query stringValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rbyEVRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140821003E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rbyEVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rbyEVBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A2060370" name="LiteralSpecification" isAbstract="true">
+ <ownedComment xmi:id="_rbyEXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2060370">
+ <body>A literal specification identifies a literal constant being modeled.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2250324" general="_3ADC7B74022D3CA00F020323"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A29200D2" name="LiteralNull">
+ <ownedComment xmi:id="_rbyEYxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A29200D2">
+ <body>A literal null specifies the lack of a value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2D5010B" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407B4000F" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rb71UxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rbyEaBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407B4000F">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71UxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407B4000F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71VBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71UhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1407D8029C" name="isNull" isQuery="true" redefinedOperation="_3ADC7B74022D3E1403A502BE" bodyCondition="_rb71XBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rb71WBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1407D8029C">
+ <body>The query isNull() returns true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71XBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1407D8029C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71XRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71WxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5A23B01F0" name="LiteralInteger">
+ <ownedComment xmi:id="_rb71YRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A23B01F0">
+ <body>A literal integer is a specification of an integer value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CB5A2CC0144" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5A2640253" name="value" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rb71eBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5A2640253">
+ <body>The specified Integer value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_dugS0GgaEdqfYrlcy8iLFA" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14074A00F3" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rb71ahTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rb71ZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14074A00F3">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71ahTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14074A00F3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71axTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71aRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14077700E4" name="integerValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402DE0204" bodyCondition="_rb71cxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rb71bxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14077700E4">
+ <body>The query integerValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rb71cxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14077700E4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rb71dBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rb71chTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF664BD01AE" name="LiteralUnlimitedNatural">
+ <ownedComment xmi:id="_rcFmUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF664BD01AE">
+ <body>A literal unlimited natural is a specification of an unlimited natural number.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF664D30228" general="_3ADC7B74022D3CB5A2060370"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF664DB022A" name="value" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rcFmahTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF664DB022A">
+ <body>The specified UnlimitedNatural value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ntBxcGgaEdqfYrlcy8iLFA" type="_3ADC7B74022D3DE6A93C0003"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E140869018C" name="isComputable" isQuery="true" redefinedOperation="_3ADC7B74022D3E1402B00031" bodyCondition="_rcFmXBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcFmWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E140869018C">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcFmXBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E140869018C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcFmXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcFmWxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14088F01CD" name="unlimitedValue" isQuery="true" redefinedOperation="_3ADC7B74022D3E140370027C" bodyCondition="_rcFmZRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcFmYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14088F01CD">
+ <body>The query unlimitedValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcFmZRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14088F01CD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcFmZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcFmZBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF65C06026F" name="Multiplicities">
+ <packageImport xmi:id="_3ADC7B74022D3DE6A42501FE" importedPackage="_3ADC7B74022D3DF78B7503C0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF65EC002AE" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_rcOwSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65EC002AE">
+ <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rciSSBTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D3DF65EC002AE">
+ <ownedComment xmi:id="_rciSRBTaEdqZu-3Jy1-uYg" annotatedElement="_rciSSBTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rciSSRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rciSURTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D3DF65EC002AE">
+ <ownedComment xmi:id="_rciSTRTaEdqZu-3Jy1-uYg" annotatedElement="_rciSURTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rciSUhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcrcMxTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D3DF65EC002AE">
+ <ownedComment xmi:id="_rciSVhTaEdqZu-3Jy1-uYg" annotatedElement="_rcrcMxTaEdqZu-3Jy1-uYg">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcrcNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF65ED2003D" general="_3ADC7B74022D3DF78BA701E1"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF65ED50222" name="isOrdered" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rcrcOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF65ED50222">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gc6vYBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78C0F008C" name="isUnique" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rcrcPRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78C0F008C">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Gc6vYRTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78C160227" name="lower" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rcrcQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78C160227">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rcrcRhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rcrcRRTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_Gc6vYhTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF78C21006A" name="upper" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rcrcSRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78C21006A">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rcrcTRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rcrcTBTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gc6vYxTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E105FFF0120" name="lowerBound" isQuery="true" bodyCondition="_rcYhQxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcOwTRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E105FFF0120">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhQxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E105FFF0120">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lower->notEmpty() then lower else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhQhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10604500E4" name="upperBound" isQuery="true" bodyCondition="_rcYhTBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10604500E4">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhTBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10604500E4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upper->notEmpty() then upper else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhSxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1060A900DE" name="isMultivalued" isQuery="true" precondition="_rcYhVRTaEdqZu-3Jy1-uYg" bodyCondition="_rcYhVxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1060A900DE">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhVRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1060A900DE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcYhVxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1060A900DE">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhWBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhVBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1060D80399" name="includesCardinality" isQuery="true" precondition="_rcYhYRTaEdqZu-3Jy1-uYg" bodyCondition="_rcYhYxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1060D80399">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhYRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1060D80399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhYhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()&#xA;includesCardinality = (lowerBound() &lt;= C) and (upperBound() >= C)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcYhYxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1060D80399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhXxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1060FD0360" name="C" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E10616C00C0" name="includesMultiplicity" isQuery="true" precondition="_rcYhbRTaEdqZu-3Jy1-uYg" bodyCondition="_rcYhbxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rcYhaBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E10616C00C0">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rcYhbRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E10616C00C0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rcYhbhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rcYhbxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E10616C00C0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rciSQBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rcYhaxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E10618E0250" name="M" type="_3ADC7B74022D416D57E502DA"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF78B7503C0" name="Elements">
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF78BA701E1" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rc-XJBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF78BA701E1">
+ <body>An element is a constituent of a model.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E554B4A028B" name="TypedElements">
+ <packageImport xmi:id="_3ADC7B74022D3E554EDC0181" importedPackage="_3ADC7B74022D3CA002FD0120"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E554AF2005E" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_rdR5JBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E554AF2005E">
+ <body>A type constrains the values represented by a typed element.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E554C9B01B3" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedOperation xmi:id="_3ADC7B74022D3E554FFD0353" name="conformsTo" isQuery="true" bodyCondition="_rdR5LhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rdR5KRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E554FFD0353">
+ <body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rdR5LhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E554FFD0353">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rdR5LxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rdR5LBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE305C0113" name="other" type="_3ADC7B74022D3E554AF2005E"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA00A3100E5" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_rdR5MxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00A3100E5">
+ <body>A typed element has a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E554DC00381" general="_3ADC7B74022D3CA0071C02FD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA00B360130" name="type" type="_3ADC7B74022D3E554AF2005E" association="_3ADC7B74022D3CA00B35031A">
+ <ownedComment xmi:id="_rdR5ORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA00B360130">
+ <body>The type of the TypedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rdbDExTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rdbDEhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA00B35031A" name="A_type_typedElement" memberEnd="_3ADC7B74022D3CA00B360130 _3ADC7B74022D3CA00B36013A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA00B36013A" type="_3ADC7B74022D3CA00A3100E5" association="_3ADC7B74022D3CA00B35031A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EnqXUVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EnqXUFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3C9FFCC70354" name="PrimitiveTypes">
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3CA010A4007B" name="Integer">
+ <ownedComment xmi:id="_rdk0FBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA010A4007B">
+ <body>An integer is a primitive type representing integer values.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3CA010AC0090" name="Boolean">
+ <ownedComment xmi:id="_rd3vARTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA010AC0090">
+ <body>A Boolean type is used for logical expression, consisting of the predefined values true and false.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3CA010B103C3" name="String">
+ <ownedComment xmi:id="_reBgAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA010B103C3">
+ <body>A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_3ADC7B74022D3DE6A93C0003" name="UnlimitedNatural">
+ <ownedComment xmi:id="_reBgDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A93C0003">
+ <body>An unlimited natural is a primitive type representing unlimited natural values.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DE692A401F1" name="Basic">
+ <packageImport xmi:id="_3ADC7B74022D3DE78B4D02BB" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB400163" name="Class">
+ <ownedComment xmi:id="_reeL8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB400163">
+ <body>A class is a type that has objects as its instances.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6ABFA016B" general="_3ADC7B74022D3DE6A6CC00B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC0203C5" name="isAbstract" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_reeL9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC0203C5">
+ <body>True when a class is abstract.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdNqUBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ACA0001F" name="ownedAttribute" type="_3ADC7B74022D3DE6AB4B0001" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6AC9F015E">
+ <ownedComment xmi:id="_rfgt1RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ACA0001F">
+ <body>The attributes owned by a class. These do not include the inherited attributes. Attributes are represented by instances of Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfgt2RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfgt2BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ADE30041" name="ownedOperation" type="_3ADC7B74022D3DE6AB440191" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6ADE20180">
+ <ownedComment xmi:id="_rfzothTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ADE30041">
+ <body>The operations owned by a class. These do not include the inherited operations.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzouhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzouRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AE3D013B" name="superClass" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6AE3B0279">
+ <ownedComment xmi:id="_rfzoxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE3D013B">
+ <body>The immediate superclasses of a class, from which the class inherits.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzoyRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzoyBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB440191" name="Operation">
+ <ownedComment xmi:id="_reeL-xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB440191">
+ <body>An operation is owned by a class and may be invoked in the context of objects that are instances of that class. It is a typed element and a multiplicity element.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E56126B029B" general="_3ADC7B74022D3DE6AA3D016B"/>
+ <generalization xmi:id="_3ADC7B74022D3E56126E03B7" general="_3ADC7B74022D416D57E502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD7B00F6" name="raisedException" type="_3ADC7B74022D3DE6A6CC00B0" association="_3ADC7B74022D3DE6AD7A004B">
+ <ownedComment xmi:id="_rfgtzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD7B00F6">
+ <body>The exceptions that are declared as possible during an invocation of the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfgt0RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfgt0BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD8F022B" name="ownedParameter" type="_3ADC7B74022D3DE6AB5E035B" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6AD8E03A7">
+ <ownedComment xmi:id="_rfqe0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD8F022B">
+ <body>The parameters to the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfqe1BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfqe0xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ADE30056" name="class" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6ADE20180">
+ <ownedComment xmi:id="_rfzovBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ADE30056">
+ <body>The class that owns the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzowBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzovxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB5E035B" name="Parameter">
+ <ownedComment xmi:id="_renV4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB5E035B">
+ <body>A parameter is a typed element that represents a parameter of an operation.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E56125A01BA" general="_3ADC7B74022D3DE6AA3D016B"/>
+ <generalization xmi:id="_3ADC7B74022D3E56125D02B9" general="_3ADC7B74022D416D57E502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD8F023F" name="operation" type="_3ADC7B74022D3DE6AB440191" association="_3ADC7B74022D3DE6AD8E03A7">
+ <ownedComment xmi:id="_rfqe1hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD8F023F">
+ <body>The operation that owns the parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfzosxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfzoshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AB4B0001" name="Property">
+ <ownedComment xmi:id="_renV5xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AB4B0001">
+ <body>A property is a typed element that represents an attribute of a class.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AC920169" general="_3ADC7B74022D3DE6AA3D016B"/>
+ <generalization xmi:id="_3ADC7B74022D3E56123A00E1" general="_3ADC7B74022D416D57E502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC2D00E2" name="isReadOnly" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_renV7RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC2D00E2">
+ <body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdNqURTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC4701DA" name="default" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_renV8hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC4701DA">
+ <body>A string that is evaluated to give a default value for the attribute when an object of the owning class is instantiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_renV9hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_renV9RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC5A02DB" name="isComposite" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_renV-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC5A02DB">
+ <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbUBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AC630099" name="isDerived" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rexG4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AC630099">
+ <body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbURTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6ACA00029" name="class" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6AC9F015E">
+ <ownedComment xmi:id="_rfgt2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6ACA00029">
+ <body>The class that owns the property, and of which the property is an attribute.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfqewxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfqewhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AD01030E" name="opposite" type="_3ADC7B74022D3DE6AB4B0001" association="_3ADC7B74022D3DE6ACFF0224">
+ <ownedComment xmi:id="_rfqeyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AD01030E">
+ <body>Two attributes attr1 and attr2 of two objects o1 and o2 (which may be the same object) may be paired with each other so that o1.attr1 refers to o2 if and only if o2.attr2 refers to o1. In such a case attr1 is the opposite of attr2 and attr2 is the opposite of attr1.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfqezBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfqeyxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6A6CC00B0" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_rexG5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A6CC00B0">
+ <body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AA6E01C5" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6B0040398" name="package" type="_3ADC7B74022D3DE6AF3E02D5" association="_3ADC7B74022D3DE6B0040154">
+ <ownedComment xmi:id="_rgGjtRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6B0040398">
+ <body>Specifies the owning package of this classifier, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUoxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6A6B90257" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_rexG6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A6B90257">
+ <body>A named element represents an element with a name.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF78D3B035F" general="_3ADC7B74022D416D58F70035"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6A6EE0069" name="name" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rexG7xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6A6EE0069">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rexG8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rexG8hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AA3D016B" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_DR3QwBVsEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DE6AA3D016B">
+ <body>A typed element is a kind of named element that represents an element with a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AAB102B2" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AA7C03B0" name="type" type="_3ADC7B74022D3DE6A6CC00B0" association="_3ADC7B74022D3DE6AA7C00C1">
+ <ownedComment xmi:id="_rf9ZshTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AA7C03B0">
+ <body>The type of the TypedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rf9ZthTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rf9ZtRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AE8B01AC" name="Enumeration">
+ <ownedComment xmi:id="_rexG9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE8B01AC">
+ <body>An enumeration defines a set of literals that can be used as its values.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AEE30176" general="_3ADC7B74022D3DEE7F610363"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AF0702A4" name="ownedLiteral" type="_3ADC7B74022D3DE6AE90034D" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3DE6AF070037">
+ <ownedComment xmi:id="_rf9ZuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AF0702A4">
+ <body>The ordered set of literals for this Enumeration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rf9ZvhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rf9ZvRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AE90034D" name="EnumerationLiteral">
+ <ownedComment xmi:id="_re635BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE90034D">
+ <body>An enumeration literal is a value of an enumeration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AF02012A" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AF0702A6" name="enumeration" type="_3ADC7B74022D3DE6AE8B01AC" association="_3ADC7B74022D3DE6AF070037">
+ <ownedComment xmi:id="_rf9ZwBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AF0702A6">
+ <body>The Enumeration that this EnumerationLiteral is a member of.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rf9ZxBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rf9ZwxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AE830128" name="PrimitiveType">
+ <ownedComment xmi:id="_re636RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AE830128">
+ <body>A primitive type is a data type implemented by the underlying infrastructure and made available for modeling.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AEDB005C" general="_3ADC7B74022D3DEE7F610363"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6AF3E02D5" name="Package">
+ <ownedComment xmi:id="_re637hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AF3E02D5">
+ <body>A package is a container for types and other packages.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6AF9101B2" general="_3ADC7B74022D3DE6A6B90257"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AFB7015D" name="nestedPackage" type="_3ADC7B74022D3DE6AF3E02D5" aggregation="composite" association="_3ADC7B74022D3DE6AFB5015A">
+ <ownedComment xmi:id="_rgGjohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AFB7015D">
+ <body>The set of contained packages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgGjphTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgGjpRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6AFB70171" name="nestingPackage" type="_3ADC7B74022D3DE6AF3E02D5" association="_3ADC7B74022D3DE6AFB5015A">
+ <ownedComment xmi:id="_rgGjqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6AFB70171">
+ <body>The containing package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgGjrBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgGjqxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6B0040384" name="ownedType" type="_3ADC7B74022D3DE6A6CC00B0" aggregation="composite" association="_3ADC7B74022D3DE6B0040154">
+ <ownedComment xmi:id="_rgGjrxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6B0040384">
+ <body>The set of contained types.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgGjsxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgGjshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DEE7F610363" name="DataType" isAbstract="true">
+ <ownedComment xmi:id="_re638xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE7F610363">
+ <body>DataType is an abstract class that acts as a common superclass for different kinds of data types.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE7F810066" general="_3ADC7B74022D3DE6A6CC00B0"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D416D57E502DA" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_re63-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57E502DA">
+ <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfNy6xTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D416D57E502DA">
+ <ownedComment xmi:id="_rfNy5xTaEdqZu-3Jy1-uYg" annotatedElement="_rfNy6xTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy7BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfNy9BTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D416D57E502DA">
+ <ownedComment xmi:id="_rfNy8BTaEdqZu-3Jy1-uYg" annotatedElement="_rfNy9BTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy9RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfW8wxTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D416D57E502DA">
+ <ownedComment xmi:id="_rfNy-RTaEdqZu-3Jy1-uYg" annotatedElement="_rfW8wxTaEdqZu-3Jy1-uYg">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfW8xBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B05F2F027F" general="_3ADC7B74022D416D58F70035"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000C3" name="isOrdered" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rfW8yBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000C3">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbUhTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000C4" name="isUnique" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rfW8zRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000C4">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GdXbUxTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000C5" name="lower" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rfW80hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000C5">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfW81hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfW81RTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_GdXbVBTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D416D57F000CD" name="upper" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rfW82RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D57F000CD">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfW83RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rfW83BTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GdXbVRTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B0" name="lowerBound" isQuery="true" bodyCondition="_rfEB2BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B0">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfEB2BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B0">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB2RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lower->notEmpty() then lower else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfEB1xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B1" name="upperBound" isQuery="true" bodyCondition="_rfEB4RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B1">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfEB4RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB4hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upper->notEmpty() then upper else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfEB4BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B2" name="isMultivalued" isQuery="true" precondition="_rfEB6hTaEdqZu-3Jy1-uYg" bodyCondition="_rfEB7BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B2">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfEB6hTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D416D580600B2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB6xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfEB7BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfEB7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfEB6RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B3" name="includesCardinality" isQuery="true" precondition="_rfNy1BTaEdqZu-3Jy1-uYg" bodyCondition="_rfNy1hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfEB8RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B3">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfNy1BTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D416D580600B3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy1RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfNy1hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy1xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfNy0hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D416D580600B4" name="C" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D416D580600B5" name="includesMultiplicity" isQuery="true" precondition="_rfNy4BTaEdqZu-3Jy1-uYg" bodyCondition="_rfNy4hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rfNy2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D580600B5">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rfNy4BTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D416D580600B5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy4RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rfNy4hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D416D580600B5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rfNy4xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rfNy3hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D416D580600B6" name="M" type="_3ADC7B74022D416D57E502DA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D416D58F70035" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rfW84BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416D58F70035">
+ <body>An element is a constituent of a model.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D41937577010A" name="ownedComment" type="_3ADC7B74022D3DFCA934027A" aggregation="composite" association="_3ADC7B74022D4193757202CF">
+ <ownedComment xmi:id="_rgQUrhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41937577010A">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUshTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUsRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFCA934027A" name="Comment">
+ <ownedComment xmi:id="_rfgtwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCA934027A">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41781B9F03B5" general="_3ADC7B74022D416D58F70035"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D417820CB0110" name="body" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rfgtyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D417820CB0110">
+ <body>Specifies a string that is the comment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nL7o0WgVEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nL7o0GgVEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41781BB50371" name="annotatedElement" type="_3ADC7B74022D416D58F70035" association="_3ADC7B74022D41781BB50063">
+ <ownedComment xmi:id="_rgQUphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41781BB50371">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUqhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUqRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AD7A004B" name="A_raisedException_operation" memberEnd="_3ADC7B74022D3DE6AD7B00F6 _3ADC7B74022D3DE6AD7B011E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AD7B011E" type="_3ADC7B74022D3DE6AB440191" association="_3ADC7B74022D3DE6AD7A004B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_a11CoVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a11CoFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AC9F015E" name="A_ownedAttribute_class" memberEnd="_3ADC7B74022D3DE6ACA0001F _3ADC7B74022D3DE6ACA00029"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6ACFF0224" name="A_opposite_property" memberEnd="_3ADC7B74022D3DE6AD01030E _3ADC7B74022D3DE6AD010322">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AD010322" type="_3ADC7B74022D3DE6AB4B0001" association="_3ADC7B74022D3DE6ACFF0224">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6q1gVonEduDzLNvRu8ZxQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6q1gFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AD8E03A7" name="A_ownedParameter_operation" memberEnd="_3ADC7B74022D3DE6AD8F022B _3ADC7B74022D3DE6AD8F023F"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6ADE20180" name="A_ownedOperation_class" memberEnd="_3ADC7B74022D3DE6ADE30041 _3ADC7B74022D3DE6ADE30056"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AE3B0279" name="A_superClass_class" memberEnd="_3ADC7B74022D3DE6AE3D013B _3ADC7B74022D3DE6AE3D0145">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AE3D0145" type="_3ADC7B74022D3DE6AB400163" association="_3ADC7B74022D3DE6AE3B0279">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZvV7sVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZvV7sFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AA7C00C1" name="A_type_typedElement" memberEnd="_3ADC7B74022D3DE6AA7C03B0 _3ADC7B74022D3DE6AA7C03B2">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6AA7C03B2" type="_3ADC7B74022D3DE6AA3D016B" association="_3ADC7B74022D3DE6AA7C00C1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QwwQEVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QwwQEFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AF070037" name="A_ownedLiteral_enumeration" memberEnd="_3ADC7B74022D3DE6AF0702A4 _3ADC7B74022D3DE6AF0702A6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6AFB5015A" name="A_nestedPackage_nestingPackage" memberEnd="_3ADC7B74022D3DE6AFB7015D _3ADC7B74022D3DE6AFB70171"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6B0040154" name="A_ownedType_package" memberEnd="_3ADC7B74022D3DE6B0040384 _3ADC7B74022D3DE6B0040398"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41781BB50063" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D41781BB50371 _3ADC7B74022D41781BB5037B">
+ <ownedEnd xmi:id="_3ADC7B74022D41781BB5037B" type="_3ADC7B74022D3DFCA934027A" association="_3ADC7B74022D41781BB50063">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QEgOEVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QEgOEFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4193757202CF" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D41937577010A _3ADC7B74022D419375770114">
+ <ownedEnd xmi:id="_3ADC7B74022D419375770114" name="owningElement" type="_3ADC7B74022D416D58F70035" association="_3ADC7B74022D4193757202CF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rgQUtRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rgQUtBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DE692AD00C7" name="Constructs">
+ <packageImport xmi:id="_3ADC7B74022D41C2C20602EA" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C8630317" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rg2xkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C8630317">
+ <body>A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7oBTaEdqZu-3Jy1-uYg" name="no_cycles_in_generalization" constrainedElement="_3ADC7B74022D3DE6C8630317">
+ <ownedComment xmi:id="_rg_7nBTaEdqZu-3Jy1-uYg" annotatedElement="_rg_7oBTaEdqZu-3Jy1-uYg">
+ <body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7oRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhJsgxTaEdqZu-3Jy1-uYg" name="specialize_type" constrainedElement="_3ADC7B74022D3DE6C8630317">
+ <ownedComment xmi:id="_rg_7pRTaEdqZu-3Jy1-uYg" annotatedElement="_rhJsgxTaEdqZu-3Jy1-uYg">
+ <body>A classifier may only specialize classifiers of a valid type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJshBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.parents()->forAll(c | self.maySpecializeType(c))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6C8A403CF" general="_3ADC7B74022D3DE6C03E0388"/>
+ <generalization xmi:id="_3ADC7B74022D3E55541701A4" general="_3ADC7B74022D3E555229003B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E42E034A" name="attribute" type="_3ADC7B74022D3DE6D57500AC" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCBE7F0246" association="_3ADC7B74022D3DE6E42D0385">
+ <ownedComment xmi:id="_rp8cNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E42E034A">
+ <body>Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqFmExTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqFmEhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBE7F0246" name="feature" type="_3ADC7B74022D3DE6C7BD0034" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D3DFCBE7F0137">
+ <ownedComment xmi:id="_rsLQzxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBE7F0246">
+ <body>Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsLQ0xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsLQ0hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0270BE0395" name="general" type="_3ADC7B74022D3DE6C8630317" association="_3ADC7B74022D3E0270BC02FC">
+ <ownedComment xmi:id="_rseLxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0270BE0395">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rseLyxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rseLyhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4304A13201D9" name="inheritedMember" type="_3ADC7B74022D3DE6BC6B01BD" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D4304A1300282">
+ <ownedComment xmi:id="_hBVxYBVsEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D4304A13201D9">
+ <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rtEoqRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rtEoqBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E555A26019A" name="conformsTo" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C010B" bodyCondition="_rg2xnBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg2xlxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555A26019A">
+ <body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg2xnBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E555A26019A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg2xnRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self=other) or (self.allParents()->includes(other))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg2xmhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E555A8001D6" name="other" type="_3ADC7B74022D3DE6C8630317"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00B1" name="allFeatures" isQuery="true" bodyCondition="_rg_7gxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg2xoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00B1">
+ <body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7gxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7hBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(oclIsKindOf(Feature))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg_7ghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C7BD0034" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd0HQRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd0HQBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00D9" name="general" isQuery="true" bodyCondition="_rg_7jhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg_7iBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00D9">
+ <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7jhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00D9 _3ADC7B74022D3E0270BE0395">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7jxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg_7ixTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd0HQxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd0HQhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00DB" name="parents" isQuery="true" bodyCondition="_rg_7lxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rg_7kxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00DB">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rg_7lxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00DB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rg_7mBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = generalization.general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rg_7lhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd0HRRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd0HRBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00F1" name="inheritedMember" isQuery="true" bodyCondition="_rhJsjhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJsiBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00F1">
+ <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhJsjhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00F1 _3ADC7B74022D4304A13201D9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsjxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhJsixTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RMRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RMBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00F5" name="allParents" isQuery="true" bodyCondition="_rhJslxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJskxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00F5">
+ <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhJslxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00F5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsmBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.parents()->union(self.parents()->collect(p | p.allParents())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhJslhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RMxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RMhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00F7" name="inheritableMembers" isQuery="true" precondition="_rhJsoBTaEdqZu-3Jy1-uYg" bodyCondition="_rhJsohTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJsnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00F7">
+ <body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhJsoBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D42EE305C00F7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsoRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhJsohTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00F7">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhJsoxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select(m | c.hasVisibilityOf(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhJsnxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RNRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RNBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ZmupgB76EdqelquzpYSE-w" name="c" type="_3ADC7B74022D3DE6C8630317" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00FA" name="hasVisibilityOf" isQuery="true" precondition="_rhTdhBTaEdqZu-3Jy1-uYg" bodyCondition="_rhTdhhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhJspxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00FA">
+ <body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhTdhBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D42EE305C00FA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.allParents()->collect(c | c.member)->includes(n)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhTdhhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00FA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdhxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if (self.inheritedMember->includes(n)) then (n.visibility &lt;> #private) else true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhTdghTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE60AC013F" name="n" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0100" name="inherit" isQuery="true" bodyCondition="_rhTdkBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhTdixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0100">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhTdkBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0100">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdkRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhTdjhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gd9RNxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Gd9RNhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE62220395" name="inhs" type="_3ADC7B74022D3DE6BC6B01BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeHCMRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeHCMBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0108" name="maySpecializeType" isQuery="true" bodyCondition="_rhTdmhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhTdlRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0108">
+ <body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhTdmhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0108">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhTdmxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.oclIsKindOf(c.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhTdmBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE625E00B7" name="c" type="_3ADC7B74022D3DE6C8630317"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C82E03E4" name="DirectedRelationship" isAbstract="true">
+ <ownedComment xmi:id="_rhTdnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C82E03E4">
+ <body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6D02402A4" general="_3ADC7B74022D3DE6C8270177"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCAC7900D9" name="source" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCAC2F019B" association="_3ADC7B74022D3DFCAC780308">
+ <ownedComment xmi:id="_rr4V5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCAC7900D9">
+ <body>Specifies the sources of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsBfwRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsBfwBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCACAF0090" name="target" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCAC2F019B" association="_3ADC7B74022D3DFCACAE01F7">
+ <ownedComment xmi:id="_rsBfxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCACAF0090">
+ <body>Specifies the targets of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsBfyxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsBfyhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6BAB70076" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_rhcncBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6BAB70076">
+ <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhcneBTaEdqZu-3Jy1-uYg" name="not_own_self" constrainedElement="_3ADC7B74022D3DE6BAB70076">
+ <ownedComment xmi:id="_rhcndBTaEdqZu-3Jy1-uYg" annotatedElement="_rhcneBTaEdqZu-3Jy1-uYg">
+ <body>An element may not directly or indirectly own itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhcneRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allOwnedElements()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rhcngRTaEdqZu-3Jy1-uYg" name="has_owner" constrainedElement="_3ADC7B74022D3DE6BAB70076">
+ <ownedComment xmi:id="_rhcnfRTaEdqZu-3Jy1-uYg" annotatedElement="_rhcngRTaEdqZu-3Jy1-uYg">
+ <body>Elements that must be owned must have an owner.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhcnghTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.mustBeOwned() implies owner->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCA80700B4" name="ownedElement" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="_3ADC7B74022D3DFCA805021A">
+ <ownedComment xmi:id="_rruk2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCA80700B4">
+ <body>The Elements owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rruk3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rruk3RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCA80700BE" name="owner" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCA805021A">
+ <ownedComment xmi:id="_rruk4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCA80700BE">
+ <body>The Element that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rruk5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rruk5RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41781AB80146" name="ownedComment" type="_3ADC7B74022D41781AA6038F" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D41781AB701BD">
+ <ownedComment xmi:id="_rs63rBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41781AB80146">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63sBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63rxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C006A" name="allOwnedElements" isQuery="true" bodyCondition="_rhmYcxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhcnhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C006A">
+ <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhmYcxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C006A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhmYdBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhmYchTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BAB70076" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeHCMxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeHCMhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0073" name="mustBeOwned" isQuery="true" bodyCondition="_rhmYfBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rhmYeBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0073">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhmYfBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0073">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhmYfRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rhmYexTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C7BD0034" name="Feature" isAbstract="true">
+ <ownedComment xmi:id="_rhmYgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C7BD0034">
+ <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6CEB001C2" general="_3ADC7B74022D3DE6C81D0244"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBE7F025A" name="featuringClassifier" type="_3ADC7B74022D3DE6C8630317" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCBE7F0137">
+ <ownedComment xmi:id="_rsLQ1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBE7F025A">
+ <body>The Classifiers that have this Feature as a feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsVBwxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsVBwhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C66D02F8" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_rhmYhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C66D02F8">
+ <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rhmYjxTaEdqZu-3Jy1-uYg" name="upper_gt_0" constrainedElement="_3ADC7B74022D3DE6C66D02F8">
+ <ownedComment xmi:id="_rhmYixTaEdqZu-3Jy1-uYg" annotatedElement="_rhmYjxTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rhmYkBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlBf4xTaEdqZu-3Jy1-uYg" name="upper_ge_lower" constrainedElement="_3ADC7B74022D3DE6C66D02F8">
+ <ownedComment xmi:id="_rhviYRTaEdqZu-3Jy1-uYg" annotatedElement="_rlBf4xTaEdqZu-3Jy1-uYg">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlBf5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlLQ7hTaEdqZu-3Jy1-uYg" name="lower_ge_0" constrainedElement="_3ADC7B74022D3DE6C66D02F8">
+ <ownedComment xmi:id="_rlLQ6hTaEdqZu-3Jy1-uYg" annotatedElement="_rlLQ7hTaEdqZu-3Jy1-uYg">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlLQ7xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6C6E702B7" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD027D" name="isOrdered" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rleL2BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD027D">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GeHCNBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD0287" name="isUnique" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rleL3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD0287">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GeHCNRTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD0288" name="lower" type="_3ADC7B74022D3CA010A4007B">
+ <ownedComment xmi:id="_rleL4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD0288">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rleL5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rleL5RTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_GeHCNhTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C06EAD0291" name="upper" type="_3ADC7B74022D3DE6A93C0003">
+ <ownedComment xmi:id="_rleL6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EAD0291">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rleL7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rleL7BTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeQMIBTbEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D41C06EDF02B1" name="isMultivalued" isQuery="true" precondition="_rlUa0xTaEdqZu-3Jy1-uYg" bodyCondition="_rlUa1RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlLQ_hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EDF02B1">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa0xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D41C06EDF02B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlUa1RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D41C06EDF02B1">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa0hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D41C06EDF02BB" name="includesMultiplicity" isQuery="true" precondition="_rlUa3xTaEdqZu-3Jy1-uYg" bodyCondition="_rlUa4RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EDF02BB">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa3xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D41C06EDF02BB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa4BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlUa4RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D41C06EDF02BB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa4hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa3RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D41C06EDF02BC" name="M" type="_3ADC7B74022D3DE6C66D02F8"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D41C06EDF02BD" name="includesCardinality" isQuery="true" precondition="_rlUa6xTaEdqZu-3Jy1-uYg" bodyCondition="_rlUa7RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C06EDF02BD">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa6xTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D41C06EDF02BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa7BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rlUa7RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D41C06EDF02BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa7hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa6RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D41C06EDF02BE" name="C" type="_3ADC7B74022D3CA010A4007B"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C6" name="lowerBound" isQuery="true" bodyCondition="_rlUa9hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa8hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C6">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlUa9hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlUa9xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if lower->notEmpty() then lower else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlUa9RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C8" name="upperBound" isQuery="true" bodyCondition="_rleL0xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlUa-xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C8">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rleL0xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C8">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rleL1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if upper->notEmpty() then upper else 1 endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rleL0hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C03E0388" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_rleL8BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C03E0388">
+ <body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlxGzRTaEdqZu-3Jy1-uYg" name="members_distinguishable" constrainedElement="_3ADC7B74022D3DE6C03E0388">
+ <ownedComment xmi:id="_rlxGyRTaEdqZu-3Jy1-uYg" annotatedElement="_rlxGzRTaEdqZu-3Jy1-uYg">
+ <body>All the members of a Namespace are distinguishable within it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlxGzhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>membersAreDistinguishable()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6C04E0326" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE234B0163" name="importedMember" type="_3ADC7B74022D3DE6C1F002C3" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D3DEE234A0342">
+ <ownedComment xmi:id="_rq-99RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE234B0163">
+ <body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq-9-RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq-9-BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E0040315" name="elementImport" type="_3ADC7B74022D3DE6D5E7016E" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DE6E0040076">
+ <ownedComment xmi:id="_rrIu9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E0040315">
+ <body>References the ElementImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIu-xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIu-hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E00902C3" name="packageImport" type="_3ADC7B74022D3DE6D5E002D7" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DE6E00900B0">
+ <ownedComment xmi:id="_rrIvBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E00902C3">
+ <body>References the PackageImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIvCBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIvBxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCB8650177" name="ownedMember" type="_3ADC7B74022D3DE6BC6B01BD" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB82F00DA _3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DFCB86303CD">
+ <ownedComment xmi:id="_rsn8shTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCB8650177">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsn8thTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsn8tRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCB82F00DA" name="member" type="_3ADC7B74022D3DE6BC6B01BD" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCB82E022D">
+ <ownedComment xmi:id="_rsn8wxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCB82F00DA">
+ <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtsxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_s_9I8R-zEdqIE6mxof-rZA" name="ownedRule" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_s_9I8B-zEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s_9I9B-zEdqIE6mxof-rZA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s_9I8x-zEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142ABF004B" name="importedMember" isQuery="true" bodyCondition="_rln82hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln81BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142ABF004B">
+ <body>The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rln82hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142ABF004B _3ADC7B74022D3DEE234B0163">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rln82xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.importMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rln81xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9IRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9IBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142BF301A2" name="getNamesOfMember" isQuery="true" bodyCondition="_rln85BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln83xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142BF301A2">
+ <body>The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rln85BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142BF301A2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rln85RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.ownedMember->includes(element)&#xA;then Set{}->include(element.name)&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xA; if elementImports->notEmpty()&#xA; then elementImports->collect(el | el.getName())&#xA; else self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xA; endif&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rln84hTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9IxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9IhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D41B05E1D014F" name="element" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142CAC03E3" name="importMembers" isQuery="true" bodyCondition="_rln87hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln86RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142CAC03E3">
+ <body>The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rln87hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142CAC03E3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rln87xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rln87BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9JRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9JBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142CD402DC" name="imps" type="_3ADC7B74022D3DE6C1F002C3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9JxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9JhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142D230163" name="excludeCollisions" isQuery="true" bodyCondition="_rlxGxBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rln88xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142D230163">
+ <body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlxGxBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142D230163">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlxGxRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlxGwhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GeZ9KRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GeZ9KBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142D460312" name="imps" type="_3ADC7B74022D3DE6C1F002C3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GejuIRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GejuIBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00AF" name="membersAreDistinguishable" isQuery="true" bodyCondition="_rlxG1hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rlxG0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00AF">
+ <body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rlxG1hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00AF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rlxG1xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.member->forAll( memb |&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rlxG1RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C1F002C3" name="PackageableElement" isAbstract="true">
+ <ownedComment xmi:id="_rlxG2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C1F002C3">
+ <body>A packageable element indicates a named element that may be owned directly by a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6C2130328" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C81D0244" name="RedefinableElement" isAbstract="true">
+ <ownedComment xmi:id="_rlxG4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C81D0244">
+ <body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rl63yBTaEdqZu-3Jy1-uYg" name="redefinition_context_valid" constrainedElement="_3ADC7B74022D3DE6C81D0244">
+ <ownedComment xmi:id="_rl63xBTaEdqZu-3Jy1-uYg" annotatedElement="_rl63yBTaEdqZu-3Jy1-uYg">
+ <body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl63yRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rl630RTaEdqZu-3Jy1-uYg" name="redefinition_consistent" constrainedElement="_3ADC7B74022D3DE6C81D0244">
+ <ownedComment xmi:id="_rl63zRTaEdqZu-3Jy1-uYg" annotatedElement="_rl630RTaEdqZu-3Jy1-uYg">
+ <body>A redefining element must be consistent with each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl630hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6CE6B037C" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBDBD028D" name="redefinitionContext" type="_3ADC7B74022D3DE6C8630317" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCBDBD0034">
+ <ownedComment xmi:id="_rsBf0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBDBD028D">
+ <body>References the contexts that this element may be redefined from.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsBf1RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsBf1BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCBE1F00FD" name="redefinedElement" type="_3ADC7B74022D3DE6C81D0244" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCBE1D0317">
+ <ownedComment xmi:id="_rsLQxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCBE1F00FD">
+ <body>The redefinable element that is being redefined by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsLQyRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsLQyBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00D3" name="isConsistentWith" isQuery="true" bodyCondition="_rl632xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rl631hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00D3">
+ <body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rl632xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00D3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl633BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rl632RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE64AA02E3" name="redefinee" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00D6" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_rl635RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rl634BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00D6">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rl635RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00D6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rl635hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.redefinitionContext->exists(c | redefined.redefinitionContext->exists(r | c.allParents()->includes(r)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rl634xTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE64EE00CE" name="redefined" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C8270177" name="Relationship" isAbstract="true">
+ <ownedComment xmi:id="_rmEowRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C8270177">
+ <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6CFE2015E" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCAC2F019B" name="relatedElement" type="_3ADC7B74022D3DE6BAB70076" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_3ADC7B74022D3DFCAC2E0366">
+ <ownedComment xmi:id="_rr4V2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCAC2F019B">
+ <body>Specifies the elements related by the Relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rr4V3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rr4V3RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C7C40188" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rmEoxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C7C40188">
+ <body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6CB390054" general="_3ADC7B74022D3DE6C7BD0034"/>
+ <generalization xmi:id="_3ADC7B74022D3DE6CC05022E" general="_3ADC7B74022D3DE6C3F20254"/>
+ <generalization xmi:id="_3ADC7B74022D3E5613120088" general="_3ADC7B74022D3DE6C66D02F8"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C3F20254" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_rmEozRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C3F20254">
+ <body>A typed element is a kind of named element that represents an element with a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF7855A0232" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6C94D0011" name="type" type="_3ADC7B74022D3E555229003B" association="_3ADC7B74022D3DE6C94B00D6">
+ <ownedComment xmi:id="_rpo6MBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C94D0011">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpo6NBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpo6MxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6C7F30294" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_rmEo0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6C7F30294">
+ <body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E555E8603B8" general="_3ADC7B74022D3DE6C3F20254"/>
+ <generalization xmi:id="_3ADC7B74022D410311770285" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00B9" name="isComputable" isQuery="true" bodyCondition="_rmNysxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmEo2BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00B9">
+ <body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNysxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00B9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNytBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyshTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00BB" name="integerValue" isQuery="true" bodyCondition="_rmNyvBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNyuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00BB">
+ <body>The query integerValue() gives a single Integer value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNyvBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00BB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNyvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyuxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00BD" name="booleanValue" isQuery="true" bodyCondition="_rmNyxRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNywRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00BD">
+ <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNyxRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNyxhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyxBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00BF" name="stringValue" isQuery="true" bodyCondition="_rmNyzhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNyyhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00BF">
+ <body>The query stringValue() gives a single String value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmNyzhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00BF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmNyzxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmNyzRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C2" name="unlimitedValue" isQuery="true" bodyCondition="_rmXjsxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmNy0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C2">
+ <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmXjsxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmXjtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmXjshTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00C4" name="isNull" isQuery="true" bodyCondition="_rmXjvBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmXjuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00C4">
+ <body>The query isNull() returns true when it can be computed that the value is null.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmXjvBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00C4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmXjvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmXjuxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6E15D033A" name="Association">
+ <ownedComment xmi:id="_rmXjwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E15D033A">
+ <body>An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmXjyxTaEdqZu-3Jy1-uYg" name="association_ends" constrainedElement="_3ADC7B74022D3DE6E15D033A">
+ <ownedComment xmi:id="_rmXjxxTaEdqZu-3Jy1-uYg" annotatedElement="_rmXjyxTaEdqZu-3Jy1-uYg">
+ <body>Association ends of associations with more than two ends must be owned by the association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmXjzBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6E1D202E8" general="_3ADC7B74022D3DE6C8630317"/>
+ <generalization xmi:id="_3ADC7B74022D3DE75CA3037C" general="_3ADC7B74022D3DE6C8270177"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E7AB0308" name="isDerived" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rmXj0BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E7AB0308">
+ <body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ges4EBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E409010C" name="ownedEnd" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E3EF0097 _3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E40802BA">
+ <ownedComment xmi:id="_rp8cKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E409010C">
+ <body>The ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp8cLhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rp8cLRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE75D87003B" name="endType" type="_3ADC7B74022D3E555229003B" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3DFCAC2F019B" association="_3ADC7B74022D3DE75D86027E">
+ <ownedComment xmi:id="_rqZIHRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE75D87003B">
+ <body>References the classifiers that are used as types of the ends of the association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqZIIRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqZIIBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E3EF0097" name="memberEnd" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" subsettedProperty="_3ADC7B74022D3DFCB82F00DA" association="_3ADC7B74022D3DE6E3EE01F4">
+ <ownedComment xmi:id="_rrbp4hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E3EF0097">
+ <body>Each end represents participation of instances of the classifier connected to the end in links of the association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrbp5hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrbp5RTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F14C010058" name="navigableOwnedEnd" type="_3ADC7B74022D3DE6D57500AC" subsettedProperty="_3ADC7B74022D3DE6E409010C" association="_3ADC7B74022D40F14BFF0313">
+ <ownedComment xmi:id="_rsxtwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F14C010058">
+ <body>The navigable ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtxxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtxhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5AD039B" name="Class">
+ <ownedComment xmi:id="_rmXj1RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5AD039B">
+ <body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6E1B0011C" general="_3ADC7B74022D3DE6C8630317"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E37402AD" name="isAbstract" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rmgtrhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E37402AD">
+ <body>True when a class is abstract.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ge2pEBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2E2028F" name="ownedAttribute" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E42E034A _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E2E1037E">
+ <ownedComment xmi:id="_rpo6OBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E2E2028F">
+ <body>The attributes (i.e. the properties) owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpyrIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpyrIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E30F008B" name="ownedOperation" type="_3ADC7B74022D3DE6D56F031A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E30E0260">
+ <ownedComment xmi:id="_rpyrKxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E30F008B">
+ <body>The operations owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpyrLxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpyrLhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E8DF0225" name="superClass" type="_3ADC7B74022D3DE6D5AD039B" redefinedProperty="_3ADC7B74022D3E0270BE0395" association="_3ADC7B74022D3DE6E8DE0061">
+ <ownedComment xmi:id="_rqZIFRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E8DF0225">
+ <body>This gives the superclasses of a class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqZIGRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqZIGBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1420C102C4" name="inherit" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0100" bodyCondition="_rmgtqRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmgtpBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1420C102C4">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmgtqRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1420C102C4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmgtqhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmgtpxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfAaERTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfAaEBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1420FA004F" name="inhs" type="_3ADC7B74022D3DE6BC6B01BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfAaExTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfAaEhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D57500AC" name="Property">
+ <ownedComment xmi:id="_rmgtsxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D57500AC">
+ <body>A property is a structural feature of a classifier that characterizes instances of the classifier. A property related by ownedAttribute to a classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the class to a value or set of values of the type of the attribute. A property related by memberEnd or its specializations to an association represents an end of the association. The type of the property is the type of the end of the association.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmqepxTaEdqZu-3Jy1-uYg" name="multiplicity_of_composite" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqeoxTaEdqZu-3Jy1-uYg" annotatedElement="_rmqepxTaEdqZu-3Jy1-uYg">
+ <body>A multiplicity of a composite aggregation must not have an upper bound greater than 1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqeqBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rmqesBTaEdqZu-3Jy1-uYg" name="subsetting_context_conforms" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqerBTaEdqZu-3Jy1-uYg" annotatedElement="_rmqesBTaEdqZu-3Jy1-uYg">
+ <body>Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqesRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subsettedProperty->notEmpty() implies&#xA; (self.subsettingContext()->notEmpty() and self.subsettingContext()->forAll (sc |&#xA; self.subsettedProperty->forAll(sp |&#xA; sp.subsettingContext()->exists(c | sc.conformsTo(c)))))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rmqeuRTaEdqZu-3Jy1-uYg" name="redefined_property_inherited" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqetRTaEdqZu-3Jy1-uYg" annotatedElement="_rmqeuRTaEdqZu-3Jy1-uYg">
+ <body>A redefined property must be inherited from a more general classifier containing the redefining property.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqeuhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if (redefinedProperty->notEmpty()) then&#xA; (redefinitionContext->notEmpty() and&#xA; redefinedProperty->forAll(rp|&#xA; ((redefinitionContext->collect(fc|&#xA; fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rmqewhTaEdqZu-3Jy1-uYg" name="subsetting_rules" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqevhTaEdqZu-3Jy1-uYg" annotatedElement="_rmqewhTaEdqZu-3Jy1-uYg">
+ <body>A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmqewxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subsettedProperty->forAll(sp |&#xA; self.type.conformsTo(sp.type) and&#xA; ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xA; self.upperBound()&lt;=sp.upperBound() ))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rm0PoxTaEdqZu-3Jy1-uYg" name="navigable_readonly" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rmqexxTaEdqZu-3Jy1-uYg" annotatedElement="_rm0PoxTaEdqZu-3Jy1-uYg">
+ <body>Only a navigable property can be marked as readOnly.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isReadOnly implies isNavigable()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rm0PrBTaEdqZu-3Jy1-uYg" name="derived_union_is_derived" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_rm0PqBTaEdqZu-3Jy1-uYg" annotatedElement="_rm0PrBTaEdqZu-3Jy1-uYg">
+ <body>A derived union is derived.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isDerivedUnion implies isDerived</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ATEKgGgEEdqfYrlcy8iLFA" name="subsetted_property_names" constrainedElement="_3ADC7B74022D3DE6D57500AC">
+ <ownedComment xmi:id="_H7EdsGgEEdqfYrlcy8iLFA" annotatedElement="_ATEKgGgEEdqfYrlcy8iLFA">
+ <body>A property may not subset a property with the same name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ATEKgWgEEdqfYrlcy8iLFA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6E646016A" general="_3ADC7B74022D3DE6C7C40188"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E9C30088" name="isReadOnly" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm0PzxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E9C30088">
+ <body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfAaFBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4201104A02AF" name="default" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rm9ZlBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4201104A02AF">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rm9ZmBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rm9ZlxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4201106900A1" name="isComposite" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm9ZmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4201106900A1">
+ <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfAaFRTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D420110720361" name="isDerived" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm9ZnxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D420110720361">
+ <body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfJkABTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF85B580203" name="isDerivedUnion" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rm9ZpBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF85B580203">
+ <body>Specifies whether the property is derived as the union of all of the properties that are constrained to subset it.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfJkARTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2E20299" name="class" type="_3ADC7B74022D3DE6D5AD039B" subsettedProperty="_3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A _3ADC7B74022D3DE6E42E035E" association="_3ADC7B74022D3DE6E2E1037E">
+ <ownedComment xmi:id="_vBHVQGd5EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3DE6E2E20299">
+ <body>References the Class that owns the Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpyrJhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpyrJRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E4090120" name="owningAssociation" type="_3ADC7B74022D3DE6E15D033A" subsettedProperty="_3ADC7B74022D3DE6E3EF00AB _3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A" association="_3ADC7B74022D3DE6E40802BA">
+ <ownedComment xmi:id="_rp8cMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E4090120">
+ <body>References the owning association of this property, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp8cNBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rp8cMxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E711018A" name="redefinedProperty" type="_3ADC7B74022D3DE6D57500AC" subsettedProperty="_3ADC7B74022D3DFCBE1F00FD" association="_3ADC7B74022D3DE6E70F039A">
+ <ownedComment xmi:id="_rqPXEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E711018A">
+ <body>References the properties that are redefined by this property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqPXFhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqPXFRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E7430363" name="subsettedProperty" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E7410360">
+ <ownedComment xmi:id="_rqPXGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E7430363">
+ <body>References the properties of which this property is constrained to be a subset.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqPXHhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqPXHRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E76603BD" name="opposite" type="_3ADC7B74022D3DE6D57500AC" isDerived="true" association="_3ADC7B74022D3DE6E7650159">
+ <ownedComment xmi:id="_rqPXIhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E76603BD">
+ <body>In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqPXJhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqPXJRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2290166" name="datatype" type="_3ADC7B74022D3DE6D25202A6" subsettedProperty="_3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A _3ADC7B74022D3DE6E42E035E" association="_3ADC7B74022D3DE6E2280287">
+ <ownedComment xmi:id="_rqiSExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E2290166">
+ <body>The DataType that owns this Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSFxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSFhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E3EF00AB" name="association" type="_3ADC7B74022D3DE6E15D033A" association="_3ADC7B74022D3DE6E3EE01F4">
+ <ownedComment xmi:id="_rrbp6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E3EF00AB">
+ <body>References the association of which this property is a member, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrbp7BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrbp6xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14246901E3" name="opposite" isQuery="true" bodyCondition="_rmgtvBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rmgtuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14246901E3">
+ <body>If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rmgtvBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14246901E3 _3ADC7B74022D3DE6E76603BD">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rmgtvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if owningAssociation->isEmpty() and association.memberEnd->size() = 2&#xA; then&#xA; let otherEnd = (association.memberEnd - self)->any() in&#xA; if otherEnd.owningAssociation->isEmpty() then otherEnd else Set{} endif&#xA; else Set {}&#xA; endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rmgtuxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6D57500AC" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1427A80242" name="isConsistentWith" isQuery="true" precondition="_rm0PthTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D42EE305C00D3" bodyCondition="_rm0PuBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rm0PsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1427A80242">
+ <body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property, and the redefining property is derived if the redefined property is derived.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rm0PthTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1427A80242">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PtxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rm0PuBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1427A80242">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PuRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = redefinee.oclIsKindOf(Property) and &#xA; let prop : Property = redefinee.oclAsType(Property) in &#xA; (prop.type.conformsTo(self.type) and &#xA; ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and &#xA; ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and &#xA; (self.isDerived implies prop.isDerived) and&#xA; (self.isComposite implies prop.isComposite))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rm0PtBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1427BE0258" name="redefinee" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1428A50264" name="subsettingContext" isQuery="true" bodyCondition="_rm0PwRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rm0PvRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1428A50264">
+ <body>The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rm0PwRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1428A50264">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PwhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if association->notEmpty()&#xA;then association.endType-type &#xA;else if classifier->notEmpty then Set{classifier} else Set{} endif&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rm0PwBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C8630317" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfdGARTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfdGABTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D430B77C7031C" name="isNavigable" isQuery="true" bodyCondition="_rm0PyhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rm0PxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430B77C7031C">
+ <body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rm0PyhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D430B77C7031C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rm0PyxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = not classifier->isEmpty() or&#xA;association.owningAssociation.navigableOwnedEnd->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rm0PyRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_1PbZwDc2Edqq1tCaRkgBQQ" name="isAttribute" isQuery="true" bodyCondition="_LLHN8Dc3Edqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_BL2vgDc3Edqq1tCaRkgBQQ" annotatedElement="_1PbZwDc2Edqq1tCaRkgBQQ">
+ <body>The query isAttribute() is true if the Property is defined as an attribute of some classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_LLHN8Dc3Edqq1tCaRkgBQQ" name="spec" constrainedElement="_1PbZwDc2Edqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_LLHN8Tc3Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = Classifier->allInstances->exists(c | c.attribute->includes(p))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_61gRcDc2Edqq1tCaRkgBQQ" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_BnHvMDc3Edqq1tCaRkgBQQ" name="p" type="_3ADC7B74022D3DE6D57500AC" effect="read"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D25202A6" name="DataType">
+ <ownedComment xmi:id="_rnHKkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D25202A6">
+ <body>A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE7FF2011D" general="_3ADC7B74022D3DE6C8630317"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E2290152" name="ownedAttribute" type="_3ADC7B74022D3DE6D57500AC" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E42E034A _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E2280287">
+ <ownedComment xmi:id="_rqiSDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E2290152">
+ <body>The Attributes owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSERTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSEBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E23E008A" name="ownedOperation" type="_3ADC7B74022D3DE6D56F031A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E23D0179">
+ <ownedComment xmi:id="_rqiSGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E23E008A">
+ <body>The Operations owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqsDAxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqsDAhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1423CF02D2" name="inherit" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0100" bodyCondition="_rnHKnRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnHKmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1423CF02D2">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnHKnRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1423CF02D2">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnHKnhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnHKmxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6BC6B01BD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfdGAxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfdGAhTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1423F502F5" name="inhs" type="_3ADC7B74022D3DE6BC6B01BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GfdGBRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GfdGBBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D2750152" name="Enumeration">
+ <ownedComment xmi:id="_rnHKohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D2750152">
+ <body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6D2D7038E" general="_3ADC7B74022D3DE6D25202A6"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6D38600DC" name="ownedLiteral" type="_3ADC7B74022D3DE6D2910397" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6D3850275">
+ <ownedComment xmi:id="_rqiSABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D38600DC">
+ <body>The ordered set of literals for this Enumeration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSBBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSAxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D2910397" name="EnumerationLiteral">
+ <ownedComment xmi:id="_rnHKpxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D2910397">
+ <body>An enumeration literal is a user-defined data value for an enumeration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF67B060099" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6D38600E6" name="enumeration" type="_3ADC7B74022D3DE6D2750152" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DE6D3850275">
+ <ownedComment xmi:id="_rqiSBhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D38600E6">
+ <body>The Enumeration that this EnumerationLiteral is a member of.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqiSChTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqiSCRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D2570393" name="PrimitiveType">
+ <ownedComment xmi:id="_rnHKrBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D2570393">
+ <body>A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE6D2C30371" general="_3ADC7B74022D3DE6D25202A6"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE766450007" name="Constraint">
+ <ownedComment xmi:id="_rnQUhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE766450007">
+ <body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnQUjRTaEdqZu-3Jy1-uYg" name="not_apply_to_self" constrainedElement="_3ADC7B74022D3DE766450007">
+ <ownedComment xmi:id="_rnQUiRTaEdqZu-3Jy1-uYg" annotatedElement="_rnQUjRTaEdqZu-3Jy1-uYg">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnQUjhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rnQUlRTaEdqZu-3Jy1-uYg" name="value_specification_boolean" constrainedElement="_3ADC7B74022D3DE766450007">
+ <ownedComment xmi:id="_rnQUkhTaEdqZu-3Jy1-uYg" annotatedElement="_rnQUlRTaEdqZu-3Jy1-uYg">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnQUlhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE76BB00097" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCC85C023D" name="constrainedElement" type="_3ADC7B74022D3DE6BAB70076" isOrdered="true" association="_3ADC7B74022D3DFCC85C000C">
+ <ownedComment xmi:id="_51DioBVsEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DFCC85C023D">
+ <body>The ordered set of Elements referenced by this Constraint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsVB2hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsVB2RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCC88D0337" name="specification" type="_3ADC7B74022D3DE6C7F30294" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DFCC88D0157">
+ <ownedComment xmi:id="_rseLsxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCC88D0337">
+ <body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rseLtxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rseLthTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_s_9I8h-zEdqIE6mxof-rZA" name="context" type="_3ADC7B74022D3DE6C03E0388" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_s_9I8B-zEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zja18R-zEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zja18B-zEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D62D0024" name="OpaqueExpression">
+ <ownedComment xmi:id="_rnQUmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D62D0024">
+ <body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <ownedRule xmi:id="__NpH0DdhEdqq1tCaRkgBQQ" name="language_body_size" constrainedElement="_3ADC7B74022D3DE6D62D0024">
+ <ownedComment xmi:id="_ZctcwDdiEdqq1tCaRkgBQQ" annotatedElement="__NpH0DdhEdqq1tCaRkgBQQ">
+ <body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="__NpH0TdhEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>language->notEmpty() implies (body->size() = language->size())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6D7A30004" general="_3ADC7B74022D3DE6C7F30294"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41FC52E503B5" name="body" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rs63thTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41FC52E503B5">
+ <body>The text of the expression, possibly in multiple languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63uhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63uRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41FC52EF0215" name="language" type="_3ADC7B74022D3CA010B103C3" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_rtEooBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41FC52EF0215">
+ <body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rtEopBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rtEooxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D56F031A" name="Operation">
+ <ownedComment xmi:id="_rnaFgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D56F031A">
+ <body>An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rntAexTaEdqZu-3Jy1-uYg" name="only_body_for_query" constrainedElement="_3ADC7B74022D3DE6D56F031A">
+ <ownedComment xmi:id="_rntAdxTaEdqZu-3Jy1-uYg" annotatedElement="_rntAexTaEdqZu-3Jy1-uYg">
+ <body>A bodyCondition can only be specified for a query operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAfBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>bodyCondition->notEmpty() implies isQuery</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rntAkBTaEdqZu-3Jy1-uYg" name="at_most_one_return" constrainedElement="_3ADC7B74022D3DE6D56F031A">
+ <ownedComment xmi:id="_rntAjBTaEdqZu-3Jy1-uYg" annotatedElement="_rntAkBTaEdqZu-3Jy1-uYg">
+ <body>An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAkRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE763490012" general="_3ADC7B74022D3DE7632A0090"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF85B94039A" name="isQuery" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_rntAlRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF85B94039A">
+ <body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GfmP8BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E03284C0289" name="isOrdered" type="_3ADC7B74022D3CA010AC0090" isDerived="true">
+ <ownedComment xmi:id="_rn2xdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E03284C0289">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_SxMa0CkbEdqPP7hCKvQ4ww"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E032859015B" name="isUnique" type="_3ADC7B74022D3CA010AC0090" isDerived="true">
+ <ownedComment xmi:id="_rn2xehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E032859015B">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_bulzoCkbEdqPP7hCKvQ4ww" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0328B001D9" name="lower" type="_3ADC7B74022D3CA010A4007B" isDerived="true">
+ <ownedComment xmi:id="_rn2xgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0328B001D9">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rn2xhBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rn2xgxTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_IQd8ICkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0328710341" name="upper" type="_3ADC7B74022D3DE6A93C0003" isDerived="true">
+ <ownedComment xmi:id="_roAicxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0328710341">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_roAidxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_roAidhTaEdqZu-3Jy1-uYg"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JYIu0CkdEdqPP7hCKvQ4ww" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E30F0095" name="class" type="_3ADC7B74022D3DE6D5AD039B" subsettedProperty="_3ADC7B74022D3DFCBDBD028D _3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A" association="_3ADC7B74022D3DE6E30E0260">
+ <ownedComment xmi:id="_rp8cIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E30F0095">
+ <body>The class that owns the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rp8cJRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rp8cJBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E23E0094" name="datatype" type="_3ADC7B74022D3DE6D25202A6" subsettedProperty="_3ADC7B74022D3DFCBDBD028D _3ADC7B74022D3DFCB86501A0 _3ADC7B74022D3DFCBE7F025A" association="_3ADC7B74022D3DE6E23D0179">
+ <ownedComment xmi:id="_rqsDBRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E23E0094">
+ <body>The DataType that owns this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqsDCRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqsDCBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE7654A0345" name="raisedException" type="_3ADC7B74022D3E555229003B" redefinedProperty="_3ADC7B74022D3DE76511013A" association="_3ADC7B74022D3DE7654A013C">
+ <ownedComment xmi:id="_rqsDDBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7654A0345">
+ <body>References the Types representing exceptions that may be raised during an invocation of this operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqsDEBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqsDDxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE767BD001B" name="redefinedOperation" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_3ADC7B74022D3DFCBE1F00FD" association="_3ADC7B74022D3DE767BB0358">
+ <ownedComment xmi:id="_rq10CRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE767BD001B">
+ <body>References the Operations that are redefined by this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq10DRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq10DBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE7BDA017A" name="type" type="_3ADC7B74022D3E555229003B" isDerived="true" association="_3ADC7B74022D3DEE7BD90219">
+ <ownedComment xmi:id="_rrla5hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE7BDA017A">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla6hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla6RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4161AA270132" name="ownedParameter" type="_3ADC7B74022D3DE6D57D00A3" isOrdered="true" aggregation="composite" redefinedProperty="_3ADC7B74022D3DE7637803DB" association="_3ADC7B74022D4161AA250298">
+ <ownedComment xmi:id="_rsxtyxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161AA270132">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63oxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63ohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_nWbKER-yEdqIE6mxof-rZA" name="precondition" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_s_9I8R-zEdqIE6mxof-rZA" association="_nWbKEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nWbKFB-yEdqIE6mxof-rZA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nWbKEx-yEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_s0ANER-yEdqIE6mxof-rZA" name="postcondition" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_s_9I8R-zEdqIE6mxof-rZA" association="_s0ANEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0ANFB-yEdqIE6mxof-rZA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0ANEx-yEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_uPMYsR-yEdqIE6mxof-rZA" name="bodyCondition" type="_3ADC7B74022D3DE766450007" aggregation="composite" subsettedProperty="_s_9I8R-zEdqIE6mxof-rZA" association="_uPMYsB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uPMYtB-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uPMYsx-yEdqIE6mxof-rZA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142EC50359" name="isOrdered" isQuery="true" bodyCondition="_rnaFihTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnaFhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142EC50359">
+ <body>If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnaFihTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142EC50359 _3ADC7B74022D3E03284C0289">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnaFixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().isOrdered else false endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnaFiRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142F090090" name="isUnique" isQuery="true" bodyCondition="_rnaFkxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnaFjxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142F090090">
+ <body>If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnaFkxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142F090090 _3ADC7B74022D3E032859015B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnaFlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().isUnique else true endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnaFkhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142F3E03CB" name="lower" isQuery="true" bodyCondition="_rnj2hhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnj2gBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142F3E03CB">
+ <body>If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnj2hhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142F3E03CB _3ADC7B74022D3E0328B001D9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnj2hxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().lower else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnj2gxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142F7500B3" name="upper" isQuery="true" bodyCondition="_rnj2kRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnj2ixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142F7500B3">
+ <body>If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rnj2kRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142F7500B3 _3ADC7B74022D3E0328710341">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rnj2khTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().upper else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnj2jhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6A93C0003" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142FBB01EA" name="type" isQuery="true" bodyCondition="_rntAchTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rnj2lhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142FBB01EA">
+ <body>If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rntAchTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142FBB01EA _3ADC7B74022D3DEE7BDA017A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAcxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if returnResult->size() = 1 then returnResult->any().type else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rnj2mRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3E555229003B" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E143033011B" name="isConsistentWith" isQuery="true" precondition="_rntAhRTaEdqZu-3Jy1-uYg" redefinedOperation="_3ADC7B74022D42EE305C00D3" bodyCondition="_rntAhxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rntAgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E143033011B">
+ <body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rntAhRTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E143033011B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAhhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rntAhxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E143033011B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rntAiBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (redefinee.oclIsKindOf(Operation) and&#xA; let op: Operation = redefinee.oclAsType(Operation) in&#xA; self.formalParameter.size() = op.formalParameter.size() and&#xA; self.returnResult.size() = op.returnResult.size() and&#xA; forAll(i | op.formalParameter[i].type.conformsTo(self.formalParameter[i].type)) and&#xA; forAll(i | op.returnResult[i].type.conformsTo(self.returnResult[i].type))&#xA;)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rntAgxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E14304B03AA" name="redefinee" type="_3ADC7B74022D3DE6C81D0244"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ipBfsB8WEdqZ_KzuBfefCA" name="returnResult" isQuery="true" bodyCondition="__KtXgB8WEdqZ_KzuBfefCA">
+ <ownedRule xmi:id="__KtXgB8WEdqZ_KzuBfefCA" name="spec" constrainedElement="_ipBfsB8WEdqZ_KzuBfefCA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="__KtXgR8WEdqZ_KzuBfefCA">
+ <language>OCL</language>
+ <body>result = ownedParameter->select (par | par.direction = #return)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_q_YGoB8WEdqZ_KzuBfefCA" type="_3ADC7B74022D3DE6D57D00A3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wVqO0B8WEdqZ_KzuBfefCA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vYQycB8WEdqZ_KzuBfefCA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D57D00A3" name="Parameter">
+ <ownedComment xmi:id="_roAiexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D57D00A3">
+ <body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE1EF703C3" general="_3ADC7B74022D3DE6C3F20254"/>
+ <generalization xmi:id="_3ADC7B74022D3E56142D01A7" general="_3ADC7B74022D3DE6C66D02F8"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE7647D021E" name="default" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_roAigRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7647D021E">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_roAihRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_roAihBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4161A8A60091" name="direction" type="_3ADC7B74022D4161A8F100CC">
+ <ownedComment xmi:id="_roAihxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A8A60091">
+ <body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_roAiihTaEdqZu-3Jy1-uYg" instance="_3ADC7B74022D4161A93C01BC"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4161AA27013C" name="operation" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D4161AA250298">
+ <ownedComment xmi:id="_rs63pRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161AA27013C">
+ <body>References the Operation owning this parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63qRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63qBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE7632A0090" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_roTdYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7632A0090">
+ <body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE20740031" general="_3ADC7B74022D3DE6C7BD0034"/>
+ <generalization xmi:id="_3ADC7B74022D3DEE21650100" general="_3ADC7B74022D3DE6C03E0388"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE7637803DB" name="ownedParameter" type="_3ADC7B74022D3DE6D57D00A3" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE76378015A">
+ <ownedComment xmi:id="_rq10ERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE7637803DB">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq10FRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq10FBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE76511013A" name="raisedException" type="_3ADC7B74022D3E555229003B" association="_3ADC7B74022D3DE7651002AB">
+ <ownedComment xmi:id="_rq10GxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE76511013A">
+ <body>References the Types representing exceptions that may be raised during an invocation of this feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq-98RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq-98BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E142E0F01A9" name="isDistinguishableFrom" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0081" bodyCondition="_roTdbRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_roTdZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E142E0F01A9">
+ <body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_roTdbRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E142E0F01A9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_roTdbhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if n.oclIsKindOf(BehavioralFeature)&#xA;then&#xA; if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()&#xA; then Set{}->include(self)->include(n)->isUnique( bf | bf.parameter->collect(type))&#xA; else true&#xA; endif&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_roTdahTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142E3102A2" name="n" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E142E43008B" name="ns" type="_3ADC7B74022D3DE6C03E0388"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5E7016E" name="ElementImport">
+ <ownedComment xmi:id="_roTdchTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5E7016E">
+ <body>An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rodOYxTaEdqZu-3Jy1-uYg" name="visibility_public_or_private" constrainedElement="_3ADC7B74022D3DE6D5E7016E">
+ <ownedComment xmi:id="_roTddxTaEdqZu-3Jy1-uYg" annotatedElement="_rodOYxTaEdqZu-3Jy1-uYg">
+ <body>The visibility of an ElementImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rodOZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rodObBTaEdqZu-3Jy1-uYg" name="imported_element_is_public" constrainedElement="_3ADC7B74022D3DE6D5E7016E">
+ <ownedComment xmi:id="_rodOaBTaEdqZu-3Jy1-uYg" annotatedElement="_rodObBTaEdqZu-3Jy1-uYg">
+ <body>An importedElement has either public visibility or no visibility at all.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rodObRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6DFF400E2" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE87110345" name="visibility" type="_3ADC7B74022D41C2D6020188">
+ <ownedComment xmi:id="_rodOehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE87110345">
+ <body>Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_1VPa8GgXEdqfYrlcy8iLFA" type="_3ADC7B74022D41C2D6020188" instance="_3ADC7B74022D41C2D6140206"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE875F0333" name="alias" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rodOfhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE875F0333">
+ <body>Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rodOghTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rodOgRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6DF6803A7" name="importedElement" type="_3ADC7B74022D3DE6C1F002C3" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3DE6DF68013A">
+ <ownedComment xmi:id="_rq--BxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6DF6803A7">
+ <body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIu8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIu8hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E0040317" name="importingNamespace" type="_3ADC7B74022D3DE6C03E0388" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DE6E0040076">
+ <ownedComment xmi:id="_rrIu_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E0040317">
+ <body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrIvARTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrIvABTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1429E403A3" name="getName" isQuery="true" bodyCondition="_rodOdRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rodOcRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1429E403A3">
+ <body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rodOdRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1429E403A3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rodOdhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.alias->notEmpty() then &#xA; self.alias&#xA;else&#xA; self.importedElement.name&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rodOdBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5DA0183" name="Package">
+ <ownedComment xmi:id="_rodOhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5DA0183">
+ <body>A package is used to group elements, and provides a namespace for the grouped elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_romYWRTaEdqZu-3Jy1-uYg" name="elements_public_or_private" constrainedElement="_3ADC7B74022D3DE6D5DA0183">
+ <ownedComment xmi:id="_romYVRTaEdqZu-3Jy1-uYg" annotatedElement="_romYWRTaEdqZu-3Jy1-uYg">
+ <body>If an element that is owned by a package has visibility, it is public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_romYWhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6DDF7023E" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <generalization xmi:id="_3ADC7B74022D3DE6DFA30185" general="_3ADC7B74022D3DE6C03E0388"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E0F500FF" name="packagedElement" type="_3ADC7B74022D3DE6C1F002C3" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCB8650177" association="_3ADC7B74022D3DE6E0F402CA">
+ <ownedComment xmi:id="_rrR45hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E0F500FF">
+ <body>Specifies the packageable elements that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR46hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR46RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE344701CC" name="ownedType" type="_3ADC7B74022D3E555229003B" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0F500FF" association="_3ADC7B74022D3DEE344602C4">
+ <ownedComment xmi:id="_rrR48BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE344701CC">
+ <body>References the packaged elements that are Types.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR49BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR48xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE6FD3029F" name="nestedPackage" type="_3ADC7B74022D3DE6D5DA0183" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0F500FF" association="_3ADC7B74022D3DEE6FD102CF">
+ <ownedComment xmi:id="_rrbp7xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE6FD3029F">
+ <body>References the packaged elements that are Packages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrbp8xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrbp8hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE6FD302F9" name="nestingPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DEE6FD102CF">
+ <ownedComment xmi:id="_rrbp9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE6FD302F9">
+ <body>References the Package that owns this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF68066000E" name="packageMerge" type="_3ADC7B74022D3DEE8DFE0290" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3DF68066000C">
+ <ownedComment xmi:id="_rrla9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF68066000E">
+ <body>References the PackageMerges that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla-hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla-RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D3E14315003AF" name="mustBeOwned" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C0073" bodyCondition="_romYYhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_romYXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E14315003AF">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_romYYhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E14315003AF">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_romYYxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_romYYRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E143175007D" name="visibleMembers" isQuery="true" bodyCondition="_romYaxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_romYZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E143175007D">
+ <body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_romYaxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E143175007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_romYbBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = member->select( m | self.makesVisible(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_romYahTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C1F002C3" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GgMs4RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GgMs4BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D3E1431A90385" name="makesVisible" isQuery="true" precondition="_rowJVBTaEdqZu-3Jy1-uYg" bodyCondition="_rowJVhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_romYcBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E1431A90385">
+ <body>The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rowJVBTaEdqZu-3Jy1-uYg" constrainedElement="_3ADC7B74022D3E1431A90385">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rowJVRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.member->includes(el)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rowJVhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D3E1431A90385">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rowJVxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (ownedMember->includes(el)) or&#xA; (elementImport->&#xA; select(ei|ei.visibility = #public)->&#xA; collect(ei|ei.importedElement)->includes(el)) or&#xA; (packageImport->&#xA; select(pi|pi.visibility = #public)->&#xA; collect(pi|&#xA; pi.importedPackage.member->includes(el))->notEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rowJUhTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D3E1431D80292" name="el" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6D5E002D7" name="PackageImport">
+ <ownedComment xmi:id="_rowJWxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6D5E002D7">
+ <body>A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rowJZBTaEdqZu-3Jy1-uYg" name="public_or_private" constrainedElement="_3ADC7B74022D3DE6D5E002D7">
+ <ownedComment xmi:id="_rowJYBTaEdqZu-3Jy1-uYg" annotatedElement="_rowJZBTaEdqZu-3Jy1-uYg">
+ <body>The visibility of a PackageImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rowJZRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6DFFC022E" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE878403C3" name="visibility" type="_3ADC7B74022D41C2D6020188">
+ <ownedComment xmi:id="_rowJaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE878403C3">
+ <body>Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_CTYsYGgYEdqfYrlcy8iLFA" type="_3ADC7B74022D41C2D6020188" instance="_3ADC7B74022D41C2D6140206"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6DEFF023E" name="importedPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3DE6DEFE0106">
+ <ownedComment xmi:id="_rq-9_xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6DEFF023E">
+ <body>Specifies the Package whose members are imported into a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq--AxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq--AhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6E00902D7" name="importingNamespace" type="_3ADC7B74022D3DE6C03E0388" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DE6E00900B0">
+ <ownedComment xmi:id="_rrIvChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6E00902D7">
+ <body>Specifies the Namespace that imports the members from a Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR44xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR44hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DEE8DFE0290" name="PackageMerge">
+ <ownedComment xmi:id="_rowJbRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE8DFE0290">
+ <body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DEE8EAA032E" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF68066000D" name="receivingPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DF68066000C">
+ <ownedComment xmi:id="_rrla8BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF68066000D">
+ <body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrla9BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrla8xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF6806A03A2" name="mergedPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3DF6806A03A1">
+ <ownedComment xmi:id="_rruk0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF6806A03A2">
+ <body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rruk1hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rruk1RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E555229003B" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_ro5TQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555229003B">
+ <body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E5553B3007E" general="_3ADC7B74022D3DE6BC6B01BD"/>
+ <generalization xmi:id="_3ADC7B74022D3E5558D50178" general="_3ADC7B74022D3DE6C1F002C3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE344701FE" name="package" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DEE344602C4">
+ <ownedComment xmi:id="_rrR4-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE344701FE">
+ <body>Specifies the owning package of this classifier, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR4_BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR4-xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C010B" name="conformsTo" isQuery="true" bodyCondition="_ro5TTBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_ro5TRxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C010B">
+ <body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ro5TTBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C010B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ro5TTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ro5TShTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE66DC039F" name="other" type="_3ADC7B74022D3E555229003B"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE6BC6B01BD" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_ro5TURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ro5TWhTaEdqZu-3Jy1-uYg" name="has_no_qualified_name" constrainedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <ownedComment xmi:id="_ro5TVhTaEdqZu-3Jy1-uYg" annotatedElement="_ro5TWhTaEdqZu-3Jy1-uYg">
+ <body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ro5TWxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rpDEQxTaEdqZu-3Jy1-uYg" name="has_qualified_name" constrainedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <ownedComment xmi:id="_ro5TXxTaEdqZu-3Jy1-uYg" annotatedElement="_rpDEQxTaEdqZu-3Jy1-uYg">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDERBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA; self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rpM1RxTaEdqZu-3Jy1-uYg" name="visibility_needs_ownership" constrainedElement="_3ADC7B74022D3DE6BC6B01BD">
+ <ownedComment xmi:id="_rpM1QxTaEdqZu-3Jy1-uYg" annotatedElement="_rpM1RxTaEdqZu-3Jy1-uYg">
+ <body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpM1SBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>namespace->isEmpty() implies visibility->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE6BC7D03AE" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE6BF540255" name="name" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rpM1TBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE6BF540255">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpM1UBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpM1TxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41C2D63E00EE" name="visibility" type="_3ADC7B74022D41C2D6020188">
+ <ownedComment xmi:id="_rpM1UhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D63E00EE">
+ <body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rpM1VhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rpM1VRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCB86501A0" name="namespace" type="_3ADC7B74022D3DE6C03E0388" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DFCB86303CD">
+ <ownedComment xmi:id="_rsn8uhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCB86501A0">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsn8vhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsn8vRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7-d1kIa_EdqhgMOAOWpjfQ" name="qualifiedName" type="_3ADC7B74022D3CA010B103C3" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_7-d1k4a_EdqhgMOAOWpjfQ" annotatedElement="_7-d1kIa_EdqhgMOAOWpjfQ">
+ <body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7-d1loa_EdqhgMOAOWpjfQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7-d1l4a_EdqhgMOAOWpjfQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C007F" name="allNamespaces" isQuery="true" bodyCondition="_rpDETBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDESBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C007F">
+ <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDETBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C007F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDETRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDESxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3DE6C03E0388" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GgV20RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GgV20BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C0081" name="isDistinguishableFrom" isQuery="true" bodyCondition="_rpDEVxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDEURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C0081">
+ <body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDEVxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C0081">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDEWBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;else true&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDEVBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE5CF7032F" name="n" type="_3ADC7B74022D3DE6BC6B01BD"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE5CF70330" name="ns" type="_3ADC7B74022D3DE6C03E0388"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00A4" name="separator" isQuery="true" bodyCondition="_rpDEYBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDEXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00A4">
+ <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDEYBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00A4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDEYRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = '::'</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDEXxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00A6" name="qualifiedName" isQuery="true" bodyCondition="_rpDEaRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpDEZRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00A6">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpDEaRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00A6">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpDEahTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpDEaBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CA010B103C3" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E555F19002A" name="Expression">
+ <ownedComment xmi:id="_rpM1WBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E555F19002A">
+ <body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E555F33038E" general="_3ADC7B74022D3DE6C7F30294"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E55630701F3" name="operand" type="_3ADC7B74022D3DE6C7F30294" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3E5563050088">
+ <ownedComment xmi:id="_rsxtuRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E55630701F3">
+ <body>Specifies a sequence of operands.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtvRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtvBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41781AA6038F" name="Comment">
+ <ownedComment xmi:id="_rpfwMxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41781AA6038F">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DFCA9FD02FB" general="_3ADC7B74022D3DE6BAB70076"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDD0260325" name="body" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_rpfwOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDD0260325">
+ <body>Specifies a string that is the comment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8CfA8WgVEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8CfA8GgVEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFCAADC01BB" name="annotatedElement" type="_3ADC7B74022D3DE6BAB70076" association="_3ADC7B74022D3DFCAADB020A">
+ <ownedComment xmi:id="_rr4V0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFCAADC01BB">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rr4V1hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rr4V1RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D4161A8F100CC" name="ParameterDirectionKind">
+ <ownedComment xmi:id="_rpM1XRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A8F100CC">
+ <body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A93C01BC" name="in">
+ <ownedComment xmi:id="_rpM1YRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A93C01BC">
+ <body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A94902E7" name="inout">
+ <ownedComment xmi:id="_rpV_MxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A94902E7">
+ <body>Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A95103E3" name="out">
+ <ownedComment xmi:id="_rpV_NxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A95103E3">
+ <body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D4161A9580339" name="return">
+ <ownedComment xmi:id="_rpV_OxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4161A9580339">
+ <body>Indicates that parameter values are passed as return values from a behavioral element back to the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D41C2D6020188" name="VisibilityKind">
+ <ownedComment xmi:id="_rpfwPBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D6020188">
+ <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_3ADC7B74022D42EE305C00E3" name="bestVisibility" isQuery="true" bodyCondition="_rpfwRRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_rpfwQBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D42EE305C00E3">
+ <body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rpfwRRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D42EE305C00E3">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rpfwRhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if vis->includes(#public) then #public else #private endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_rpfwQxTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D41C2D6020188" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D42EE668803C7" name="vis" type="_3ADC7B74022D41C2D6020188">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ggfn0RTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ggfn0BTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedLiteral xmi:id="_3ADC7B74022D41C2D6140206" name="public">
+ <ownedComment xmi:id="_rpfwShTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D6140206">
+ <body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D41C2D61D0245" name="private">
+ <ownedComment xmi:id="_rpo6IxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41C2D61D0245">
+ <body>A private element is only visible inside the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A570218" name="protected">
+ <ownedComment xmi:id="_rpo6JxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A570218">
+ <body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D430C9A60004E" name="package">
+ <ownedComment xmi:id="_rpo6KxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D430C9A60004E">
+ <body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6C94B00D6" name="A_type_typedElement" memberEnd="_3ADC7B74022D3DE6C94D0011 _3ADC7B74022D3DE6C94D001B">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6C94D001B" type="_3ADC7B74022D3DE6C3F20254" association="_3ADC7B74022D3DE6C94B00D6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E-X8QVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E-X8QFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E2E1037E" name="A_ownedAttribute_class" memberEnd="_3ADC7B74022D3DE6E2E2028F _3ADC7B74022D3DE6E2E20299"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E30E0260" name="A_ownedOperation_class" memberEnd="_3ADC7B74022D3DE6E30F008B _3ADC7B74022D3DE6E30F0095"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E40802BA" name="A_ownedEnd_owningAssociation" memberEnd="_3ADC7B74022D3DE6E409010C _3ADC7B74022D3DE6E4090120"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E42D0385" name="A_attribute_classifier" memberEnd="_3ADC7B74022D3DE6E42E034A _3ADC7B74022D3DE6E42E035E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E42E035E" name="classifier" type="_3ADC7B74022D3DE6C8630317" subsettedProperty="_3ADC7B74022D3DFCBDBD028D" association="_3ADC7B74022D3DE6E42D0385">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rqFmGBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rqFmFxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E70F039A" name="A_redefinedProperty_property" memberEnd="_3ADC7B74022D3DE6E711018A _3ADC7B74022D3DE6E711019E">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E711019E" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E70F039A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WaSO8VooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WaSO8FooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E7410360" name="A_subsettedProperty_property" memberEnd="_3ADC7B74022D3DE6E7430363 _3ADC7B74022D3DE6E7430381">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E7430381" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E7410360">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_arRjAVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_arRjAFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E7650159" name="A_opposite_property" memberEnd="_3ADC7B74022D3DE6E76603BD _3ADC7B74022D3DE6E76603DB">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E76603DB" type="_3ADC7B74022D3DE6D57500AC" association="_3ADC7B74022D3DE6E7650159">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eIaYQVooEduDzLNvRu8ZxQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eIaYQFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E8DE0061" name="A_superClass_class" memberEnd="_3ADC7B74022D3DE6E8DF0225 _3ADC7B74022D3DE6E8DF022F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E8DF022F" type="_3ADC7B74022D3DE6D5AD039B" association="_3ADC7B74022D3DE6E8DE0061">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sklG4VooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sklG4FooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE75D86027E" name="A_endType_association" memberEnd="_3ADC7B74022D3DE75D87003B _3ADC7B74022D3DE75D87004F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE75D87004F" type="_3ADC7B74022D3DE6E15D033A" association="_3ADC7B74022D3DE75D86027E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PGi7kVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PGi7kFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6D3850275" name="A_ownedLiteral_enumeration" memberEnd="_3ADC7B74022D3DE6D38600DC _3ADC7B74022D3DE6D38600E6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E2280287" name="A_ownedAttribute_datatype" memberEnd="_3ADC7B74022D3DE6E2290152 _3ADC7B74022D3DE6E2290166"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E23D0179" name="A_ownedOperation_datatype" memberEnd="_3ADC7B74022D3DE6E23E008A _3ADC7B74022D3DE6E23E0094"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE7654A013C" name="A_raisedException_operation" memberEnd="_3ADC7B74022D3DE7654A0345 _3ADC7B74022D3DE7654A0381">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE7654A0381" type="_3ADC7B74022D3DE6D56F031A" association="_3ADC7B74022D3DE7654A013C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l8HTMVoqEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l8HTMFoqEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE767BB0358" name="A_redefinedOperation_operation" memberEnd="_3ADC7B74022D3DE767BD001B _3ADC7B74022D3DE767BD0043">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE767BD0043" type="_3ADC7B74022D3DE6D56F031A" association="_3ADC7B74022D3DE767BB0358">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h-fnEVoqEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h-fnEFoqEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE76378015A" name="A_ownedParameter_ownerFormalParam" memberEnd="_3ADC7B74022D3DE7637803DB _3ADC7B74022D3DE7637901B6">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE7637901B6" name="ownerFormalParam" type="_3ADC7B74022D3DE7632A0090" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DE76378015A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rq10GBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq10FxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE7651002AB" name="A_raisedException_behavioralFeature" memberEnd="_3ADC7B74022D3DE76511013A _3ADC7B74022D3DE76511016C">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE76511016C" type="_3ADC7B74022D3DE7632A0090" association="_3ADC7B74022D3DE7651002AB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0_lu4VopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0_lu4FopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE234A0342" name="A_importedMember_namespace" memberEnd="_3ADC7B74022D3DEE234B0163 _3ADC7B74022D3DEE234B0181">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE234B0181" type="_3ADC7B74022D3DE6C03E0388" association="_3ADC7B74022D3DEE234A0342">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pG4bgVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pG4bgFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6DEFE0106" name="A_importedPackage_packageImport" memberEnd="_3ADC7B74022D3DE6DEFF023E _3ADC7B74022D3DE6DEFF0252">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6DEFF0252" type="_3ADC7B74022D3DE6D5E002D7" association="_3ADC7B74022D3DE6DEFE0106">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k0_vkVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k0_vkFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6DF68013A" name="A_importedElement_elementImport" memberEnd="_3ADC7B74022D3DE6DF6803A7 _3ADC7B74022D3DE6DF6803B1">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6DF6803B1" type="_3ADC7B74022D3DE6D5E7016E" association="_3ADC7B74022D3DE6DF68013A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i6z60VopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i6z60FopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E0040076" name="A_elementImport_importingNamespace" memberEnd="_3ADC7B74022D3DE6E0040315 _3ADC7B74022D3DE6E0040317"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E00900B0" name="A_packageImport_importingNamespace" memberEnd="_3ADC7B74022D3DE6E00902C3 _3ADC7B74022D3DE6E00902D7"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E0F402CA" name="A_packagedElement_owningPackage" memberEnd="_3ADC7B74022D3DE6E0F500FF _3ADC7B74022D3DE6E0F50113">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE6E0F50113" name="owningPackage" type="_3ADC7B74022D3DE6D5DA0183" subsettedProperty="_3ADC7B74022D3DFCB86501A0" association="_3ADC7B74022D3DE6E0F402CA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrR47RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rrR47BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE344602C4" name="A_ownedType_package" memberEnd="_3ADC7B74022D3DEE344701CC _3ADC7B74022D3DEE344701FE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE6E3EE01F4" name="A_memberEnd_association" memberEnd="_3ADC7B74022D3DE6E3EF0097 _3ADC7B74022D3DE6E3EF00AB"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE6FD102CF" name="A_nestedPackage_nestingPackage" memberEnd="_3ADC7B74022D3DEE6FD3029F _3ADC7B74022D3DEE6FD302F9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE7BD90219" name="A_type_operation" memberEnd="_3ADC7B74022D3DEE7BDA017A _3ADC7B74022D3DEE7BDA01A2">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE7BDA01A2" type="_3ADC7B74022D3DE6D56F031A" association="_3ADC7B74022D3DEE7BD90219">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oI7JAVoqEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oI7JAFoqEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF68066000C" name="A_receivingPackage_packageMerge" memberEnd="_3ADC7B74022D3DF68066000D _3ADC7B74022D3DF68066000E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF6806A03A1" name="A_mergedPackage_packageMerge" memberEnd="_3ADC7B74022D3DF6806A03A2 _3ADC7B74022D3DF6806A03A3">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF6806A03A3" type="_3ADC7B74022D3DEE8DFE0290" association="_3ADC7B74022D3DF6806A03A1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aFq0MVorEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aFq0MForEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCA805021A" name="A_ownedElement_owner" memberEnd="_3ADC7B74022D3DFCA80700B4 _3ADC7B74022D3DFCA80700BE"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCAADB020A" name="A_annotatedElement_comment" memberEnd="_3ADC7B74022D3DFCAADC01BB _3ADC7B74022D3DFCAADC01D9">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCAADC01D9" type="_3ADC7B74022D41781AA6038F" association="_3ADC7B74022D3DFCAADB020A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5bF7wVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5bF7wFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCAC2E0366" name="A_relatedElement_relationship" memberEnd="_3ADC7B74022D3DFCAC2F019B _3ADC7B74022D3DFCAC2F01AF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCAC2F01AF" type="_3ADC7B74022D3DE6C8270177" association="_3ADC7B74022D3DFCAC2E0366">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xkxfwVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xkxfwFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCAC780308" name="A_source_directedRelationship" memberEnd="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCAC790101">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCAC790101" type="_3ADC7B74022D3DE6C82E03E4" association="_3ADC7B74022D3DFCAC780308">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zRHFwVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zRHFwFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCACAE01F7" name="A_target_directedRelationship" memberEnd="_3ADC7B74022D3DFCACAF0090 _3ADC7B74022D3DFCACAF00AE">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCACAF00AE" type="_3ADC7B74022D3DE6C82E03E4" association="_3ADC7B74022D3DFCACAE01F7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_z7SEIVonEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_z7SEIFonEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCBDBD0034" name="A_redefinitionContext_redefinableElement" memberEnd="_3ADC7B74022D3DFCBDBD028D _3ADC7B74022D3DFCBDBD02BF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCBDBD02BF" type="_3ADC7B74022D3DE6C81D0244" association="_3ADC7B74022D3DFCBDBD0034">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6jQBMVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6jQBMFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCBE1D0317" name="A_redefinedElement_redefinableElement" memberEnd="_3ADC7B74022D3DFCBE1F00FD _3ADC7B74022D3DFCBE1F0111">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCBE1F0111" type="_3ADC7B74022D3DE6C81D0244" association="_3ADC7B74022D3DFCBE1D0317">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__ZMccVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__ZMccFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCBE7F0137" name="A_feature_featuringClassifier" memberEnd="_3ADC7B74022D3DFCBE7F0246 _3ADC7B74022D3DFCBE7F025A"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCC85C000C" name="A_constrainedElement_constraint" memberEnd="_3ADC7B74022D3DFCC85C023D _3ADC7B74022D3DFCC85C026F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCC85C026F" type="_3ADC7B74022D3DE766450007" association="_3ADC7B74022D3DFCC85C000C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VH6ysVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VH6ysFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCC88D0157" name="A_specification_owningConstraint" memberEnd="_3ADC7B74022D3DFCC88D0337 _3ADC7B74022D3DFCC88D0341">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCC88D0341" name="owningConstraint" type="_3ADC7B74022D3DE766450007" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3DFCC88D0157">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rseLuhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rseLuRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0270BC02FC" name="A_general_classifier" memberEnd="_3ADC7B74022D3E0270BE0395 _3ADC7B74022D3E0270BE03C7">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0270BE03C7" type="_3ADC7B74022D3DE6C8630317" association="_3ADC7B74022D3E0270BC02FC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8cieEVooEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8cieEFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCB86303CD" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D3DFCB8650177 _3ADC7B74022D3DFCB86501A0"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFCB82E022D" name="A_member_namespace" memberEnd="_3ADC7B74022D3DFCB82F00DA _3ADC7B74022D3DFCB82F00F8">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFCB82F00F8" type="_3ADC7B74022D3DE6C03E0388" association="_3ADC7B74022D3DFCB82E022D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gR1GYVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gR1GYFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E5563050088" name="A_operand_expression" memberEnd="_3ADC7B74022D3E55630701F3 _3ADC7B74022D3E5563070207">
+ <ownedEnd xmi:id="_3ADC7B74022D3E5563070207" name="expression" type="_3ADC7B74022D3E555F19002A" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3E5563050088">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rsxtwBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rsxtvxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F14BFF0313" name="A_navigableOwnedEnd_association" memberEnd="_3ADC7B74022D40F14C010058 _3ADC7B74022D40F14C010062">
+ <ownedEnd xmi:id="_3ADC7B74022D40F14C010062" type="_3ADC7B74022D3DE6E15D033A" association="_3ADC7B74022D40F14BFF0313">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLw9YVooEduDzLNvRu8ZxQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLw9YFooEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4161AA250298" name="A_ownedParameter_operation" memberEnd="_3ADC7B74022D4161AA270132 _3ADC7B74022D4161AA27013C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41781AB701BD" name="A_ownedComment_owningElement" memberEnd="_3ADC7B74022D41781AB80146 _3ADC7B74022D41781AB80148">
+ <ownedEnd xmi:id="_3ADC7B74022D41781AB80148" name="owningElement" type="_3ADC7B74022D3DE6BAB70076" subsettedProperty="_3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D41781AB701BD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rs63sxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rs63shTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4304A1300282" name="A_inheritedMember_classifier" memberEnd="_3ADC7B74022D4304A13201D9 _3ADC7B74022D4304A13201ED">
+ <ownedEnd xmi:id="_3ADC7B74022D4304A13201ED" type="_3ADC7B74022D3DE6C8630317" association="_3ADC7B74022D4304A1300282">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CWbpoVopEduDzLNvRu8ZxQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CWbpoFopEduDzLNvRu8ZxQ"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_nWbKEB-yEdqIE6mxof-rZA" name="A_precondition_preContext" memberEnd="_nWbKER-yEdqIE6mxof-rZA _nWbKEh-yEdqIE6mxof-rZA">
+ <ownedEnd xmi:id="_nWbKEh-yEdqIE6mxof-rZA" name="preContext" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_s_9I8h-zEdqIE6mxof-rZA" association="_nWbKEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__kScQR-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__kScQB-yEdqIE6mxof-rZA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_s0ANEB-yEdqIE6mxof-rZA" name="A_postcondition_postContext" memberEnd="_s0ANER-yEdqIE6mxof-rZA _s0ANEh-yEdqIE6mxof-rZA">
+ <ownedEnd xmi:id="_s0ANEh-yEdqIE6mxof-rZA" name="postContext" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_s_9I8h-zEdqIE6mxof-rZA" association="_s0ANEB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6bRUAR-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6bRUAB-yEdqIE6mxof-rZA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_uPMYsB-yEdqIE6mxof-rZA" name="A_bodyCondition_bodyContext" memberEnd="_uPMYsR-yEdqIE6mxof-rZA _uPMYsh-yEdqIE6mxof-rZA">
+ <ownedEnd xmi:id="_uPMYsh-yEdqIE6mxof-rZA" name="bodyContext" type="_3ADC7B74022D3DE6D56F031A" subsettedProperty="_s_9I8h-zEdqIE6mxof-rZA" association="_uPMYsB-yEdqIE6mxof-rZA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w8DAgR-yEdqIE6mxof-rZA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w8DAgB-yEdqIE6mxof-rZA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_s_9I8B-zEdqIE6mxof-rZA" name="A_ownedRule_context" memberEnd="_s_9I8R-zEdqIE6mxof-rZA _s_9I8h-zEdqIE6mxof-rZA"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CA186CB00FB" name="Profiles">
+ <packageImport xmi:id="_3ADC7B74022D3DE7959801E8" importedPackage="_3ADC7B74022D3DE692AD00C7"/>
+ <packageImport xmi:id="_3ADC7B74022D41B0672E00DE" importedPackage="_3ADC7B74022D3C9FFCC70354"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA186DB0022" name="Stereotype">
+ <ownedComment xmi:id="_rt-AgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA186DB0022">
+ <body>A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rt-AihTaEdqZu-3Jy1-uYg" name="name_not_clash" constrainedElement="_3ADC7B74022D3CA186DB0022">
+ <ownedComment xmi:id="_rt-AhhTaEdqZu-3Jy1-uYg" annotatedElement="_rt-AihTaEdqZu-3Jy1-uYg">
+ <body>Stereotype names should not clash with keyword names for the extended model element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rt-AixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rt-AkxTaEdqZu-3Jy1-uYg" name="generalize" constrainedElement="_3ADC7B74022D3CA186DB0022">
+ <ownedComment xmi:id="_rt-AjxTaEdqZu-3Jy1-uYg" annotatedElement="_rt-AkxTaEdqZu-3Jy1-uYg">
+ <body>A Stereotype may only generalize or specialize another Stereotype.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rt-AlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) </body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_SYvTsEfJEdq0rbStTpEubg" general="_3ADC7B74022D3CA22B8803DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40E7EE3603C0" name="icon" type="_3ADC7B74022D40E7EDE1009F" aggregation="composite" association="_3ADC7B74022D40E7EE3402D7">
+ <ownedComment xmi:id="_rutnbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40E7EE3603C0">
+ <body>Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutncBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnbxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA186E10085" name="Profile">
+ <ownedComment xmi:id="_rt-AmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA186E10085">
+ <body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_dCELMDakEdqq1tCaRkgBQQ" name="metaclass_reference_not_specialized" constrainedElement="_3ADC7B74022D3CA186E10085">
+ <ownedComment xmi:id="_e_p_UDqAEdq16aujGBCOZg" annotatedElement="_dCELMDakEdqq1tCaRkgBQQ">
+ <body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_dCELMTakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>self.metaclassReference.importedElement->&#xD;&#xA; select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA; (c.generalization.namespace = self or&#xD;&#xA; (c.specialization.namespace = self) )->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ichowDakEdqq1tCaRkgBQQ" name="references_same_metamodel" constrainedElement="_3ADC7B74022D3CA186E10085">
+ <ownedComment xmi:id="_h85zkDqAEdq16aujGBCOZg" annotatedElement="_ichowDakEdqq1tCaRkgBQQ">
+ <body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ichowTakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA; union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_bC_LMEfCEdq0rbStTpEubg" general="_3ADC7B74022D3DE6D5DA0183"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB24B21030C" name="ownedStereotype" type="_3ADC7B74022D3CA186DB0022" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0F500FF" association="_3ADC7B74022D3CB24B21012C">
+ <ownedComment xmi:id="_ruQ7iRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB24B21030C">
+ <body>References the Stereotypes that are owned by the Profile.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFYxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE705703B8" name="metaclassReference" type="_3ADC7B74022D3DE6D5E7016E" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E0040315" association="_3ADC7B74022D3DEE705700FB">
+ <ownedComment xmi:id="_ruj2eBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE705703B8">
+ <body>References a metaclass that may be extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2fBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2exTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DEE70D10178" name="metamodelReference" type="_3ADC7B74022D3DE6D5E002D7" aggregation="composite" subsettedProperty="_3ADC7B74022D3DE6E00902C3" association="_3ADC7B74022D3DEE70D002B7">
+ <ownedComment xmi:id="_rutnYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DEE70D10178">
+ <body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutnZhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnZRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA18745029B" name="Package">
+ <ownedComment xmi:id="_ruHKcBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA18745029B">
+ <body>A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D416D69D00339" general="_3ADC7B74022D3DE6C03E0388"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA1877301CF" name="profileApplication" type="_3ADC7B74022D3CBDA36602FA" aggregation="composite" subsettedProperty="_3ADC7B74022D3DFCA80700B4" association="_3ADC7B74022D3CA187710277">
+ <ownedComment xmi:id="_ruQ7fxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA1877301CF">
+ <body>References the ProfileApplications that indicate which profiles have been applied to the Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruQ7gxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruQ7ghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CA22B8803DA" name="Class">
+ <ownedComment xmi:id="_ruHKdRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA22B8803DA">
+ <body>Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA7FB03DD" name="extension" type="_3ADC7B74022D3CBDA5E903C7" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3CBDA7FA0395">
+ <ownedComment xmi:id="_ruaFcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA7FB03DD">
+ <body>References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFdxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFdhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CBDA36602FA" name="ProfileApplication">
+ <ownedComment xmi:id="_ruHKeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA36602FA">
+ <body>A profile application is used to show which profiles have been applied to a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_EAyg0GgBEdqfYrlcy8iLFA" general="_3ADC7B74022D3DE6C82E03E4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA3A302D0" name="appliedProfile" type="_3ADC7B74022D3CA186E10085" subsettedProperty="_3ADC7B74022D3DFCACAF0090" association="_3ADC7B74022D3CBDA3A20057">
+ <ownedComment xmi:id="_ruaFaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA3A302D0">
+ <body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFbRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFbBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7409kDdgEdqq1tCaRkgBQQ" name="isStrict" type="_3ADC7B74022D3CA010AC0090">
+ <ownedComment xmi:id="_JwfQ8DdhEdqq1tCaRkgBQQ" annotatedElement="_7409kDdgEdqq1tCaRkgBQQ">
+ <body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_l1JQAF0oEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA1877301D1" name="applyingPackage" type="_3ADC7B74022D3CA18745029B" subsettedProperty="_3ADC7B74022D3DFCAC7900D9 _3ADC7B74022D3DFCA80700BE" association="_3ADC7B74022D3CA187710277">
+ <ownedComment xmi:id="_6Jad4PZcEdqYHf-imTcTdw" annotatedElement="_3ADC7B74022D3CA1877301D1">
+ <body>The package that owns the profile application.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruQ7hhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruQ7hRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CBDA5E903C7" name="Extension">
+ <ownedComment xmi:id="_ruHKfhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA5E903C7">
+ <body>An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_mF1uQDajEdqq1tCaRkgBQQ" name="non_owned_end" constrainedElement="_3ADC7B74022D3CBDA5E903C7">
+ <ownedComment xmi:id="_FymhADqAEdq16aujGBCOZg" annotatedElement="_mF1uQDajEdqq1tCaRkgBQQ">
+ <body>The non-owned end of an Extension is typed by a Class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_mF1uQTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_vJ8MADajEdqq1tCaRkgBQQ" name="is_binary" constrainedElement="_3ADC7B74022D3CBDA5E903C7">
+ <ownedComment xmi:id="_Iq7ZADqAEdq16aujGBCOZg" annotatedElement="_vJ8MADajEdqq1tCaRkgBQQ">
+ <body>An Extension is binary, i.e., it has only two memberEnds.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_vJ8MATajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>memberEnd->size() = 2</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DEE788500D3" general="_3ADC7B74022D3DE6E15D033A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA7B50011" name="isRequired" type="_3ADC7B74022D3CA010AC0090" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_ruHKgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA7B50011">
+ <body>Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_EFEnwF0oEdq3-fC14hmVtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA7FB03E7" name="metaclass" type="_3ADC7B74022D3CA22B8803DA" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3CBDA7FA0395">
+ <ownedComment xmi:id="_ruaFexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA7FB03E7">
+ <body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFfxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFfhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA88400D7" name="ownedEnd" type="_3ADC7B74022D3CBDA5F701B4" aggregation="composite" redefinedProperty="_3ADC7B74022D3DE6E409010C" association="_3ADC7B74022D3CBDA88302E8">
+ <ownedComment xmi:id="_ruj2ZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA88400D7">
+ <body>References the end of the extension that is typed by a Stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2aBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2ZxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_17RV4DajEdqq1tCaRkgBQQ" name="metaclassEnd" isQuery="true" bodyCondition="_-tfZcDajEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_QggOIDqAEdq16aujGBCOZg" annotatedElement="_17RV4DajEdqq1tCaRkgBQQ">
+ <body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
+ </ownedComment>
+ <ownedRule xmi:id="_-tfZcDajEdqq1tCaRkgBQQ" name="spec" constrainedElement="_17RV4DajEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_-tfZcTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = memberEnd->reject(ownedEnd)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_7E4UADajEdqq1tCaRkgBQQ" type="_3ADC7B74022D3DE6D57500AC" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ccgo4DakEdqq1tCaRkgBQQ" name="metaclass" isQuery="true" bodyCondition="_IyQqADakEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_O8Em8DqAEdq16aujGBCOZg" annotatedElement="_Ccgo4DakEdqq1tCaRkgBQQ">
+ <body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
+ </ownedComment>
+ <ownedRule xmi:id="_IyQqADakEdqq1tCaRkgBQQ" name="spec" constrainedElement="_Ccgo4DakEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_IyQqATakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = metaclassEnd().type</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_HSTTIDakEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA22B8803DA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LziCoDakEdqq1tCaRkgBQQ" name="isRequired" isQuery="true" bodyCondition="_SD7CoDakEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_NjHP8DqAEdq16aujGBCOZg" annotatedElement="_LziCoDakEdqq1tCaRkgBQQ">
+ <body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_SD7CoDakEdqq1tCaRkgBQQ" name="spec" constrainedElement="_LziCoDakEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_SD7CoTakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = (ownedEnd->lowerBound() = 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Qhu3IDakEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA010AC0090" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CBDA5F701B4" name="ExtensionEnd">
+ <ownedComment xmi:id="_ruQ7cRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA5F701B4">
+ <body>An extension end is used to tie an extension to a stereotype when extending a metaclass.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_9UWRsDaiEdqq1tCaRkgBQQ" name="multiplicity" constrainedElement="_3ADC7B74022D3CBDA5F701B4">
+ <ownedComment xmi:id="_CQ_x4DajEdqq1tCaRkgBQQ" annotatedElement="_9UWRsDaiEdqq1tCaRkgBQQ">
+ <body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_9UWRsTaiEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_DubZMDajEdqq1tCaRkgBQQ" name="aggregation" constrainedElement="_3ADC7B74022D3CBDA5F701B4">
+ <ownedComment xmi:id="_HXMPoDajEdqq1tCaRkgBQQ" annotatedElement="_DubZMDajEdqq1tCaRkgBQQ">
+ <body>The aggregation of an ExtensionEnd is composite.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_DubZMTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>self.aggregation = #composite</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DEE78E20023" general="_3ADC7B74022D3DE6D57500AC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CBDA8C50030" name="type" type="_3ADC7B74022D3CA186DB0022" redefinedProperty="_3ADC7B74022D3DE6C94D0011" association="_3ADC7B74022D3CBDA8C3000F">
+ <ownedComment xmi:id="_ruj2bhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CBDA8C50030">
+ <body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2chTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2cRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Kh5YcDagEdqq1tCaRkgBQQ" name="lower" type="_3ADC7B74022D3CA010A4007B" redefinedProperty="_3ADC7B74022D41C06EAD0288">
+ <ownedComment xmi:id="_se8FsDagEdqq1tCaRkgBQQ" annotatedElement="_Kh5YcDagEdqq1tCaRkgBQQ">
+ <body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dAT0gTagEdqq1tCaRkgBQQ" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dAT0gDagEdqq1tCaRkgBQQ"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_hSCvcDagEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_InW3ADajEdqq1tCaRkgBQQ" name="lowerBound" isQuery="true" redefinedOperation="_3ADC7B74022D42EE305C00C6" bodyCondition="_ZWJvkDajEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_YkFZcDajEdqq1tCaRkgBQQ" annotatedElement="_InW3ADajEdqq1tCaRkgBQQ">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default&#xD;
+lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ZWJvkDajEdqq1tCaRkgBQQ" name="spec" constrainedElement="_InW3ADajEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZWJvkTajEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = lowerBound = if lowerValue->isEmpty() then 0 else lowerValue->IntegerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Ni0EYDajEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA010A4007B" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40E7EDE1009F" name="Image">
+ <ownedComment xmi:id="_ruQ7dhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40E7EDE1009F">
+ <body>Physical definition of a graphical image.</body>
+ </ownedComment>
+ <generalization xmi:id="_CT0zEHGhEdqziYxiZo0YtA" general="_3ADC7B74022D41925B100079"/>
+ <ownedAttribute xmi:id="_GgC74HGhEdqziYxiZo0YtA" name="content" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_it2uEHGkEdqziYxiZo0YtA" annotatedElement="_GgC74HGhEdqziYxiZo0YtA">
+ <body>This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J0FfgXGhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J0FfgHGhEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_LCBSQHGhEdqziYxiZo0YtA" name="location" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_LLrnwHGlEdqziYxiZo0YtA" annotatedElement="_LCBSQHGhEdqziYxiZo0YtA">
+ <body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O6uCIXGhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O6uCIHGhEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_P1lH4HGhEdqziYxiZo0YtA" name="format" type="_3ADC7B74022D3CA010B103C3">
+ <ownedComment xmi:id="_EbshsHGlEdqziYxiZo0YtA" annotatedElement="_P1lH4HGhEdqziYxiZo0YtA">
+ <body>This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP.&#xD;
+&#xD;
+In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ssj8EXGhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ssj8EHGhEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41925B100079" name="Element" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6OXXoXDLEdqziYxiZo0YtA" name="NamedElement" isAbstract="true">
+ <ownedOperation xmi:id="_qifDQDakEdqq1tCaRkgBQQ" name="allOwningPackages" isQuery="true" bodyCondition="_3LBREDakEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_5-hO8Dp_Edq16aujGBCOZg" annotatedElement="_qifDQDakEdqq1tCaRkgBQQ">
+ <body>The query allOwningPackages() returns all the directly or indirectly owning packages.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_3LBREDakEdqq1tCaRkgBQQ" name="spec" constrainedElement="_qifDQDakEdqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_3LBRETakEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = self.namespace->select(p | p.oclIsKindOf(Package))->union(p.allOwningPackages())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_yH9m4DakEdqq1tCaRkgBQQ" type="_3ADC7B74022D3CA18745029B" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0rlaMTakEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0rlaMDakEdqq1tCaRkgBQQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA187710277" name="A_profileApplication_applyingPackage" memberEnd="_3ADC7B74022D3CA1877301CF _3ADC7B74022D3CA1877301D1"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB24B21012C" name="A_ownedStereotype_profile" memberEnd="_3ADC7B74022D3CB24B21030C _3ADC7B74022D3CB24B210316">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB24B210316" type="_3ADC7B74022D3CA186E10085" association="_3ADC7B74022D3CB24B21012C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFZRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA3A20057" name="A_appliedProfile_profileApplication" memberEnd="_3ADC7B74022D3CBDA3A302D0 _3ADC7B74022D3CBDA3A302DA">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBDA3A302DA" type="_3ADC7B74022D3CBDA36602FA" association="_3ADC7B74022D3CBDA3A20057">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruaFcBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruaFbxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA7FA0395" name="A_extension_metaclass" memberEnd="_3ADC7B74022D3CBDA7FB03DD _3ADC7B74022D3CBDA7FB03E7" isDerived="true"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA88302E8" name="A_ownedEnd_extension" memberEnd="_3ADC7B74022D3CBDA88400D7 _3ADC7B74022D3CBDA88400E2">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBDA88400E2" type="_3ADC7B74022D3CBDA5E903C7" association="_3ADC7B74022D3CBDA88302E8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2axTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2ahTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CBDA8C3000F" name="A_type_extensionEnd" memberEnd="_3ADC7B74022D3CBDA8C50030 _3ADC7B74022D3CBDA8C5003A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CBDA8C5003A" type="_3ADC7B74022D3CBDA5F701B4" association="_3ADC7B74022D3CBDA8C3000F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2dRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2dBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE705700FB" name="A_metaclassReference_profile" memberEnd="_3ADC7B74022D3DEE705703B8 _3ADC7B74022D3DEE705703CC">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE705703CC" type="_3ADC7B74022D3CA186E10085" association="_3ADC7B74022D3DEE705700FB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ruj2fxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruj2fhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DEE70D002B7" name="A_metamodelReference_profile" memberEnd="_3ADC7B74022D3DEE70D10178 _3ADC7B74022D3DEE70D10196">
+ <ownedEnd xmi:id="_3ADC7B74022D3DEE70D10196" type="_3ADC7B74022D3CA186E10085" association="_3ADC7B74022D3DEE70D002B7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutnaRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnaBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40E7EE3402D7" name="A_icon_stereotype" memberEnd="_3ADC7B74022D40E7EE3603C0 _3ADC7B74022D40E7EE3603CA">
+ <ownedEnd xmi:id="_3ADC7B74022D40E7EE3603CA" type="_3ADC7B74022D3CA186DB0022" association="_3ADC7B74022D40E7EE3402D7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rutncxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rutnchTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_z9-BUBZaEdqs4ZsykdgStg">
+ <eAnnotations xmi:id="_z9-BURZaEdqs4ZsykdgStg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EReference xmi:id="_DeIvwMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CADCD85009B"/>
+ <Ecore:EReference xmi:id="_DeIvwcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CADCD8500A5"/>
+ <Ecore:EAttribute xmi:id="_DeIvwsYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CA0080E03C3"/>
+ <Ecore:EAttribute xmi:id="_DeIvw8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA008400375"/>
+ <Ecore:EReference xmi:id="_DeIvxMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA008A2036C"/>
+ <Ecore:EOperation xmi:id="_DeSgwMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E1065EF023E" operationName="getQualifiedName"/>
+ <Ecore:EReference xmi:id="_DeSgwcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA008A20358"/>
+ <Ecore:EReference xmi:id="_DeSgwsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA0098401B9"/>
+ <Ecore:EReference xmi:id="_DeSgw8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA00B92018D"/>
+ <Ecore:EReference xmi:id="_DeSgxMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA00B920183"/>
+ <Ecore:EAttribute xmi:id="_DeSgxcYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41AE11E501C8"/>
+ <Ecore:EAttribute xmi:id="_DeSgxsYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41AE120C0319"/>
+ <Ecore:EAttribute xmi:id="_DeSgx8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E555C7702E8"/>
+ <Ecore:EAttribute xmi:id="_DeSgyMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF78F1C034C"/>
+ <Ecore:EAttribute xmi:id="_DecRwMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF78F2B0290"/>
+ <Ecore:EOperation xmi:id="_DecRwcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E140A3102FA" operationName="getLower"/>
+ <Ecore:EOperation xmi:id="_DecRwsYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E140A6C013C" operationName="getUpper"/>
+ <Ecore:EReference xmi:id="_DecRw8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA02BDB0015"/>
+ <Ecore:EReference xmi:id="_DecRxMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CA01B20019D"/>
+ <Ecore:EReference xmi:id="_DecRxcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CADABFE01E3"/>
+ <Ecore:EReference xmi:id="_DecRxsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF65B8D0134"/>
+ <Ecore:EOperation xmi:id="_DecRx8YdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E105DC8003E" operationName="getGenerals"/>
+ <Ecore:EAttribute xmi:id="_DecRyMYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D3CAC072502E2"/>
+ <Ecore:EReference xmi:id="_DecRycYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6A15F02E3"/>
+ <Ecore:EReference xmi:id="_DelbsMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6A1830227"/>
+ <Ecore:EReference xmi:id="_DelbscYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D7A3113026A"/>
+ <Ecore:EReference xmi:id="_DelbssYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9C1A000D5"/>
+ <Ecore:EReference xmi:id="_Delbs8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9EF3300FA"/>
+ <Ecore:EReference xmi:id="_DelbtMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9C1A000FD"/>
+ <Ecore:EAttribute xmi:id="_DelbtcYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CADC5B702BE"/>
+ <Ecore:EReference xmi:id="_DelbtsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF65A9D02E0"/>
+ <Ecore:EOperation xmi:id="_Delbt8YdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E10722C00E4" operationName="getInheritedMembers"/>
+ <Ecore:EAttribute xmi:id="_DelbuMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CB5A28802FF"/>
+ <Ecore:EDataType xmi:id="_DevMsMYdEduPJbEsMYXjUQ" instanceClassName="int" base_PrimitiveType="_3ADC7B74022D3CA010A4007B"/>
+ <Ecore:EDataType xmi:id="_De49sMYdEduPJbEsMYXjUQ" instanceClassName="boolean" base_PrimitiveType="_3ADC7B74022D3CA010AC0090"/>
+ <Ecore:EDataType xmi:id="_De49scYdEduPJbEsMYXjUQ" instanceClassName="java.lang.String" base_PrimitiveType="_3ADC7B74022D3CA010B103C3"/>
+ <Ecore:EDataType xmi:id="_De49ssYdEduPJbEsMYXjUQ" instanceClassName="int" base_PrimitiveType="_3ADC7B74022D3DE6A93C0003"/>
+ <Ecore:EAttribute xmi:id="_De49s8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE6AC4701DA"/>
+ <Ecore:EAttribute xmi:id="_De49tMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE6A6EE0069"/>
+ <Ecore:EAttribute xmi:id="_DfCHoMYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D417820CB0110"/>
+ <Ecore:EReference xmi:id="_DfCHocYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6E42E034A"/>
+ <Ecore:EReference xmi:id="_DfCHosYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBE7F0246"/>
+ <Ecore:EReference xmi:id="_DfCHo8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D4304A13201D9"/>
+ <Ecore:EOperation xmi:id="_DfCHpMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D42EE305C00D9" operationName="getGenerals"/>
+ <Ecore:EOperation xmi:id="_DfCHpcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D42EE305C00F1" operationName="getInheritedMembers"/>
+ <Ecore:EReference xmi:id="_DfCHpsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCAC7900D9"/>
+ <Ecore:EReference xmi:id="_DfCHp8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCACAF0090"/>
+ <Ecore:EReference xmi:id="_DfCHqMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCA80700B4"/>
+ <Ecore:EReference xmi:id="_DfCHqcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCA80700BE"/>
+ <Ecore:EReference xmi:id="_DfCHqsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBE7F025A"/>
+ <Ecore:EReference xmi:id="_DfL4oMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE234B0163"/>
+ <Ecore:EReference xmi:id="_DfL4ocYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCB8650177"/>
+ <Ecore:EReference xmi:id="_DfL4osYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCB82F00DA"/>
+ <Ecore:EOperation xmi:id="_DfL4o8YdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142ABF004B" operationName="getImportedMembers"/>
+ <Ecore:EReference xmi:id="_DfL4pMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBDBD028D"/>
+ <Ecore:EReference xmi:id="_DfL4pcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCBE1F00FD"/>
+ <Ecore:EReference xmi:id="_DfL4psYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCAC2F019B"/>
+ <Ecore:EReference xmi:id="_DfL4p8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE75D87003B"/>
+ <Ecore:EAttribute xmi:id="_DfL4qMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D4201104A02AF"/>
+ <Ecore:EReference xmi:id="_DfL4qcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DE6E76603BD"/>
+ <Ecore:EOperation xmi:id="_DfVpoMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E14246901E3" operationName="getOpposite"/>
+ <Ecore:EAttribute xmi:id="_DfVpocYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41FC52E503B5"/>
+ <Ecore:EAttribute xmi:id="_DfVposYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41FC52EF0215"/>
+ <Ecore:EAttribute xmi:id="_DfVpo8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E03284C0289"/>
+ <Ecore:EAttribute xmi:id="_DfVppMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E032859015B"/>
+ <Ecore:EAttribute xmi:id="_DfVppcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0328B001D9"/>
+ <Ecore:EAttribute xmi:id="_DfVppsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0328710341"/>
+ <Ecore:EReference xmi:id="_DfVpp8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE7BDA017A"/>
+ <Ecore:EOperation xmi:id="_DfVpqMYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142F3E03CB" operationName="lowerBound"/>
+ <Ecore:EOperation xmi:id="_DfVpqcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142F7500B3" operationName="upperBound"/>
+ <Ecore:EOperation xmi:id="_DfVpqsYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D3E142FBB01EA" operationName="getType"/>
+ <Ecore:EAttribute xmi:id="_DfVpq8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE7647D021E"/>
+ <Ecore:EAttribute xmi:id="_DfVprMYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DEE875F0333"/>
+ <Ecore:EReference xmi:id="_DfVprcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE344701CC"/>
+ <Ecore:EReference xmi:id="_DfVprsYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE6FD3029F"/>
+ <Ecore:EReference xmi:id="_DfVpr8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE6FD302F9"/>
+ <Ecore:EReference xmi:id="_DfVpsMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DEE344701FE"/>
+ <Ecore:EAttribute xmi:id="_DfVpscYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DE6BF540255"/>
+ <Ecore:EAttribute xmi:id="_DfVpssYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41C2D63E00EE"/>
+ <Ecore:EReference xmi:id="_DfVps8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFCB86501A0"/>
+ <Ecore:EAttribute xmi:id="_DfVptMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_7-d1kIa_EdqhgMOAOWpjfQ"/>
+ <Ecore:EOperation xmi:id="_DfVptcYdEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D42EE305C00A6" operationName="getQualifiedName"/>
+ <Ecore:EAttribute xmi:id="_DfVptsYdEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41BDD0260325"/>
+ <Ecore:EReference xmi:id="_DfezkMYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CB24B21030C"/>
+ <Ecore:EReference xmi:id="_DfezkcYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CBDA7FB03DD"/>
+ <Ecore:EAttribute xmi:id="_DfezksYdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CBDA7B50011"/>
+ <Ecore:EReference xmi:id="_Dfezk8YdEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CBDA7FB03E7"/>
+ <Ecore:EOperation xmi:id="_DfezlMYdEduPJbEsMYXjUQ" base_Operation="_Ccgo4DakEdqq1tCaRkgBQQ" operationName="getMetaclass"/>
+ <Ecore:EAttribute xmi:id="_DfezlcYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_GgC74HGhEdqziYxiZo0YtA"/>
+ <Ecore:EAttribute xmi:id="_DfezlsYdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_LCBSQHGhEdqziYxiZo0YtA"/>
+ <Ecore:EAttribute xmi:id="_Dfezl8YdEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_P1lH4HGhEdqziYxiZo0YtA"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml
new file mode 100644
index 0000000000..5feb26ffef
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L0.uml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="__yy3ABmLEdqvcs97umGEYQ" name="L0">
+ <packageMerge xmi:id="_HW4daxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3DE692A401F1"/>
+ </packageMerge>
+ <packageMerge xmi:id="_7lASMGf-EdqfYrlcy8iLFA">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3C9FFCC70354"/>
+ </packageMerge>
+ <profileApplication xmi:id="_APtcgBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_APtcgRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_HIMmsMYdEduPJbEsMYXjUQ" base_Package="__yy3ABmLEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/umlL0.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml
new file mode 100644
index 0000000000..d26bd08f32
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L1.uml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_BWooUBmMEdqvcs97umGEYQ" name="L1">
+ <packageMerge xmi:id="_HWusRBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF124E700CB"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusRRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3388DA6E014A"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusRhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D336185C00118"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusRxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CFC224902BF"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HWusSBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3BAE542B0121"/>
+ </packageMerge>
+ <packageMerge xmi:id="_qbMZEHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D410C264F010C"/>
+ </packageMerge>
+ <packageMerge xmi:id="_4JxB4HxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3ADF556A0044"/>
+ </packageMerge>
+ <packageMerge xmi:id="_4e6ygHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3BAF164701DA"/>
+ </packageMerge>
+ <packageMerge xmi:id="_4xP4oHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3C9FD9B900CF"/>
+ </packageMerge>
+ <packageMerge xmi:id="_5EeWoHxsEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D335C122001A4"/>
+ </packageMerge>
+ <packageMerge xmi:id="_c_XvgHygEdq7cMP_l1l5Gg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D410D001C03C2"/>
+ </packageMerge>
+ <profileApplication xmi:id="_BbZzkBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_BbZzkRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_8njScMYcEduPJbEsMYXjUQ" base_Package="_BWooUBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/uml.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml
new file mode 100644
index 0000000000..c9983ad274
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L2.uml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_CTvJwBmMEdqvcs97umGEYQ" name="L2">
+ <packageMerge xmi:id="_HW4dQRTbEdqZu-3Jy1-uYg">
+ <mergedPackage xmi:type="uml:Model" href="L1.uml#_BWooUBmMEdqvcs97umGEYQ"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dRxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF124FB03B9"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dSBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0251EF01F0"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dShTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0235B10207"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dSxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DC8ED110289"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dTBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D381B1F00F7"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dTRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0C9C9E02E6"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dThTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D334A99B00208"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dUBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF1252E035B"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dURTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF1253C0119"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dUhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D0259DF00A8"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dUxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D5EC5B702B8"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dVBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E0235D10308"/>
+ </packageMerge>
+ <packageMerge xmi:id="_hP_vwEoiEdq2-6lg1JCB1A">
+ <mergedPackage href="Superstructure.uml#_euHIYEfeEdq0rbStTpEubg"/>
+ </packageMerge>
+ <packageMerge xmi:id="_frzRQFK2EdqxB6Bl62AbBg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D410C265D0152"/>
+ </packageMerge>
+ <profileApplication xmi:id="_CZsAwBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_CZsAwRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_4o7gwMYcEduPJbEsMYXjUQ" base_Package="_CTvJwBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/uml.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml
new file mode 100644
index 0000000000..644863c8cf
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/L3.uml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_EBtHcBmMEdqvcs97umGEYQ" name="L3">
+ <packageMerge xmi:id="_HW4dWRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E8A0682039B"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dWhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3ADCA176014F"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dWxTbEdqZu-3Jy1-uYg">
+ <mergedPackage xmi:type="uml:Model" href="L2.uml#_CTvJwBmMEdqvcs97umGEYQ"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dXhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CF19F41017F"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dXxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CF19F4B02C4"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3CC978D2033F"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF127D50109"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF125060148"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dYxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF41CB50210"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3DF3B10302DE"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZRTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D5531EE03C3"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZhTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3B8856200320"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dZxTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3D0266EE027C"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4daBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3BAF182F0290"/>
+ </packageMerge>
+ <packageMerge xmi:id="_HW4dahTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Superstructure.uml#_3ADC7B74022D3E2803C80047"/>
+ </packageMerge>
+ <profileApplication xmi:id="_EF31wBmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_EF31wRmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_xo824MYcEduPJbEsMYXjUQ" base_Package="_EBtHcBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/uml.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml
new file mode 100644
index 0000000000..80fa99255a
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/LM.uml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_FA4sgBmMEdqvcs97umGEYQ" name="LM">
+ <packageMerge xmi:id="_HW4dbBTbEdqZu-3Jy1-uYg">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3DE692AD00C7"/>
+ </packageMerge>
+ <packageMerge xmi:id="_1pzpoGf_EdqfYrlcy8iLFA">
+ <mergedPackage href="Infrastructure.uml#_3ADC7B74022D3C9FFCC70354"/>
+ </packageMerge>
+ <profileApplication xmi:id="_FETz8BmMEdqvcs97umGEYQ">
+ <eAnnotations xmi:id="_FETz8RmMEdqvcs97umGEYQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_Ka_NIMYdEduPJbEsMYXjUQ" base_Package="_FA4sgBmMEdqvcs97umGEYQ" nsPrefix="uml" nsURI="http://schema.omg.org/spec/UML/2.1.1/umlLM.xml"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml
new file mode 100644
index 0000000000..019ddd3aaa
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/Superstructure.uml
@@ -0,0 +1,14306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/4" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/4 pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA">
+ <uml:Model xmi:id="_s-vBgBjPEdqPB8O80Bm3OQ" name="UML">
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E0C8A930168" name="Actions">
+ <packageImport xmi:id="_87aKwD9JEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3DF124BC006D"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF127D50109" name="CompleteActions">
+ <packageImport xmi:id="_3ADC7B74022D4162B96F03C3" importedPackage="_3ADC7B74022D334A99B00208"/>
+ <packageImport xmi:id="_3ADC7B74022D4162B98300B5" importedPackage="_3ADC7B74022D3BAF182F0290"/>
+ <packageImport xmi:id="_6NdBoD9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageImport xmi:id="_-OywID9HEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D335C122001A4"/>
+ <packageMerge xmi:id="_HR0XERTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF1252E035B"/>
+ <packageMerge xmi:id="_4KGkcFK8EdqGjp-dS1uluA" mergedPackage="_3ADC7B74022D410C265D0152"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C95C100257" name="ReadExtentAction">
+ <ownedComment xmi:id="_sqw_9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C95C100257">
+ <body>A read extent action is an action that retrieves the current instances of a classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sqw__RTaEdqZu-3Jy1-uYg" name="type_is_classifier" constrainedElement="_3ADC7B74022D38C95C100257">
+ <ownedComment xmi:id="_sqw_-RTaEdqZu-3Jy1-uYg" annotatedElement="_sqw__RTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sqw__hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sqxABhTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D38C95C100257">
+ <ownedComment xmi:id="_sqxAAhTaEdqZu-3Jy1-uYg" annotatedElement="_sqxABhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 0..*.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sqxABxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(0,#null)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF408230127" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CFBA30150" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CFBA20393">
+ <ownedComment xmi:id="_sss5shTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CFBA30150">
+ <body>The runtime instances of the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5thTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5tRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C95C8402C2" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D38C95C8303C5">
+ <ownedComment xmi:id="_sss5vBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C95C8402C2">
+ <body>The classifier whose instances are to be retrieved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5wBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5vxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DBEACB029B" name="ReclassifyObjectAction">
+ <ownedComment xmi:id="_sqxACxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DBEACB029B">
+ <body>A reclassify object action is an action that changes which classifiers classify an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sq6J4xTaEdqZu-3Jy1-uYg" name="classifier_not_abstract" constrainedElement="_3ADC7B74022D38DBEACB029B">
+ <ownedComment xmi:id="_sqxAEBTaEdqZu-3Jy1-uYg" annotatedElement="_sq6J4xTaEdqZu-3Jy1-uYg">
+ <body>None of the new classifiers may be abstract.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sq6J5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.newClassifier->exists(isAbstract = true)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sq6J7BTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38DBEACB029B">
+ <ownedComment xmi:id="_sq6J6BTaEdqZu-3Jy1-uYg" annotatedElement="_sq6J7BTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sq6J7RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.argument.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sq6J9RTaEdqZu-3Jy1-uYg" name="input_pin" constrainedElement="_3ADC7B74022D38DBEACB029B">
+ <ownedComment xmi:id="_sq6J8RTaEdqZu-3Jy1-uYg" annotatedElement="_sq6J9RTaEdqZu-3Jy1-uYg">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sq6J9hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.argument.type->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4081F02EE" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CCDFA2D00F4" name="isReplaceAll">
+ <ownedComment xmi:id="_sq6J-hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CCDFA2D00F4">
+ <body>Specifies whether existing classifiers should be removed before adding the new classifiers.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HR9hABTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DBEB11022D" name="oldClassifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D38DBEB100312">
+ <ownedComment xmi:id="_sss5xhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DBEB11022D">
+ <body>A set of classifiers to be removed from the classifiers of the object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DkxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DkhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DBEB4201CA" name="newClassifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D38DBEB4102EB">
+ <ownedComment xmi:id="_ss2DmRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DBEB4201CA">
+ <body>A set of classifiers to be added to the classifiers of the object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DnRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DnBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF3A5BE02BF" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3DF3A5BD03D8">
+ <ownedComment xmi:id="_stcgkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3A5BE02BF">
+ <body>Holds the object to be reclassified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stcglxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stcglhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D39739DB102CF" name="ReadIsClassifiedObjectAction">
+ <ownedComment xmi:id="_sq6J_xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739DB102CF">
+ <body>A read is classified object action is an action that determines whether a runtime object is classified by a given classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srD64xTaEdqZu-3Jy1-uYg" name="multiplicity_of_input" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_sq6KBBTaEdqZu-3Jy1-uYg" annotatedElement="_srD64xTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD65BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srD67BTaEdqZu-3Jy1-uYg" name="no_type" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_srD66BTaEdqZu-3Jy1-uYg" annotatedElement="_srD67BTaEdqZu-3Jy1-uYg">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD67RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.type->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srD69RTaEdqZu-3Jy1-uYg" name="multiplicity_of_output" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_srD68RTaEdqZu-3Jy1-uYg" annotatedElement="_srD69RTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD69hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srD6_hTaEdqZu-3Jy1-uYg" name="boolean_result" constrainedElement="_3ADC7B74022D39739DB102CF">
+ <ownedComment xmi:id="_srD6-hTaEdqZu-3Jy1-uYg" annotatedElement="_srD6_hTaEdqZu-3Jy1-uYg">
+ <body>The type of the output pin is Boolean</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srD6_xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = Boolean</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4082902E8" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739DEF0061" name="isDirect">
+ <ownedComment xmi:id="_srD7AxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739DEF0061">
+ <body>Indicates whether the classifier must directly classify the input object.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HR9hARTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739E2C01D1" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D39739E2B0324">
+ <ownedComment xmi:id="_ss2DoxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739E2C01D1">
+ <body>The classifier against which the classification of the input object is tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DpxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DphTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739EA70341" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D39739EA700DE">
+ <ownedComment xmi:id="_ss2DqxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739EA70341">
+ <body>After termination of the action, will hold the result of the test.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DrxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DrhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39739E5C00B8" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D39739E5B0251">
+ <ownedComment xmi:id="_ss_0kRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39739E5C00B8">
+ <body>Holds the object whose classification is to be tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0lRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0lBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A78587C0167" name="StartClassifierBehaviorAction">
+ <ownedComment xmi:id="_srD7CBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78587C0167">
+ <body>A start classifier behavior action is an action that starts the classifier behavior of the input.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srNr6BTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3A78587C0167">
+ <ownedComment xmi:id="_srNr5BTaEdqZu-3Jy1-uYg" annotatedElement="_srNr6BTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srNr6RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srNr8RTaEdqZu-3Jy1-uYg" name="type_has_classifier" constrainedElement="_3ADC7B74022D3A78587C0167">
+ <ownedComment xmi:id="_srNr7RTaEdqZu-3Jy1-uYg" annotatedElement="_srNr8RTaEdqZu-3Jy1-uYg">
+ <body>If the input pin has a type, then the type must have a classifier behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srNr8hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF4084103AB" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A7858D00276" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3A7858D00028">
+ <ownedComment xmi:id="_ss_0mxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A7858D00276">
+ <body>Holds the object on which to start the owned behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0nxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0nhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C965F70052" name="QualifierValue">
+ <ownedComment xmi:id="_srNr9hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C965F70052">
+ <body>A qualifier value is not an action. It is an element that identifies links. It gives a single qualifier within a link end data specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srNr_xTaEdqZu-3Jy1-uYg" name="qualifier_attribute" constrainedElement="_3ADC7B74022D38C965F70052">
+ <ownedComment xmi:id="_srNr-xTaEdqZu-3Jy1-uYg" annotatedElement="_srNr_xTaEdqZu-3Jy1-uYg">
+ <body>The qualifier attribute must be a qualifier of the association end of the link-end data.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srNsABTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srW10BTaEdqZu-3Jy1-uYg" name="type_of_qualifier" constrainedElement="_3ADC7B74022D38C965F70052">
+ <ownedComment xmi:id="_srNsBBTaEdqZu-3Jy1-uYg" annotatedElement="_srW10BTaEdqZu-3Jy1-uYg">
+ <body>The type of the qualifier value input pin is the same as the type of the qualifier attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srW10RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.qualifier.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srW12RTaEdqZu-3Jy1-uYg" name="multiplicity_of_qualifier" constrainedElement="_3ADC7B74022D38C965F70052">
+ <ownedComment xmi:id="_srW11RTaEdqZu-3Jy1-uYg" annotatedElement="_srW12RTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the qualifier value input pin is &quot;1..1&quot;.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srW12hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C32A13B036E" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C966870334" name="qualifier" type="_3ADC7B74022D3CC0DAE103AD" association="_3ADC7B74022D38C9668602D9">
+ <ownedComment xmi:id="_ss_0rxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C966870334">
+ <body>Attribute representing the qualifier for which the value is to be specified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0sxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0shTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C966B200C9" name="value" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D38C966AF03DC">
+ <ownedComment xmi:id="_stJlkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C966B200C9">
+ <body>Input pin from which the specified value for the qualifier is taken.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJllhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJllRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D03F9C80242" name="LinkEndData">
+ <ownedRule xmi:id="_srW15hTaEdqZu-3Jy1-uYg" name="qualifiers" constrainedElement="_3ADC7B74022D3D03F9C80242">
+ <ownedComment xmi:id="_srW14hTaEdqZu-3Jy1-uYg" annotatedElement="_srW15hTaEdqZu-3Jy1-uYg">
+ <body>The qualifiers include all and only the qualifiers of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srW15xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier->collect(qualifier) = self.end.qualifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srW17xTaEdqZu-3Jy1-uYg" name="end_object_input_pin" constrainedElement="_3ADC7B74022D3D03F9C80242">
+ <ownedComment xmi:id="_srW16xTaEdqZu-3Jy1-uYg" annotatedElement="_srW17xTaEdqZu-3Jy1-uYg">
+ <body>The end object input pin is not also a qualifier value input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value->excludesAll(self.qualifier.value)</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C966380182" name="qualifier" type="_3ADC7B74022D38C965F70052" aggregation="composite" association="_3ADC7B74022D38C96637032F">
+ <ownedComment xmi:id="_ss_0pRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C966380182">
+ <body>List of qualifier values</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0qRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0qBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C968BA0212" name="ReadLinkObjectEndAction">
+ <ownedComment xmi:id="_srgm1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C968BA0212">
+ <body>A read link object end action is an action that retrieves an end object from a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srgm3RTaEdqZu-3Jy1-uYg" name="property" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm2RTaEdqZu-3Jy1-uYg" annotatedElement="_srgm3RTaEdqZu-3Jy1-uYg">
+ <body>The property must be an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm3hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.association.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srgm5hTaEdqZu-3Jy1-uYg" name="association_of_association" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm4hTaEdqZu-3Jy1-uYg" annotatedElement="_srgm5hTaEdqZu-3Jy1-uYg">
+ <body>The association of the association end must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm5xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.Association.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srgm7xTaEdqZu-3Jy1-uYg" name="ends_of_association" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm6xTaEdqZu-3Jy1-uYg" annotatedElement="_srgm7xTaEdqZu-3Jy1-uYg">
+ <body>The ends of the association must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srgm8BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.association.memberEnd->forall(e | not e.isStatic)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpwwxTaEdqZu-3Jy1-uYg" name="type_of_object" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srgm9BTaEdqZu-3Jy1-uYg" annotatedElement="_srpwwxTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin is the association class that owns the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpwxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.type = self.end.association</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpwzBTaEdqZu-3Jy1-uYg" name="multiplicity_of_object" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srpwyBTaEdqZu-3Jy1-uYg" annotatedElement="_srpwzBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the object input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpwzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpw1RTaEdqZu-3Jy1-uYg" name="type_of_result" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srpw0RTaEdqZu-3Jy1-uYg" annotatedElement="_srpw1RTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the same as the type of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpw1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.end.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srpw3hTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D38C968BA0212">
+ <ownedComment xmi:id="_srpw2hTaEdqZu-3Jy1-uYg" annotatedElement="_srpw3hTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srpw3xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF408C60140" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C968E2011F" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D38C968E002AC">
+ <ownedComment xmi:id="_stJlnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C968E2011F">
+ <body>Gives the input pin from which the link object is obtained.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJloBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlnxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C969090139" name="end" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D38C9690800B5">
+ <ownedComment xmi:id="_stJlphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C969090139">
+ <body>Link end to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJlqhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlqRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CD5AF009B" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CD5AD0098">
+ <ownedComment xmi:id="_stJlsBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD5AF009B">
+ <body>Pin where the result value is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJltBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlsxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C9697C024D" name="ReadLinkObjectEndQualifierAction">
+ <ownedComment xmi:id="_srpw4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C9697C024D">
+ <body>A read link object end qualifier action is an action that retrieves a qualifier end value from a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_srzhwxTaEdqZu-3Jy1-uYg" name="qualifier_attribute" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srpw6BTaEdqZu-3Jy1-uYg" annotatedElement="_srzhwxTaEdqZu-3Jy1-uYg">
+ <body>The qualifier attribute must be a qualifier attribute of an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzhxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzhzBTaEdqZu-3Jy1-uYg" name="association_of_association" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzhyBTaEdqZu-3Jy1-uYg" annotatedElement="_srzhzBTaEdqZu-3Jy1-uYg">
+ <body>The association of the association end of the qualifier attribute must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzhzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzh1RTaEdqZu-3Jy1-uYg" name="ends_of_association" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh0RTaEdqZu-3Jy1-uYg" annotatedElement="_srzh1RTaEdqZu-3Jy1-uYg">
+ <body>The ends of the association must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzh1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzh3hTaEdqZu-3Jy1-uYg" name="type_of_object" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh2hTaEdqZu-3Jy1-uYg" annotatedElement="_srzh3hTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin is the association class that owns the association end that has the given qualifier attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzh3xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.type = self.qualifier.associationEnd.association</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_srzh5xTaEdqZu-3Jy1-uYg" name="multiplicity_of_qualifier" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh4xTaEdqZu-3Jy1-uYg" annotatedElement="_srzh5xTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the qualifier attribute is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_srzh6BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.qualifier.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sr9SwxTaEdqZu-3Jy1-uYg" name="multiplicity_of_object" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_srzh7BTaEdqZu-3Jy1-uYg" annotatedElement="_sr9SwxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the object input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9SxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sr9SzBTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_sr9SyBTaEdqZu-3Jy1-uYg" annotatedElement="_sr9SzBTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the same as the type of the qualifier attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9SzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.qualifier.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sr9S1RTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D38C9697C024D">
+ <ownedComment xmi:id="_sr9S0RTaEdqZu-3Jy1-uYg" annotatedElement="_sr9S1RTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9S1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF408C9018A" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C969A203C4" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D38C9699F00D0">
+ <ownedComment xmi:id="_stSvghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C969A203C4">
+ <body>Gives the input pin from which the link object is obtained.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvhhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvhRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CD5C7010D" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CD5C602EC">
+ <ownedComment xmi:id="_stSvjBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD5C7010D">
+ <body>Pin where the result value is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvkBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvjxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C96A0F006D" name="qualifier" type="_3ADC7B74022D3CC0DAE103AD" association="_3ADC7B74022D38C96A0A0283">
+ <ownedComment xmi:id="_stSvlhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C96A0F006D">
+ <body>The attribute representing the qualifier to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvmhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvmRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DA9AA00136" name="CreateLinkObjectAction">
+ <ownedComment xmi:id="_sr9S2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DA9AA00136">
+ <body>A create link object action creates a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sr9S4xTaEdqZu-3Jy1-uYg" name="association_class" constrainedElement="_3ADC7B74022D38DA9AA00136">
+ <ownedComment xmi:id="_sr9S3xTaEdqZu-3Jy1-uYg" annotatedElement="_sr9S4xTaEdqZu-3Jy1-uYg">
+ <body>The association must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sr9S5BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.association().oclIsKindOf(Class)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssGcsRTaEdqZu-3Jy1-uYg" name="type_of_result" constrainedElement="_3ADC7B74022D38DA9AA00136">
+ <ownedComment xmi:id="_sr9S6BTaEdqZu-3Jy1-uYg" annotatedElement="_ssGcsRTaEdqZu-3Jy1-uYg">
+ <body>The type of the result pin must be the same as the association of the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGcshTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.association()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssGcuhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38DA9AA00136">
+ <ownedComment xmi:id="_ssGcthTaEdqZu-3Jy1-uYg" annotatedElement="_ssGcuhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGcuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38DA9AB80307" general="_3ADC7B74022D3745C9F20140"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38D7E682031D" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D38D7E68103B2">
+ <ownedComment xmi:id="_stSvoBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38D7E682031D">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvpBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvoxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF1414A01C5" name="AcceptEventAction">
+ <ownedComment xmi:id="_ssGcwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF1414A01C5">
+ <body>A accept event action is an action that waits for the occurrence of an event meeting specified conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssGczBTaEdqZu-3Jy1-uYg" name="no_input_pins" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssGcyBTaEdqZu-3Jy1-uYg" annotatedElement="_ssGczBTaEdqZu-3Jy1-uYg">
+ <body>AcceptEventActions may have no input pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGczRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssGc1RTaEdqZu-3Jy1-uYg" name="no_output_pins" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssGc0RTaEdqZu-3Jy1-uYg" annotatedElement="_ssGc1RTaEdqZu-3Jy1-uYg">
+ <body>There are no output pins if the trigger events are only ChangeEvents, or if they are only CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssGc1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssQNsxTaEdqZu-3Jy1-uYg" name="trigger_events" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssGc2hTaEdqZu-3Jy1-uYg" annotatedElement="_ssQNsxTaEdqZu-3Jy1-uYg">
+ <body>If the trigger events are all TimeEvents, there is exactly one output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssQNtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssQNvBTaEdqZu-3Jy1-uYg" name="unmarshall_signal_events" constrainedElement="_3ADC7B74022D3DF1414A01C5">
+ <ownedComment xmi:id="_ssQNuBTaEdqZu-3Jy1-uYg" annotatedElement="_ssQNvBTaEdqZu-3Jy1-uYg">
+ <body>If isUnmarshall is true, there must be exactly one trigger for events of type SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssQNvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A9F003B" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F19F1C02BD" name="isUnmarshall">
+ <ownedComment xmi:id="_ssQNwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F19F1C02BD">
+ <body>Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HSj98BTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF142BB00AB" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3DF142BA002E">
+ <ownedComment xmi:id="_stcgmhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF142BB00AB">
+ <body>Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stcgnhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stcgnRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4162A85001D0" name="trigger" type="_3ADC7B74022D3B9D229602A5" aggregation="composite" association="_3ADC7B74022D4162A84F00F1">
+ <ownedComment xmi:id="_st5McBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162A85001D0">
+ <body>The type of events accepted by the action, as specified by triggers. For triggers with signal events, a signal of the specified type or any subtype of the specified signal type is accepted.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_st5MdBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_st5McxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA834C0399" name="AcceptCallAction">
+ <ownedComment xmi:id="_ssQNxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA834C0399">
+ <body>An accept call action is an accept event action representing the receipt of a synchronous call request. In addition to the normal operation parameters, the action produces an output that is needed later to supply the information to the reply action necessary to return control to the caller. This action is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent reply action will complete immediately with no effects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssQNzxTaEdqZu-3Jy1-uYg" name="result_pins" constrainedElement="_3ADC7B74022D3DFA834C0399">
+ <ownedComment xmi:id="_ssQNyxTaEdqZu-3Jy1-uYg" annotatedElement="_ssQNzxTaEdqZu-3Jy1-uYg">
+ <body>The result pins must match the in and inout parameters of the operation specified by the trigger event in number, type, and order.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssQN0BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssZXoxTaEdqZu-3Jy1-uYg" name="trigger_call_event" constrainedElement="_3ADC7B74022D3DFA834C0399">
+ <ownedComment xmi:id="_ssQN1BTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXoxTaEdqZu-3Jy1-uYg">
+ <body>The trigger event must be a CallEvent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>trigger.event.oclIsKindOf(CallEvent)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssZXrBTaEdqZu-3Jy1-uYg" name="unmarshall" constrainedElement="_3ADC7B74022D3DFA834C0399">
+ <ownedComment xmi:id="_ssZXqBTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXrBTaEdqZu-3Jy1-uYg">
+ <body>isUnmrashall must be true for an AcceptCallAction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isUnmarshall = true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E11B33703E6" general="_3ADC7B74022D3DF1414A01C5"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA85570271" name="returnInformation" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3DFA855603D8">
+ <ownedComment xmi:id="_stmRghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA85570271">
+ <body>Pin where a value is placed containing sufficient information to perform a subsequent reply and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRhhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRhRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFA89FE003E" name="ReplyAction">
+ <ownedComment xmi:id="_ssZXsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA89FE003E">
+ <body>A reply action is an action that accepts a set of return values and a value containing return information produced by a previous accept call action. The reply action returns the values to the caller of the previous call, completing execution of the call.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssZXuhTaEdqZu-3Jy1-uYg" name="pins_match_parameter" constrainedElement="_3ADC7B74022D3DFA89FE003E">
+ <ownedComment xmi:id="_ssZXthTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXuhTaEdqZu-3Jy1-uYg">
+ <body>The reply value pins must match the return, out, and inout parameters of the operation on the event on the trigger in number, type, and order.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssZXwxTaEdqZu-3Jy1-uYg" name="event_on_reply_to_call_trigger" constrainedElement="_3ADC7B74022D3DFA89FE003E">
+ <ownedComment xmi:id="_ssZXvxTaEdqZu-3Jy1-uYg" annotatedElement="_ssZXwxTaEdqZu-3Jy1-uYg">
+ <body>The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssZXxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>replyToCallEvent.oclIsKindOf(CallEvent)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DFA8A2600FA" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFA8A2D032C" name="replyToCall" type="_3ADC7B74022D3B9D229602A5" association="_3ADC7B74022D3DFA8A2C02AF">
+ <ownedComment xmi:id="_stmRihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFA8A2D032C">
+ <body>The trigger specifying the operation whose call is being replied to.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRjhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRjRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4132131A0369" name="returnInformation" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D413213190090">
+ <ownedComment xmi:id="_stvbghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4132131A0369">
+ <body>A pin containing the return information value produced by an earlier AcceptCallAction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbhhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbhRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D413213720229" name="replyValue" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D4132136F01C0">
+ <ownedComment xmi:id="_stvbjBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D413213720229">
+ <body>A list of pins containing the reply values of the operation. These values are returned to the caller.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbkBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbjxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40F19F8103B3" name="UnmarshallAction">
+ <ownedComment xmi:id="_ssZXyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F19F8103B3">
+ <body>An unmarshall action is an action that breaks an object of a known type into outputs each of which is equal to a value from a structural feature of the object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ssjIqBTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIpBTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIqBTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin must be the same as the unmarshall classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIqRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssjIsRTaEdqZu-3Jy1-uYg" name="multiplicity_of_object" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIrRTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIsRTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the object input pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIshTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssjIuhTaEdqZu-3Jy1-uYg" name="number_of_result" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIthTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIuhTaEdqZu-3Jy1-uYg">
+ <body>The number of result output pins must be the same as the number of structural features of the unmarshall classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ssjIwxTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIvxTaEdqZu-3Jy1-uYg" annotatedElement="_ssjIwxTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of each result output pin must be the same as the corresponding structural feature of the unmarshall classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ssjIxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sss5oxTaEdqZu-3Jy1-uYg" name="multiplicity_of_result" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_ssjIyBTaEdqZu-3Jy1-uYg" annotatedElement="_sss5oxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding structural features of the unmarshall classifier.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sss5pBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sss5rBTaEdqZu-3Jy1-uYg" name="structural_feature" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_sss5qBTaEdqZu-3Jy1-uYg" annotatedElement="_sss5rBTaEdqZu-3Jy1-uYg">
+ <body>The unmarshall classifier must have at least one structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sss5rRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_skhF0Dc7Edqq1tCaRkgBQQ" name="unmarshallType_is_classifier" constrainedElement="_3ADC7B74022D40F19F8103B3">
+ <ownedComment xmi:id="_3CncYDc7Edqq1tCaRkgBQQ" annotatedElement="_skhF0Dc7Edqq1tCaRkgBQQ">
+ <body>unmarshallType must be a Classifier with ordered attributes</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_skhF0Tc7Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D40F19F9D013C" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F19FE601AF" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D40F19FE00355">
+ <ownedComment xmi:id="_stmRkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F19FE601AF">
+ <body>The values of the structural features of the input object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRlhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRlRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F1A01F0107" name="unmarshallType" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D40F1A01D0104">
+ <ownedComment xmi:id="_stmRnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F1A01F0107">
+ <body>The type of the object to be unmarshalled.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbchTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbcRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D413212B50086" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D413212B201B1">
+ <ownedComment xmi:id="_stvbeBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D413212B50086">
+ <body>The object to be unmarshalled.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbfBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbexTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3M4wwGdhEdqCCpdUvbQY5w" name="ReduceAction">
+ <ownedComment xmi:id="_JKP4wGdjEdqCCpdUvbQY5w" annotatedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <body>A reduce action is an action that reduces a collection to a single value by combining the elements of the collection.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_qhlQ4GdjEdqCCpdUvbQY5w" name="input_type_is_collection" constrainedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_xUiycGdjEdqCCpdUvbQY5w" annotatedElement="_qhlQ4GdjEdqCCpdUvbQY5w">
+ <body>The type of the input must be a collection.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_qhlQ4WdjEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_y9vk4GdjEdqCCpdUvbQY5w" name="output_types_are_compatible" constrainedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_7-t2IGdjEdqCCpdUvbQY5w" annotatedElement="_y9vk4GdjEdqCCpdUvbQY5w">
+ <body>The type of the output must be compatible with the type of the output of the reducer behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_y9vk4WdjEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_DTENgGdkEdqCCpdUvbQY5w" name="reducer_inputs_output" constrainedElement="_3M4wwGdhEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_QVrIMGdkEdqCCpdUvbQY5w" annotatedElement="_DTENgGdkEdqCCpdUvbQY5w">
+ <body>The reducer behavior must have two input parameters and one output parameter, of types compatible with the types of elements of the input collection.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_DTENgWdkEdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_7ku6wGdhEdqCCpdUvbQY5w" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_DCUGoWdiEdqCCpdUvbQY5w" name="reducer" type="_3ADC7B74022D3B9A6F4F0008" association="_DCUGoGdiEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_eR7dIGdjEdqCCpdUvbQY5w" annotatedElement="_DCUGoWdiEdqCCpdUvbQY5w">
+ <body>Behavior that is applied to two elements of the input collection to produce a value that is the same type as elements of the collection.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DCdQkWdiEdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DCdQkGdiEdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_U4on8WdiEdqCCpdUvbQY5w" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_U4on8GdiEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_hMyrwGdjEdqCCpdUvbQY5w" annotatedElement="_U4on8WdiEdqCCpdUvbQY5w">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U4on9GdiEdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U4on82diEdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Y5-WcWdiEdqCCpdUvbQY5w" name="collection" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_Y5-WcGdiEdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_PZvg4GdjEdqCCpdUvbQY5w" annotatedElement="_Y5-WcWdiEdqCCpdUvbQY5w">
+ <body>The collection to be reduced.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Y6IHcmdiEdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Y6IHcWdiEdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_whZ6wGdiEdqCCpdUvbQY5w" name="isOrdered">
+ <ownedComment xmi:id="_PrVAIGdjEdqCCpdUvbQY5w" annotatedElement="_whZ6wGdiEdqCCpdUvbQY5w">
+ <body>Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_0rYn4GdiEdqCCpdUvbQY5w">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CFBA20393" name="A_result_readExtentAction" memberEnd="_3ADC7B74022D395CFBA30150 _3ADC7B74022D395CFBA301F0">
+ <ownedEnd xmi:id="_3ADC7B74022D395CFBA301F0" type="_3ADC7B74022D38C95C100257" association="_3ADC7B74022D395CFBA20393">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5uRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5uBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C95C8303C5" name="A_classifier_readExtentAction" memberEnd="_3ADC7B74022D38C95C8402C2 _3ADC7B74022D38C95C840330">
+ <ownedEnd xmi:id="_3ADC7B74022D38C95C840330" type="_3ADC7B74022D38C95C100257" association="_3ADC7B74022D38C95C8303C5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sss5wxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sss5whTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DBEB100312" name="A_oldClassifier_reclassifyObjectAction" memberEnd="_3ADC7B74022D38DBEB11022D _3ADC7B74022D38DBEB11029B">
+ <ownedEnd xmi:id="_3ADC7B74022D38DBEB11029B" type="_3ADC7B74022D38DBEACB029B" association="_3ADC7B74022D38DBEB100312">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DlhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DlRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DBEB4102EB" name="A_newClassifier_reclassifyObjectAction" memberEnd="_3ADC7B74022D38DBEB4201CA _3ADC7B74022D38DBEB4201F2">
+ <ownedEnd xmi:id="_3ADC7B74022D38DBEB4201F2" type="_3ADC7B74022D38DBEACB029B" association="_3ADC7B74022D38DBEB4102EB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DoBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DnxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39739E2B0324" name="A_classifier_readIsClassifiedObjectAction" memberEnd="_3ADC7B74022D39739E2C01D1 _3ADC7B74022D39739E2C02A4">
+ <ownedEnd xmi:id="_3ADC7B74022D39739E2C02A4" type="_3ADC7B74022D39739DB102CF" association="_3ADC7B74022D39739E2B0324">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPqhMU-4EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPqhME-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39739EA700DE" name="A_result_readIsClassifiedObjectAction" memberEnd="_3ADC7B74022D39739EA70341 _3ADC7B74022D39739EA80003">
+ <ownedEnd xmi:id="_3ADC7B74022D39739EA80003" type="_3ADC7B74022D39739DB102CF" association="_3ADC7B74022D39739EA700DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss2DshTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss2DsRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D39739E5B0251" name="A_object_readIsClassifiedObjectAction" memberEnd="_3ADC7B74022D39739E5C00B8 _3ADC7B74022D39739E5C01A8">
+ <ownedEnd xmi:id="_3ADC7B74022D39739E5C01A8" type="_3ADC7B74022D39739DB102CF" association="_3ADC7B74022D39739E5B0251">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0mBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0lxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3A7858D00028" name="A_object_startClassifierBehaviorAction" memberEnd="_3ADC7B74022D3A7858D00276 _3ADC7B74022D3A7858D0033F">
+ <ownedEnd xmi:id="_3ADC7B74022D3A7858D0033F" type="_3ADC7B74022D3A78587C0167" association="_3ADC7B74022D3A7858D00028">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0ohTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0oRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C96637032F" name="A_qualifier_linkEndData" memberEnd="_3ADC7B74022D38C966380182 _3ADC7B74022D38C966380183">
+ <ownedEnd xmi:id="_3ADC7B74022D38C966380183" type="_3ADC7B74022D3D03F9C80242" association="_3ADC7B74022D38C96637032F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0rBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0qxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C9668602D9" name="A_qualifier_qualifierValue" memberEnd="_3ADC7B74022D38C966870334 _3ADC7B74022D38C96687035C">
+ <ownedEnd xmi:id="_3ADC7B74022D38C96687035C" type="_3ADC7B74022D38C965F70052" association="_3ADC7B74022D38C9668602D9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ss_0thTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ss_0tRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C966AF03DC" name="A_value_qualifierValue" memberEnd="_3ADC7B74022D38C966B200C9 _3ADC7B74022D38C966B200E7">
+ <ownedEnd xmi:id="_3ADC7B74022D38C966B200E7" type="_3ADC7B74022D38C965F70052" association="_3ADC7B74022D38C966AF03DC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJlmRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlmBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C968E002AC" name="A_object_readLinkObjectEndAction" memberEnd="_3ADC7B74022D38C968E2011F _3ADC7B74022D38C968E20147">
+ <ownedEnd xmi:id="_3ADC7B74022D38C968E20147" type="_3ADC7B74022D38C968BA0212" association="_3ADC7B74022D38C968E002AC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJloxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlohTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C9690800B5" name="A_end_readLinkObjectEndAction" memberEnd="_3ADC7B74022D38C969090139 _3ADC7B74022D38C969090157">
+ <ownedEnd xmi:id="_3ADC7B74022D38C969090157" type="_3ADC7B74022D38C968BA0212" association="_3ADC7B74022D38C9690800B5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJlrRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlrBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CD5AD0098" name="A_result_readLinkObjectEndAction" memberEnd="_3ADC7B74022D395CD5AF009B _3ADC7B74022D395CD5AF0145">
+ <ownedEnd xmi:id="_3ADC7B74022D395CD5AF0145" type="_3ADC7B74022D38C968BA0212" association="_3ADC7B74022D395CD5AD0098">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stJltxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stJlthTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C9699F00D0" name="A_object_readLinkObjectEndQualifierAction" memberEnd="_3ADC7B74022D38C969A203C4 _3ADC7B74022D38C969A203E2">
+ <ownedEnd xmi:id="_3ADC7B74022D38C969A203E2" type="_3ADC7B74022D38C9697C024D" association="_3ADC7B74022D38C9699F00D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSviRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSviBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CD5C602EC" name="A_result_readLinkObjectEndQualifierAction" memberEnd="_3ADC7B74022D395CD5C7010D _3ADC7B74022D395CD5C70199">
+ <ownedEnd xmi:id="_3ADC7B74022D395CD5C70199" type="_3ADC7B74022D38C9697C024D" association="_3ADC7B74022D395CD5C602EC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvkxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvkhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C96A0A0283" name="A_qualifier_readLinkObjectEndQualifierAction" memberEnd="_3ADC7B74022D38C96A0F006D _3ADC7B74022D38C96A0F009F">
+ <ownedEnd xmi:id="_3ADC7B74022D38C96A0F009F" type="_3ADC7B74022D38C9697C024D" association="_3ADC7B74022D38C96A0A0283">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvnRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvnBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38D7E68103B2" name="A_result_createLinkObjectAction" memberEnd="_3ADC7B74022D38D7E682031D _3ADC7B74022D38D7E6820346">
+ <ownedEnd xmi:id="_3ADC7B74022D38D7E6820346" type="_3ADC7B74022D38DA9AA00136" association="_3ADC7B74022D38D7E68103B2">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stSvpxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stSvphTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF3A5BD03D8" name="A_reclassifyObjectAction_object" memberEnd="_3ADC7B74022D3DF3A5BE02AF _3ADC7B74022D3DF3A5BE02BF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF3A5BE02AF" type="_3ADC7B74022D38DBEACB029B" association="_3ADC7B74022D3DF3A5BD03D8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QGbXYU-4EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QGbXYE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF142BA002E" name="A_result_acceptEventAction" memberEnd="_3ADC7B74022D3DF142BB00AB _3ADC7B74022D3DF142BB0138">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF142BB0138" type="_3ADC7B74022D3DF1414A01C5" association="_3ADC7B74022D3DF142BA002E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mbH98U-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mbH98E-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA855603D8" name="A_returnInformation_acceptCallAction" memberEnd="_3ADC7B74022D3DFA85570271 _3ADC7B74022D3DFA855702AF">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA855702AF" type="_3ADC7B74022D3DFA834C0399" association="_3ADC7B74022D3DFA855603D8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oIzAsU-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oIzAsE-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFA8A2C02AF" name="A_replyToCall_replyAction" memberEnd="_3ADC7B74022D3DFA8A2D032C _3ADC7B74022D3DFA8A2D034B">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFA8A2D034B" type="_3ADC7B74022D3DFA89FE003E" association="_3ADC7B74022D3DFA8A2C02AF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wuWhQU-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wuWhQE-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F19FE00355" name="A_result_unmarshallAction" memberEnd="_3ADC7B74022D40F19FE601AF _3ADC7B74022D40F19FE601E1">
+ <ownedEnd xmi:id="_3ADC7B74022D40F19FE601E1" type="_3ADC7B74022D40F19F8103B3" association="_3ADC7B74022D40F19FE00355">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmRmRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmRmBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F1A01D0104" name="A_unmarshallType_unmarshallAction" memberEnd="_3ADC7B74022D40F1A01F0107 _3ADC7B74022D40F1A01F0157">
+ <ownedEnd xmi:id="_3ADC7B74022D40F1A01F0157" type="_3ADC7B74022D40F19F8103B3" association="_3ADC7B74022D40F1A01D0104">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbdRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbdBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D413212B201B1" name="A_object_unmarshallAction" memberEnd="_3ADC7B74022D413212B50086 _3ADC7B74022D413212B500A4">
+ <ownedEnd xmi:id="_3ADC7B74022D413212B500A4" type="_3ADC7B74022D40F19F8103B3" association="_3ADC7B74022D413212B201B1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbfxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbfhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D413213190090" name="A_returnInformation_replyAction" memberEnd="_3ADC7B74022D4132131A0369 _3ADC7B74022D4132131A0387">
+ <ownedEnd xmi:id="_3ADC7B74022D4132131A0387" type="_3ADC7B74022D3DFA89FE003E" association="_3ADC7B74022D413213190090">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbiRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbiBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4132136F01C0" name="A_replyValue_replyAction" memberEnd="_3ADC7B74022D413213720229 _3ADC7B74022D41321372023D">
+ <ownedEnd xmi:id="_3ADC7B74022D41321372023D" type="_3ADC7B74022D3DFA89FE003E" association="_3ADC7B74022D4132136F01C0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stvbkxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stvbkhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4162A84F00F1" name="A_trigger_acceptEventAction" memberEnd="_3ADC7B74022D4162A85001D0 _3ADC7B74022D4162A85001D2">
+ <ownedEnd xmi:id="_3ADC7B74022D4162A85001D2" type="_3ADC7B74022D3DF1414A01C5" association="_3ADC7B74022D4162A84F00F1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_st5MdxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_st5MdhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_U4on8GdiEdqCCpdUvbQY5w" name="A_result_reduceAction" memberEnd="_U4on8WdiEdqCCpdUvbQY5w _U4on8mdiEdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_U4on8mdiEdqCCpdUvbQY5w" type="_3M4wwGdhEdqCCpdUvbQY5w" association="_U4on8GdiEdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b43qsU-4EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b43qsE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Y5-WcGdiEdqCCpdUvbQY5w" name="A_collection_reduceAction" memberEnd="_Y5-WcWdiEdqCCpdUvbQY5w _Y6IHcGdiEdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_Y6IHcGdiEdqCCpdUvbQY5w" type="_3M4wwGdhEdqCCpdUvbQY5w" association="_Y5-WcGdiEdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_amxJoU-4EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_amxJoE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_DCUGoGdiEdqCCpdUvbQY5w" name="A_reducer_reduceAction" memberEnd="_DCUGoWdiEdqCCpdUvbQY5w _DCUGomdiEdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_DCUGomdiEdqCCpdUvbQY5w" type="_3M4wwGdhEdqCCpdUvbQY5w" association="_DCUGoGdiEdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gfnzYU-4EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gfnzYE-4EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DF1252E035B" name="IntermediateActions">
+ <packageImport xmi:id="_3ADC7B74022D4162B99E012D" importedPackage="_3ADC7B74022D410C264F010C"/>
+ <packageImport xmi:id="_Es5cAD9IEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_HTmfwBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745CA3B0096" name="CreateObjectAction">
+ <ownedComment xmi:id="_suV4ZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745CA3B0096">
+ <body>A create object action is an action that creates an object that conforms to a statically specified classifier and puts it on an output pin at runtime.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_suV4bRTaEdqZu-3Jy1-uYg" name="classifier_not_abstract" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_suV4aRTaEdqZu-3Jy1-uYg" annotatedElement="_suV4bRTaEdqZu-3Jy1-uYg">
+ <body>The classifier cannot be abstract.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suV4bhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not (self.classifier.isAbstract = #true)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suV4dhTaEdqZu-3Jy1-uYg" name="classifier_not_association_class" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_suV4chTaEdqZu-3Jy1-uYg" annotatedElement="_suV4dhTaEdqZu-3Jy1-uYg">
+ <body>The classifier cannot be an association class</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suV4dxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.classifier.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suV4fxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_suV4exTaEdqZu-3Jy1-uYg" annotatedElement="_suV4fxTaEdqZu-3Jy1-uYg">
+ <body>The type of the result pin must be the same as the classifier of the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCUBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.classifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sufCWBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3745CA3B0096">
+ <ownedComment xmi:id="_sufCVBTaEdqZu-3Jy1-uYg" annotatedElement="_sufCWBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCWRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A4A035A" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D381D094D0268" name="classifier" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D381D094C0361">
+ <ownedComment xmi:id="_swueABTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D381D094D0268">
+ <body>Classifier to be instantiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueAxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38D6B21303BC" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D38D6B2130145">
+ <ownedComment xmi:id="_swueChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38D6B21303BC">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueDhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueDRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745CA280212" name="DestroyObjectAction">
+ <ownedComment xmi:id="_sufCXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745CA280212">
+ <body>A destroy object action is an action that destroys objects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sufCZhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3745CA280212">
+ <ownedComment xmi:id="_sufCYhTaEdqZu-3Jy1-uYg" annotatedElement="_sufCZhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCZxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.target.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sufCbxTaEdqZu-3Jy1-uYg" name="no_type" constrainedElement="_3ADC7B74022D3745CA280212">
+ <ownedComment xmi:id="_sufCaxTaEdqZu-3Jy1-uYg" annotatedElement="_sufCbxTaEdqZu-3Jy1-uYg">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sufCcBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.target.type->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A4D0336" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D408A5B510111" name="isDestroyLinks">
+ <ownedComment xmi:id="_sufCdBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D408A5B510111">
+ <body>Specifies whether links in which the object participates are destroyed along with the object.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HT6BwBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D408A5B5D0399" name="isDestroyOwnedObjects">
+ <ownedComment xmi:id="_sufCeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D408A5B5D0399">
+ <body>Specifies whether objects owned by the object are destroyed along with the object.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HT6BwRTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D37497F3F02E4" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D37497F3E0320">
+ <ownedComment xmi:id="_swueFBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D37497F3F02E4">
+ <body>The input pin providing the object to be destroyed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueGBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueFxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3AA55DF5017C" name="TestIdentityAction">
+ <ownedComment xmi:id="_suozVBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AA55DF5017C">
+ <body>A test identity action is an action that tests if two values are identical objects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_suozXRTaEdqZu-3Jy1-uYg" name="no_type" constrainedElement="_3ADC7B74022D3AA55DF5017C">
+ <ownedComment xmi:id="_suozWRTaEdqZu-3Jy1-uYg" annotatedElement="_suozXRTaEdqZu-3Jy1-uYg">
+ <body>The input pins have no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suozXhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suozZhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3AA55DF5017C">
+ <ownedComment xmi:id="_suozYhTaEdqZu-3Jy1-uYg" annotatedElement="_suozZhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pins is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suozZxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.first.multiplicity.is(1,1)&#xA;and self.second.multiplicity.is(1,1)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_suozbxTaEdqZu-3Jy1-uYg" name="result_is_boolean" constrainedElement="_3ADC7B74022D3AA55DF5017C">
+ <ownedComment xmi:id="_suozaxTaEdqZu-3Jy1-uYg" annotatedElement="_suozbxTaEdqZu-3Jy1-uYg">
+ <body>The type of the result is Boolean.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_suozcBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type.oclIsTypeOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A5201B7" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5C7280139" name="first" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3CB5C7270200">
+ <ownedComment xmi:id="_swueHhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5C7280139">
+ <body>Gives the pin on which an object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3n8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n8hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5C7300343" name="second" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3CB5C72F02DE">
+ <ownedComment xmi:id="_sw3n-RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5C7300343">
+ <body>Gives the pin on which an object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3n_RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n_BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CB5C6940046" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3CB5C6930149">
+ <ownedComment xmi:id="_sw3oAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5C6940046">
+ <body>Tells whether the two input objects are identical.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oBxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oBhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38C96A5A00A7" name="ReadSelfAction">
+ <ownedComment xmi:id="_sux9QRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C96A5A00A7">
+ <body>A read self action is an action that retrieves the host object of an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sux9ShTaEdqZu-3Jy1-uYg" name="contained" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9RhTaEdqZu-3Jy1-uYg" annotatedElement="_sux9ShTaEdqZu-3Jy1-uYg">
+ <body>The action must be contained in an behavior that has a host classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9SxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.context->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sux9UxTaEdqZu-3Jy1-uYg" name="not_static" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9TxTaEdqZu-3Jy1-uYg" annotatedElement="_sux9UxTaEdqZu-3Jy1-uYg">
+ <body>If the action is contained in an behavior that is acting as the body of a method, then the operation of the method must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9VBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sux9XBTaEdqZu-3Jy1-uYg" name="type" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9WBTaEdqZu-3Jy1-uYg" annotatedElement="_sux9XBTaEdqZu-3Jy1-uYg">
+ <body>The type of the result output pin is the host classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9XRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.context</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sux9ZRTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38C96A5A00A7">
+ <ownedComment xmi:id="_sux9YRTaEdqZu-3Jy1-uYg" annotatedElement="_sux9ZRTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sux9ZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A55039C" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CFBA10125" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CFBA0032C">
+ <ownedComment xmi:id="_sw3oDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CFBA10125">
+ <body>Gives the output pin on which the hosting object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oERTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oEBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DC060A01A0" name="StructuralFeatureAction" isAbstract="true">
+ <ownedComment xmi:id="_su7uQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC060A01A0">
+ <body>StructuralFeatureAction is an abstract class for all structural feature actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_su7uShTaEdqZu-3Jy1-uYg" name="not_static" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uRhTaEdqZu-3Jy1-uYg" annotatedElement="_su7uShTaEdqZu-3Jy1-uYg">
+ <body>The structural feature must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uSxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.structuralFeature.isStatic = #false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_su7uUxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uTxTaEdqZu-3Jy1-uYg" annotatedElement="_su7uUxTaEdqZu-3Jy1-uYg">
+ <body>The type of the object input pin is the same as the classifier of the object passed on this pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_su7uXBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uWBTaEdqZu-3Jy1-uYg" annotatedElement="_su7uXBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin must be 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_su7uZRTaEdqZu-3Jy1-uYg" name="visibility" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uYRTaEdqZu-3Jy1-uYg" annotatedElement="_su7uZRTaEdqZu-3Jy1-uYg">
+ <body>Visibility of structural feature must allow access to the object performing the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_su7uZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let host : Classifier = self.context in&#xA;self.structuralFeature.visibility = #public&#xA;or host = self.structuralFeature.featuringClassifier.type&#xA;or (self.structuralFeature.visibility = #protected and host.allSupertypes&#xA;->includes(self.structuralFeature.featuringClassifier.type)))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svFfQxTaEdqZu-3Jy1-uYg" name="one_featuring_classifier" constrainedElement="_3ADC7B74022D38DC060A01A0">
+ <ownedComment xmi:id="_su7uahTaEdqZu-3Jy1-uYg" annotatedElement="_svFfQxTaEdqZu-3Jy1-uYg">
+ <body>A structural feature has exactly one featuringClassifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svFfRBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.structuralFeature.featuringClassifier->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A1500E7" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DC08B8027B" name="structuralFeature" type="_3ADC7B74022D3CAB08ED000D" association="_3ADC7B74022D38DC08B80279">
+ <ownedComment xmi:id="_sxBY8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC08B8027B">
+ <body>Structural feature to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBY9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBY9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DC073A03E2" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D38DC073A0161">
+ <ownedComment xmi:id="_sxBY-hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC073A03E2">
+ <body>Gives the input pin from which the object whose structural feature is to be read or written is obtained.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBY_hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBY_RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D395CE0A502DA" name="ReadStructuralFeatureAction">
+ <ownedComment xmi:id="_svFfSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CE0A502DA">
+ <body>A read structural feature action is a structural feature action that retrieves the values of a structural feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svFfURTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D395CE0A502DA">
+ <ownedComment xmi:id="_svFfTRTaEdqZu-3Jy1-uYg" annotatedElement="_svFfURTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of the result output pin are the same as the type and ordering of the structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svFfUhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type = self.structuralFeature.type&#xA;and self.result.ordering = self.structuralFeature.ordering&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svFfWhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D395CE0A502DA">
+ <ownedComment xmi:id="_svFfVhTaEdqZu-3Jy1-uYg" annotatedElement="_svFfWhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the structural feature must be compatible with the multiplicity of the output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svFfWxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D395CE0B10255" general="_3ADC7B74022D38DC060A01A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CE0B3033E" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CE0B30154">
+ <ownedComment xmi:id="_sxBZBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CE0B3033E">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi4hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D380F43690262" name="WriteStructuralFeatureAction" isAbstract="true">
+ <ownedComment xmi:id="_svFfXxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D380F43690262">
+ <body>WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svOpMxTaEdqZu-3Jy1-uYg" name="input_pin" constrainedElement="_3ADC7B74022D380F43690262">
+ <ownedComment xmi:id="_svFfZBTaEdqZu-3Jy1-uYg" annotatedElement="_svOpMxTaEdqZu-3Jy1-uYg">
+ <body>The type input pin is the same as the classifier of the structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svOpNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.structuralFeature.featuringClassifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svOpPBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D380F43690262">
+ <ownedComment xmi:id="_svOpOBTaEdqZu-3Jy1-uYg" annotatedElement="_svOpPBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svOpPRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38DC062A00DE" general="_3ADC7B74022D38DC060A01A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39073965015A" name="value" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3907396402D5">
+ <ownedComment xmi:id="_sxKi6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39073965015A">
+ <body>Value to be added or removed from the structural feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A78723F03E1" name="ClearStructuralFeatureAction">
+ <ownedComment xmi:id="_svOpQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78723F03E1">
+ <body>A clear structural feature action is a structural feature action that removes all values of a structural feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3A7872B7039E" general="_3ADC7B74022D38DC060A01A0"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A7870670003" name="RemoveStructuralFeatureValueAction">
+ <ownedComment xmi:id="_svYaMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A7870670003">
+ <body>A remove structural feature value action is a write structural feature action that removes values from structural features.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svYaORTaEdqZu-3Jy1-uYg" name="non_unique_removal" constrainedElement="_3ADC7B74022D3A7870670003">
+ <ownedComment xmi:id="_svYaNRTaEdqZu-3Jy1-uYg" annotatedElement="_svYaORTaEdqZu-3Jy1-uYg">
+ <body>Actions removing a value from ordered nonunique structural features must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the action has no removeAt input pin.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svYaOhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A7872050103" general="_3ADC7B74022D380F43690262"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B0860159" name="isRemoveDuplicates">
+ <ownedComment xmi:id="_svYaPhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B0860159">
+ <body>Specifies whether to remove duplicates of the value in nonunique structural features.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUM8sBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B01C03C3" name="removeAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D40F9B01A029E">
+ <ownedComment xmi:id="_sxw_4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B01C03C3">
+ <body>Specifies the position of an existing value to remove in ordered nonunique structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_5RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_5BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787176007B" name="AddStructuralFeatureValueAction">
+ <ownedComment xmi:id="_svYaQxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787176007B">
+ <body>An add structural feature value action is a write structural feature action for adding values to a structural feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svYaTBTaEdqZu-3Jy1-uYg" name="unlimited_natural_and_multiplicity" constrainedElement="_3ADC7B74022D3A787176007B">
+ <ownedComment xmi:id="_svYaSBTaEdqZu-3Jy1-uYg" annotatedElement="_svYaTBTaEdqZu-3Jy1-uYg">
+ <body>Actions adding a value to ordered structural features must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svYaTRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let insertAtPins : Collection = self.insertAt in&#xA;if self.structuralFeature.isOrdered = #false&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin= insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A7871820371" general="_3ADC7B74022D380F43690262"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A78A64D0112" name="isReplaceAll">
+ <ownedComment xmi:id="_svYaURTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78A64D0112">
+ <body>Specifies whether existing values of the structural feature of the object should be removed before adding the new value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUWGoBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3960D15E0004" name="insertAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3960D15B0367">
+ <ownedComment xmi:id="_sxKi8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3960D15E0004">
+ <body>Gives the position at which to insert a new value or move an existing value in ordered structural features. The type of the pin is UnlimitedNatural, but the value cannot be zero. This pin is omitted for unordered structural features.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi9hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38DC038F0193" name="LinkAction" isAbstract="true">
+ <ownedComment xmi:id="_sviLNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC038F0193">
+ <body>LinkAction is an abstract class for all link actions that identify their links by the objects at the ends of the links and by the qualifiers at ends of the links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sviLPRTaEdqZu-3Jy1-uYg" name="same_association" constrainedElement="_3ADC7B74022D38DC038F0193">
+ <ownedComment xmi:id="_sviLORTaEdqZu-3Jy1-uYg" annotatedElement="_sviLPRTaEdqZu-3Jy1-uYg">
+ <body>The association ends of the link end data must all be from the same association and include all and only the association ends of that association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sviLPhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endData->collect(end) = self.association()->collect(connection))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sviLRhTaEdqZu-3Jy1-uYg" name="not_static" constrainedElement="_3ADC7B74022D38DC038F0193">
+ <ownedComment xmi:id="_sviLQhTaEdqZu-3Jy1-uYg" annotatedElement="_sviLRhTaEdqZu-3Jy1-uYg">
+ <body>The association ends of the link end data must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sviLRxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sviLTxTaEdqZu-3Jy1-uYg" name="same_pins" constrainedElement="_3ADC7B74022D38DC038F0193">
+ <ownedComment xmi:id="_sviLSxTaEdqZu-3Jy1-uYg" annotatedElement="_sviLTxTaEdqZu-3Jy1-uYg">
+ <body>The input pins of the action are the same as the pins of the link end data and insertion pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sviLUBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.input->asSet() =&#xA;let ledpins : Set = self.endData->collect(value) in&#xA;if self.oclIsKindOf(LinkEndCreationData)&#xA;then ledpins->union(self.endData.oclAsType(LinkEndCreationData).insertAt)&#xA;else ledpins&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40A35011F" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38DC04A0013B" name="endData" type="_3ADC7B74022D37497C230140" aggregation="composite" association="_3ADC7B74022D38DC049F0298">
+ <ownedComment xmi:id="_sxKi_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38DC04A0013B">
+ <body>Data identifying one end of a link by the objects on its ends and qualifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKjARTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKjABTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_TWk18TanEdqq1tCaRkgBQQ" name="inputValue" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_TWk18DanEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_JGDp8EDPEdqY8ZY2jW2jkQ" annotatedElement="_TWk18TanEdqq1tCaRkgBQQ">
+ <body>Pins taking end objects and qualifier values as input.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TWk19DanEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TWk18zanEdqq1tCaRkgBQQ" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300909101D4" name="association" isQuery="true" bodyCondition="_svrVJRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_svrVIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300909101D4">
+ <body>The association operates on LinkAction. It returns the association of the action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svrVJRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300909101D4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVJhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.endData->asSequence().first().end.association</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_svrVJBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAB1DD70016" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D37497C230140" name="LinkEndData">
+ <ownedComment xmi:id="_svrVKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D37497C230140">
+ <body>A link end data is not an action. It is an element that identifies links. It identifies one end of a link to be read or written by the children of a link action. A link cannot be passed as a runtime value to or from an action. Instead, a link is identified by its end objects and qualifier values, if any. This requires more than one piece of data, namely, the statically-specified end in the user model, the object on the end, and the qualifier values for that end, if any. These pieces are brought together around a link end data. Each association end is identified separately with an instance of the LinkEndData class.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_svrVMxTaEdqZu-3Jy1-uYg" name="property_is_association_end" constrainedElement="_3ADC7B74022D37497C230140">
+ <ownedComment xmi:id="_svrVLxTaEdqZu-3Jy1-uYg" annotatedElement="_svrVMxTaEdqZu-3Jy1-uYg">
+ <body>The property must be an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.association->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svrVOxTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D37497C230140">
+ <ownedComment xmi:id="_svrVOBTaEdqZu-3Jy1-uYg" annotatedElement="_svrVOxTaEdqZu-3Jy1-uYg">
+ <body>The type of the end object input pin is the same as the type of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVPBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.end.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_svrVRBTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D37497C230140">
+ <ownedComment xmi:id="_svrVQBTaEdqZu-3Jy1-uYg" annotatedElement="_svrVRBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the end object input pin must be 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_svrVRRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E033D670182" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D38C965AE012A" name="value" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D38C965AD0164">
+ <ownedComment xmi:id="_sxKjBxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38C965AE012A">
+ <body>Input pin that provides the specified object for the given end. This pin is omitted if the link-end data specifies an 'open' end for reading.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT4xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT4hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D0CD47D03BA" name="end" type="_3ADC7B74022D3CAB1D790101" association="_3ADC7B74022D3D0CD47D0139">
+ <ownedComment xmi:id="_sxUT6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0CD47D03BA">
+ <body>Association end for which this link-end data specifies values.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D395CD503027E" name="ReadLinkAction">
+ <ownedComment xmi:id="_sv1GIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD503027E">
+ <body>A read link action is a link action that navigates across associations to retrieve objects on one end.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sv1GKhTaEdqZu-3Jy1-uYg" name="one_open_end" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv1GJhTaEdqZu-3Jy1-uYg" annotatedElement="_sv1GKhTaEdqZu-3Jy1-uYg">
+ <body>Exactly one link-end data specification (the 'open' end) must not have an end object input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv1GKxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endData->select(ed | ed.value->size() = 0)->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv1GMxTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv1GLxTaEdqZu-3Jy1-uYg" annotatedElement="_sv1GMxTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of the result output pin are same as the type and ordering of the open association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv1GNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;self.result.type = openend.type&#xA;and self.result.ordering = openend.ordering&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv-3JBTaEdqZu-3Jy1-uYg" name="compatible_multiplicity" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv-3IBTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3JBTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the open association end must be compatible with the multiplicity of the result output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3JRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.multiplicity.compatibleWith(self.result.multiplicity)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv-3LRTaEdqZu-3Jy1-uYg" name="navigable_open_end" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv-3KRTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3LRTaEdqZu-3Jy1-uYg">
+ <body>The open end must be navigable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3LhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.isNavigable()&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sv-3NhTaEdqZu-3Jy1-uYg" name="visibility" constrainedElement="_3ADC7B74022D395CD503027E">
+ <ownedComment xmi:id="_sv-3MhTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3NhTaEdqZu-3Jy1-uYg">
+ <body>Visibility of the open end must allow access to the object performing the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3NxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let host : Classifier = self.context in&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.visibility = #public&#xA;or self.endData->exists(oed | not oed.end = openend&#xA;and (host = oed.end.participant&#xA;or (openend.visibility = #protected&#xA;and host.allSupertypes->includes(oed.end.participant))))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D395CD51203AC" general="_3ADC7B74022D38DC038F0193"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D395CD52102DB" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D395CD521012D">
+ <ownedComment xmi:id="_sxUT8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D395CD52102DB">
+ <body>The pin on which are put the objects participating in the association at the end not specified by the inputs.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D393AD8B602EE" name="LinkEndCreationData">
+ <ownedComment xmi:id="_sv-3OxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D393AD8B602EE">
+ <body>A link end creation data is not an action. It is an element that identifies links. It identifies one end of a link to be created by a create link action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sv-3RBTaEdqZu-3Jy1-uYg" name="create_link_action" constrainedElement="_3ADC7B74022D393AD8B602EE">
+ <ownedComment xmi:id="_sv-3QBTaEdqZu-3Jy1-uYg" annotatedElement="_sv-3RBTaEdqZu-3Jy1-uYg">
+ <body>LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sv-3RRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.LinkAction.oclIsKindOf(CreateLinkAction)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swIBFRTaEdqZu-3Jy1-uYg" name="single_input_pin" constrainedElement="_3ADC7B74022D393AD8B602EE">
+ <ownedComment xmi:id="_swIBERTaEdqZu-3Jy1-uYg" annotatedElement="_swIBFRTaEdqZu-3Jy1-uYg">
+ <body>Link end creation data for ordered association ends must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swIBFhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let insertAtPins : Collection = self.insertAt in&#xA;if self.end.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAts->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D38DA8D750084" general="_3ADC7B74022D37497C230140"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A785E8003E3" name="isReplaceAll">
+ <ownedComment xmi:id="_swIBGhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A785E8003E3">
+ <body>Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUf3oBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3960C17401FA" name="insertAt" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D3960C173020D">
+ <ownedComment xmi:id="_sxUT_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3960C17401FA">
+ <body>Specifies where the new link should be inserted for ordered association ends, or where an existing link should be moved to. The type of the input is UnlimitedNatural, but the input cannot be zero. This pin is omitted for association ends that are not ordered.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUUARTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUUABTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745C9F20140" name="CreateLinkAction">
+ <ownedComment xmi:id="_swIBHxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745C9F20140">
+ <body>A create link action is a write link action for creating links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swIBKBTaEdqZu-3Jy1-uYg" name="association_not_abstract" constrainedElement="_3ADC7B74022D3745C9F20140">
+ <ownedComment xmi:id="_swIBJBTaEdqZu-3Jy1-uYg" annotatedElement="_swIBKBTaEdqZu-3Jy1-uYg">
+ <body>The association cannot be an abstract classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swIBKRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.association().isAbstract = #false</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3907702B036F" general="_3ADC7B74022D39076FFD0233"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D393AD8C30256" name="endData" type="_3ADC7B74022D393AD8B602EE" aggregation="composite" redefinedProperty="_3ADC7B74022D38DC04A0013B" association="_3ADC7B74022D393AD8C202F5">
+ <ownedComment xmi:id="_sxUUBxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D393AD8C30256">
+ <body>Specifies ends of association and inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE4xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE4hTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3745CA190280" name="DestroyLinkAction">
+ <ownedComment xmi:id="_swIBLRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3745CA190280">
+ <body>A destroy link action is a write link action that destroys links and link objects.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3907702E02A1" general="_3ADC7B74022D39076FFD0233"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B1D1008D" name="endData" type="_3ADC7B74022D40F9B109007B" aggregation="composite" redefinedProperty="_3ADC7B74022D38DC04A0013B" association="_3ADC7B74022D40F9B1CF0008">
+ <ownedComment xmi:id="_sxw_9RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B1D1008D">
+ <body>Specifies ends of association and inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w0xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w0hTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D39076FFD0233" name="WriteLinkAction" isAbstract="true">
+ <ownedComment xmi:id="_swRyExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39076FFD0233">
+ <body>WriteLinkAction is an abstract class for link actions that create and destroy links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_nWosAEbvEdq0rbStTpEubg" name="allow_access" constrainedElement="_3ADC7B74022D39076FFD0233">
+ <ownedComment xmi:id="_qqPKwEbvEdq0rbStTpEubg" annotatedElement="_nWosAEbvEdq0rbStTpEubg">
+ <body>The visibility of at least one end must allow access to the class using the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_nWosAUbvEdq0rbStTpEubg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D395CE59D00D0" general="_3ADC7B74022D38DC038F0193"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787BA00221" name="ClearAssociationAction">
+ <ownedComment xmi:id="_swRyGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787BA00221">
+ <body>A clear association action is an action that destroys all links of an association in which a particular object participates.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swRyIRTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D3A787BA00221">
+ <ownedComment xmi:id="_swRyHRTaEdqZu-3Jy1-uYg" annotatedElement="_swRyIRTaEdqZu-3Jy1-uYg">
+ <body>The type of the input pin must be the same as the type of at least one of the association ends of the association.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swRyIhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.association->exists(end.type = self.object.type)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swRyKhTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D3A787BA00221">
+ <ownedComment xmi:id="_swRyJhTaEdqZu-3Jy1-uYg" annotatedElement="_swRyKhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swRyKxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40B1600AB" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A78829900DD" name="object" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3A78829802EF">
+ <ownedComment xmi:id="_sxeE6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A78829900DD">
+ <body>Gives the input pin from which is obtained the object whose participation in the association is to be cleared.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE7RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE7BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A787C7500FB" name="association" type="_3ADC7B74022D3CAB1DD70016" association="_3ADC7B74022D3A787C74030C">
+ <ownedComment xmi:id="_sxeE8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787C7500FB">
+ <body>Association to be cleared.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE9xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE9hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B68A64C002F" name="BroadcastSignalAction">
+ <ownedComment xmi:id="_swRyLxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A64C002F">
+ <body>A broadcast signal action is an action that transmits a signal instance to all the potential target objects in the system, which may cause the firing of a state machine transitions or the execution of associated activities of a target object. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately after the signals are sent out. It does not wait for receipt. Any reply messages are ignored and are not transmitted to the requestor.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swa8AxTaEdqZu-3Jy1-uYg" name="number_and_order" constrainedElement="_3ADC7B74022D3B68A64C002F">
+ <ownedComment xmi:id="_swRyNBTaEdqZu-3Jy1-uYg" annotatedElement="_swa8AxTaEdqZu-3Jy1-uYg">
+ <body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swa8BBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swa8DBTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3B68A64C002F">
+ <ownedComment xmi:id="_swa8CBTaEdqZu-3Jy1-uYg" annotatedElement="_swa8DBTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swa8DRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B68A66901E0" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B68A6DF00F9" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D3B68A6DE01E8">
+ <ownedComment xmi:id="_sxw_1xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A6DF00F9">
+ <body>The specification of signal object transmitted to the target objects.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_2xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_2hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D63D34B001F" name="SendObjectAction">
+ <ownedComment xmi:id="_swa8ERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D63D34B001F">
+ <body>A send object action is an action that transmits an object to the target object, where it may invoke behavior such as the firing of state machine transitions or the execution of an activity. The value of the object is available to the execution of invoked behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D63D6D602CE" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D63D6EC034B" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3D63D6EA030D">
+ <ownedComment xmi:id="_sxnO1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D63D6EC034B">
+ <body>The target object to which the object is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxnO2BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxnO1xTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D63D78001E4" name="request" type="_3ADC7B74022D384B237E021A" aggregation="composite" redefinedProperty="_3ADC7B74022D3CA72E450074" association="_3ADC7B74022D3D63D77F0213">
+ <ownedComment xmi:id="_sxnO3BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D63D78001E4">
+ <body>The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_0xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_0hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40F9B109007B" name="LinkEndDestructionData">
+ <ownedComment xmi:id="_swa8FhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B109007B">
+ <body>A link end destruction data is not an action. It is an element that identifies links. It identifies one end of a link to be destroyed by destroy link action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swa8HxTaEdqZu-3Jy1-uYg" name="destroy_link_action" constrainedElement="_3ADC7B74022D40F9B109007B">
+ <ownedComment xmi:id="_swa8GxTaEdqZu-3Jy1-uYg" annotatedElement="_swa8HxTaEdqZu-3Jy1-uYg">
+ <body>LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swa8IBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swktAxTaEdqZu-3Jy1-uYg" name="unlimited_natural_and_multiplicity" constrainedElement="_3ADC7B74022D40F9B109007B">
+ <ownedComment xmi:id="_swa8JBTaEdqZu-3Jy1-uYg" annotatedElement="_swktAxTaEdqZu-3Jy1-uYg">
+ <body>LinkEndDestructionData for ordered nonunique association ends must have a single destroyAt input pin if isDestroyDuplicates is false. It must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no input pin for the removal position.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swktBBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D40F9B18A0167" general="_3ADC7B74022D37497C230140"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B147032D" name="isDestroyDuplicates">
+ <ownedComment xmi:id="_swktCBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B147032D">
+ <body>Specifies whether to destroy duplicates of the value in nonunique association ends.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HUpooBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B19B036A" name="destroyAt" type="_3ADC7B74022D384B237E021A" association="_3ADC7B74022D40F9B19902E5">
+ <ownedComment xmi:id="_sxw_6xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B19B036A">
+ <body>Specifies the position of an existing link to be destroyed in ordered nonunique association ends. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_7xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_7hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40FAD18F0202" name="ValueSpecificationAction">
+ <ownedComment xmi:id="_swktDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40FAD18F0202">
+ <body>A value specification action is an action that evaluates a value specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_swktFhTaEdqZu-3Jy1-uYg" name="compatible_type" constrainedElement="_3ADC7B74022D40FAD18F0202">
+ <ownedComment xmi:id="_swktEhTaEdqZu-3Jy1-uYg" annotatedElement="_swktFhTaEdqZu-3Jy1-uYg">
+ <body>The type of value specification must be compatible with the type of the result pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swktFxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_swktHxTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D40FAD18F0202">
+ <ownedComment xmi:id="_swktGxTaEdqZu-3Jy1-uYg" annotatedElement="_swktHxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the result pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_swktIBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D40FAD24503D0" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41B0DA9403C3" name="value" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" association="_3ADC7B74022D41B0DA9400E8">
+ <ownedComment xmi:id="_sx6w2RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41B0DA9403C3">
+ <body>Value specification to be evaluated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w3RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w3BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40FAD236031A" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D40FAD23502E7">
+ <ownedComment xmi:id="_sx6w4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40FAD236031A">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w5xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w5hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D381D094C0361" name="A_classifier_createObjectAction" memberEnd="_3ADC7B74022D381D094D0268 _3ADC7B74022D381D094D0286">
+ <ownedEnd xmi:id="_3ADC7B74022D381D094D0286" type="_3ADC7B74022D3745CA3B0096" association="_3ADC7B74022D381D094C0361">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueBxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueBhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38D6B2130145" name="A_result_createObjectAction" memberEnd="_3ADC7B74022D38D6B21303BC _3ADC7B74022D38D6B21303DA">
+ <ownedEnd xmi:id="_3ADC7B74022D38D6B21303DA" type="_3ADC7B74022D3745CA3B0096" association="_3ADC7B74022D38D6B2130145">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueERTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueEBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D37497F3E0320" name="A_target_destroyObjectAction" memberEnd="_3ADC7B74022D37497F3F02E4 _3ADC7B74022D37497F3F02E5">
+ <ownedEnd xmi:id="_3ADC7B74022D37497F3F02E5" type="_3ADC7B74022D3745CA280212" association="_3ADC7B74022D37497F3E0320">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_swueGxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_swueGhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5C7270200" name="A_first_testIdentityAction" memberEnd="_3ADC7B74022D3CB5C7280139 _3ADC7B74022D3CB5C72801CF">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5C72801CF" type="_3ADC7B74022D3AA55DF5017C" association="_3ADC7B74022D3CB5C7270200">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3n9hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n9RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5C72F02DE" name="A_second_testIdentityAction" memberEnd="_3ADC7B74022D3CB5C7300343 _3ADC7B74022D3CB5C73003BB">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5C73003BB" type="_3ADC7B74022D3AA55DF5017C" association="_3ADC7B74022D3CB5C72F02DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oABTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3n_xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CB5C6930149" name="A_result_testIdentityAction" memberEnd="_3ADC7B74022D3CB5C6940046 _3ADC7B74022D3CB5C69400BE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CB5C69400BE" type="_3ADC7B74022D3AA55DF5017C" association="_3ADC7B74022D3CB5C6930149">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oChTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oCRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CFBA0032C" name="A_result_readSelfAction" memberEnd="_3ADC7B74022D395CFBA10125 _3ADC7B74022D395CFBA101CF">
+ <ownedEnd xmi:id="_3ADC7B74022D395CFBA101CF" type="_3ADC7B74022D38C96A5A00A7" association="_3ADC7B74022D395CFBA0032C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sw3oFBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw3oExTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DC08B80279" name="A_structuralFeatureAction_structuralFeature" memberEnd="_3ADC7B74022D38DC08B8027A _3ADC7B74022D38DC08B8027B">
+ <ownedEnd xmi:id="_3ADC7B74022D38DC08B8027A" type="_3ADC7B74022D38DC060A01A0" association="_3ADC7B74022D38DC08B80279">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBY8RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBY8BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DC073A0161" name="A_object_structuralFeatureAction" memberEnd="_3ADC7B74022D38DC073A03E2 _3ADC7B74022D38DC073B0036">
+ <ownedEnd xmi:id="_3ADC7B74022D38DC073B0036" type="_3ADC7B74022D38DC060A01A0" association="_3ADC7B74022D38DC073A0161">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxBZARTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxBZABTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CE0B30154" name="A_result_readStructuralFeatureAction" memberEnd="_3ADC7B74022D395CE0B3033E _3ADC7B74022D395CE0B303CB">
+ <ownedEnd xmi:id="_3ADC7B74022D395CE0B303CB" type="_3ADC7B74022D395CE0A502DA" association="_3ADC7B74022D395CE0B30154">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi5RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3907396402D5" name="A_value_writeStructuralFeatureAction" memberEnd="_3ADC7B74022D39073965015A _3ADC7B74022D390739650182">
+ <ownedEnd xmi:id="_3ADC7B74022D390739650182" type="_3ADC7B74022D380F43690262" association="_3ADC7B74022D3907396402D5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi8BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3960D15B0367" name="A_insertAt_addStructuralFeatureValueAction" memberEnd="_3ADC7B74022D3960D15E0004 _3ADC7B74022D3960D15E00F4">
+ <ownedEnd xmi:id="_3ADC7B74022D3960D15E00F4" type="_3ADC7B74022D3A787176007B" association="_3ADC7B74022D3960D15B0367">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKi-hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKi-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38DC049F0298" name="A_endData_linkAction" memberEnd="_3ADC7B74022D38DC04A0013B _3ADC7B74022D38DC04A0014F">
+ <ownedEnd xmi:id="_3ADC7B74022D38DC04A0014F" type="_3ADC7B74022D38DC038F0193" association="_3ADC7B74022D38DC049F0298">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxKjBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxKjAxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38C965AD0164" name="A_value_linkEndData" memberEnd="_3ADC7B74022D38C965AE012A _3ADC7B74022D38C965AE0148">
+ <ownedEnd xmi:id="_3ADC7B74022D38C965AE0148" type="_3ADC7B74022D37497C230140" association="_3ADC7B74022D38C965AD0164">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT5RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D0CD47D0139" name="A_end_linkEndData" memberEnd="_3ADC7B74022D3D0CD47D03BA _3ADC7B74022D3D0CD47E000E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D0CD47E000E" type="_3ADC7B74022D37497C230140" association="_3ADC7B74022D3D0CD47D0139">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT8BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D395CD521012D" name="A_result_readLinkAction" memberEnd="_3ADC7B74022D395CD52102DB _3ADC7B74022D395CD5210367">
+ <ownedEnd xmi:id="_3ADC7B74022D395CD5210367" type="_3ADC7B74022D395CD503027E" association="_3ADC7B74022D395CD521012D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUT-hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUT-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3960C173020D" name="A_insertAt_linkEndCreationData" memberEnd="_3ADC7B74022D3960C17401FA _3ADC7B74022D3960C17402CD">
+ <ownedEnd xmi:id="_3ADC7B74022D3960C17402CD" type="_3ADC7B74022D393AD8B602EE" association="_3ADC7B74022D3960C173020D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxUUBBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxUUAxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D393AD8C202F5" name="A_endData_createLinkAction" memberEnd="_3ADC7B74022D393AD8C30256 _3ADC7B74022D393AD8C30260">
+ <ownedEnd xmi:id="_3ADC7B74022D393AD8C30260" type="_3ADC7B74022D3745C9F20140" association="_3ADC7B74022D393AD8C202F5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE5hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE5RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3A78829802EF" name="A_object_clearAssociationAction" memberEnd="_3ADC7B74022D3A78829900DD _3ADC7B74022D3A7882990278">
+ <ownedEnd xmi:id="_3ADC7B74022D3A7882990278" type="_3ADC7B74022D3A787BA00221" association="_3ADC7B74022D3A78829802EF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxeE8BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxeE7xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3A787C74030C" name="A_association_clearAssociationAction" memberEnd="_3ADC7B74022D3A787C7500FB _3ADC7B74022D3A787C75015F">
+ <ownedEnd xmi:id="_3ADC7B74022D3A787C75015F" type="_3ADC7B74022D3A787BA00221" association="_3ADC7B74022D3A787C74030C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxnO0RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxnO0BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D63D6EA030D" name="A_target_sendObjectAction" memberEnd="_3ADC7B74022D3D63D6EC034B _3ADC7B74022D3D63D6EC03D8">
+ <ownedEnd xmi:id="_3ADC7B74022D3D63D6EC03D8" type="_3ADC7B74022D3D63D34B001F" association="_3ADC7B74022D3D63D6EA030D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6K2tYU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6K2tYE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D63D77F0213" name="A_request_sendObjectAction" memberEnd="_3ADC7B74022D3D63D78001E4 _3ADC7B74022D3D63D7800271">
+ <ownedEnd xmi:id="_3ADC7B74022D3D63D7800271" type="_3ADC7B74022D3D63D34B001F" association="_3ADC7B74022D3D63D77F0213">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9kaqMU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9kaqME-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B68A6DE01E8" name="A_signal_broadcastSignalAction" memberEnd="_3ADC7B74022D3B68A6DF00F9 _3ADC7B74022D3B68A6DF012B">
+ <ownedEnd xmi:id="_3ADC7B74022D3B68A6DF012B" type="_3ADC7B74022D3B68A64C002F" association="_3ADC7B74022D3B68A6DE01E8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_3RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B01A029E" name="A_removeAt_removeStructuralFeatureValueAction" memberEnd="_3ADC7B74022D40F9B01C03C3 _3ADC7B74022D40F9B01D0017">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B01D0017" type="_3ADC7B74022D3A7870670003" association="_3ADC7B74022D40F9B01A029E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_6BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_5xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B19902E5" name="A_destroyAt_linkEndDestructionData" memberEnd="_3ADC7B74022D40F9B19B036A _3ADC7B74022D40F9B19B039C">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B19B039C" type="_3ADC7B74022D40F9B109007B" association="_3ADC7B74022D40F9B19902E5">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxw_8hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sxw_8RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B1CF0008" name="A_endData_destroyLinkAction" memberEnd="_3ADC7B74022D40F9B1D1008D _3ADC7B74022D40F9B1D1008F">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B1D1008F" type="_3ADC7B74022D3745CA190280" association="_3ADC7B74022D40F9B1CF0008">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w1hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w1RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41B0DA9400E8" name="A_value_valueSpecificationAction" memberEnd="_3ADC7B74022D41B0DA9403C3 _3ADC7B74022D41B0DA95000D">
+ <ownedEnd xmi:id="_3ADC7B74022D41B0DA95000D" type="_3ADC7B74022D40FAD18F0202" association="_3ADC7B74022D41B0DA9400E8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w4BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w3xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40FAD23502E7" name="A_result_valueSpecificationAction" memberEnd="_3ADC7B74022D40FAD236031A _3ADC7B74022D40FAD23603A7">
+ <ownedEnd xmi:id="_3ADC7B74022D40FAD23603A7" type="_3ADC7B74022D40FAD18F0202" association="_3ADC7B74022D40FAD23502E7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sx6w6hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sx6w6RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_TWk18DanEdqq1tCaRkgBQQ" name="A_inputValue_linkAction" memberEnd="_TWk18TanEdqq1tCaRkgBQQ _TWk18janEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_TWk18janEdqq1tCaRkgBQQ" type="_3ADC7B74022D38DC038F0193" association="_TWk18DanEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LKyZQU-3EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LKyZQE-3EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D410C264F010C" name="BasicActions">
+ <packageImport xmi:id="_3ADC7B74022D410C26E9038F" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageImport xmi:id="_vL3DMDXVEdqq1tCaRkgBQQ" importedPackage="_3ADC7B74022D3CFC224902BF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D40FACF5B017F" name="OpaqueAction">
+ <ownedComment xmi:id="_syXczhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40FACF5B017F">
+ <body>An action with implementation-specific semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D40FAD0F10287" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF6DCF011E" name="body" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_sz2qhRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF6DCF011E">
+ <body>Specifies the action in one or more languages.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sz2qiRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sz2qiBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF6E0300D3" name="language" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_sz2qjRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF6E0300D3">
+ <body>Languages the body strings use, in the same order as the body strings</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sz2qkRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sz2qkBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JYX74TaxEdqq1tCaRkgBQQ" name="inputValue" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_JYX74DaxEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_hrwAMDaxEdqq1tCaRkgBQQ" annotatedElement="_JYX74TaxEdqq1tCaRkgBQQ">
+ <body>Provides input to the action.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JYX75DaxEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JYX74zaxEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_LizMETaxEdqq1tCaRkgBQQ" name="outputValue" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_LizMEDaxEdqq1tCaRkgBQQ">
+ <ownedComment xmi:id="_jJ7OYDaxEdqq1tCaRkgBQQ" annotatedElement="_LizMETaxEdqq1tCaRkgBQQ">
+ <body>Takes output from the action.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Li89ETaxEdqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Li89EDaxEdqq1tCaRkgBQQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF3DB6F0383" name="Pin" isAbstract="true">
+ <ownedComment xmi:id="_sygmtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3DB6F0383">
+ <body>A pin is a typed element and multiplicity element that provides values to actions and accept result values from them.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410C2D9D0328" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <generalization xmi:id="_0vqmIInsEdq0WtDJCT4EaQ" general="_3ADC7B74022D3CAAFD5202DC"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E53FBAE027A" name="ValuePin">
+ <ownedComment xmi:id="_sygmuhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E53FBAE027A">
+ <body>A value pin is an input pin that provides a value by evaluating a value specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sygmwxTaEdqZu-3Jy1-uYg" name="compatible_type" constrainedElement="_3ADC7B74022D3E53FBAE027A">
+ <ownedComment xmi:id="_sygmvxTaEdqZu-3Jy1-uYg" annotatedElement="_sygmwxTaEdqZu-3Jy1-uYg">
+ <body>The type of value specification must be compatible with the type of the value pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sygmxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E53FBC5009C" general="_3ADC7B74022D384B237E021A"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E53FE62030B" name="value" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" association="_3ADC7B74022D3E53FE620076">
+ <ownedComment xmi:id="_szs5jhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E53FE62030B">
+ <body>Value that the pin will provide.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5khTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5kRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D384B2387039A" name="OutputPin">
+ <ownedComment xmi:id="_sygmyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D384B2387039A">
+ <body>An output pin is a pin that holds output values produced by an action.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF3DF160285" general="_3ADC7B74022D3DF3DB6F0383"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D384B237E021A" name="InputPin">
+ <ownedComment xmi:id="_syqXtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D384B237E021A">
+ <body>An input pin is a pin that holds input values to be consumed by an action.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF3DF190302" general="_3ADC7B74022D3DF3DB6F0383"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF129D8035B" name="InvocationAction" isAbstract="true">
+ <ownedComment xmi:id="_syqXuRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF129D8035B">
+ <body>InvocationAction is an abstract class for the various actions that invoke behavior.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DF409A801B3" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA72E450074" name="argument" type="_3ADC7B74022D384B237E021A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3CA72E44013A">
+ <ownedComment xmi:id="_szjIkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA72E450074">
+ <body>Specification of the ordered set of argument values that appears during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIlRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIlBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF12EC000DA" name="CallAction" isAbstract="true">
+ <ownedComment xmi:id="_syqXvhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF12EC000DA">
+ <body>CallAction is an abstract class for actions that invoke behavior and receive return values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_syqXxxTaEdqZu-3Jy1-uYg" name="synchronous_call" constrainedElement="_3ADC7B74022D3DF12EC000DA">
+ <ownedComment xmi:id="_syqXwxTaEdqZu-3Jy1-uYg" annotatedElement="_syqXxxTaEdqZu-3Jy1-uYg">
+ <body>Only synchronous call actions can have result pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syqXyBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_syqX0BTaEdqZu-3Jy1-uYg" name="number_and_order" constrainedElement="_3ADC7B74022D3DF12EC000DA">
+ <ownedComment xmi:id="_syqXzBTaEdqZu-3Jy1-uYg" annotatedElement="_syqX0BTaEdqZu-3Jy1-uYg">
+ <body>The number and order of argument pins must be the same as the number and order of parameters of the invoked behavior or behavioral feature. Pins are matched to parameters by order.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syqX0RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_syzhphTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3DF12EC000DA">
+ <ownedComment xmi:id="_syzhohTaEdqZu-3Jy1-uYg" annotatedElement="_syzhphTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syzhpxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF12EFA009C" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E54F8A40273" name="isSynchronous">
+ <ownedComment xmi:id="_syzhqxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E54F8A40273">
+ <body>If true, the call is synchronous and the caller waits for completion of the invoked behavior.&#xD;
+If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values.&#xD;
+</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HVsKcBTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CA72E0400E8" name="result" type="_3ADC7B74022D384B2387039A" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D3CA72E030263">
+ <ownedComment xmi:id="_szjIiRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CA72E0400E8">
+ <body>A list of output pins where the results of performing the invocation are placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIjRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIjBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B68A63A0228" name="SendSignalAction">
+ <ownedComment xmi:id="_syzhsBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A63A0228">
+ <body>A send signal action is an action that creates a signal instance from its inputs, and transmits it to the target object, where it may cause the firing of a state machine transition or the execution of an activity. The argument values are available to the execution of associated behaviors. The requestor continues execution immediately. Any reply message is ignored and is not transmitted to the requestor. If the input is already a signal instance, use a send object action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_syzhuRTaEdqZu-3Jy1-uYg" name="number_order" constrainedElement="_3ADC7B74022D3B68A63A0228">
+ <ownedComment xmi:id="_syzhtRTaEdqZu-3Jy1-uYg" annotatedElement="_syzhuRTaEdqZu-3Jy1-uYg">
+ <body>The number and order of argument pins must be the same as the number and order of attributes in the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syzhuhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_syzhwhTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3B68A63A0228">
+ <ownedComment xmi:id="_syzhvhTaEdqZu-3Jy1-uYg" annotatedElement="_syzhwhTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_syzhwxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B68A6420161" general="_3ADC7B74022D3DF129D8035B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B68A72101DA" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3B68A72002C9">
+ <ownedComment xmi:id="_szZ-rRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A72101DA">
+ <body>The target object to which the signal is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-sRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-sBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B68A6EF0188" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D3B68A6EE028B">
+ <ownedComment xmi:id="_szZ-txTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B68A6EF0188">
+ <body>The type of signal transmitted to the target object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIgxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIghTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3AA6D36700D2" name="CallOperationAction">
+ <ownedComment xmi:id="_006MEBV4EdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3AA6D36700D2">
+ <body>A call operation action is an action that transmits an operation call request to the target object, where it may cause the invocation of associated behavior. The argument values of the action are available to the execution of the invoked behavior. If the action is marked synchronous, the execution of the call operation action waits until the execution of the invoked behavior completes and a reply transmission is returned to the caller; otherwise execution of the action is complete when the invocation of the operation is established and the execution of the invoked operation proceeds concurrently with the execution of the calling behavior. Any values returned as part of the reply transmission are put on the result output pins of the call operation action. Upon receipt of the reply transmission, execution of the call operation action is complete.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sy9SpxTaEdqZu-3Jy1-uYg" name="argument_pin_equal_parameter" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_sy9SoxTaEdqZu-3Jy1-uYg" annotatedElement="_sy9SpxTaEdqZu-3Jy1-uYg">
+ <body>The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sy9SqBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sy9SsBTaEdqZu-3Jy1-uYg" name="result_pin_equal_parameter" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_sy9SrBTaEdqZu-3Jy1-uYg" annotatedElement="_sy9SsBTaEdqZu-3Jy1-uYg">
+ <body>The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sy9SsRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szHDoxTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_sy9StRTaEdqZu-3Jy1-uYg" annotatedElement="_szHDoxTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding owned parameter of the operation.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szHDrBTaEdqZu-3Jy1-uYg" name="type_target_pin" constrainedElement="_3ADC7B74022D3AA6D36700D2">
+ <ownedComment xmi:id="_szHDqBTaEdqZu-3Jy1-uYg" annotatedElement="_szHDrBTaEdqZu-3Jy1-uYg">
+ <body>The type of the target pin must be the same as the type that owns the operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B68A3DF0195" general="_3ADC7B74022D3DF12EC000DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AA6D2B501A4" name="operation" type="_3ADC7B74022D3CAB1D710164" association="_3ADC7B74022D3AA6D2B301EA">
+ <ownedComment xmi:id="_szZ-mRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AA6D2B501A4">
+ <body>The operation to be invoked by the action execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-nRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-nBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AA6D29D008C" name="target" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D3AA6D29A02D0">
+ <ownedComment xmi:id="_szZ-oxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AA6D29D008C">
+ <body>The target object to which the request is sent. The classifier of the target object is used to dynamically determine a behavior to invoke. This object constitutes the context of the execution of the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-pxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-phTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CB5CA3200A1" name="CallBehaviorAction">
+ <ownedComment xmi:id="_szHDsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CB5CA3200A1">
+ <body>A call behavior action is a call action that invokes a behavior directly rather than invoking a behavioral feature that, in turn, results in the invocation of that behavior. The argument values of the action are available to the execution of the invoked behavior. For synchronous calls the execution of the call behavior action waits until the execution of the invoked behavior completes and a result is returned on its output pin. The action completes immediately without a result, if the call is asynchronous. In particular, the invoked behavior may be an activity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_szHDuhTaEdqZu-3Jy1-uYg" name="argument_pin_equal_parameter" constrainedElement="_3ADC7B74022D3CB5CA3200A1">
+ <ownedComment xmi:id="_szHDthTaEdqZu-3Jy1-uYg" annotatedElement="_szHDuhTaEdqZu-3Jy1-uYg">
+ <body>The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDuxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szHDwxTaEdqZu-3Jy1-uYg" name="result_pin_equal_parameter" constrainedElement="_3ADC7B74022D3CB5CA3200A1">
+ <ownedComment xmi:id="_szHDvxTaEdqZu-3Jy1-uYg" annotatedElement="_szHDwxTaEdqZu-3Jy1-uYg">
+ <body>The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szHDxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_szQNkxTaEdqZu-3Jy1-uYg" name="type_ordering_multiplicity" constrainedElement="_3ADC7B74022D3CB5CA3200A1">
+ <ownedComment xmi:id="_szHDyBTaEdqZu-3Jy1-uYg" annotatedElement="_szQNkxTaEdqZu-3Jy1-uYg">
+ <body>The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding parameter of the behavior.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_szQNlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF1300D006D" general="_3ADC7B74022D3DF12EC000DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF13035035B" name="behavior" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3DF130350000">
+ <ownedComment xmi:id="_szQNohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF13035035B">
+ <body>The invoked behavior. It must be capable of accepting and returning control.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-kxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-khTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DF3DB6F036B" name="Action" isAbstract="true">
+ <ownedComment xmi:id="_szQNmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3DB6F036B">
+ <body>An action is a named element that is the fundamental unit of executable functionality. The execution of an action represents some transformation or processing in the modeled system, be it a computer system or otherwise.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410C2ECD031D" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D716DC100E9" name="output" type="_3ADC7B74022D384B2387039A" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D716DC100E7">
+ <ownedComment xmi:id="_szjInBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D716DC100E9">
+ <body>The ordered set of output pins connected to the Action. The action places its results onto pins in this set.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIoBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjInxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D716DF5031E" name="input" type="_3ADC7B74022D384B237E021A" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D716DF5031C">
+ <ownedComment xmi:id="_szs5hRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D716DF5031E">
+ <body>The ordered set of input pins connected to the Action. These are among the total set of inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5iRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5iBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF3D8E90137" name="context" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3DF3D8E703BF">
+ <ownedComment xmi:id="_szs5mBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3D8E90137">
+ <body>The classifier that owns the behavior of which this action is a part.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5nBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5mxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_7gKt8ORfEdqI1ohUEQYFdg" name="MultiplicityElement" isAbstract="true">
+ <ownedOperation xmi:id="_JJOkoORgEdqI1ohUEQYFdg" name="compatibleWith" isQuery="true" bodyCondition="_JJOkpuRgEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_JJOkoeRgEdqI1ohUEQYFdg" annotatedElement="_JJOkoORgEdqI1ohUEQYFdg">
+ <body>The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_JJOkpuRgEdqI1ohUEQYFdg" name="spec" constrainedElement="_JJOkoORgEdqI1ohUEQYFdg">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_JJOkp-RgEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_JJOkqORgEdqI1ohUEQYFdg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_JJOkqeRgEdqI1ohUEQYFdg" name="other" type="_7gKt8ORfEdqI1ohUEQYFdg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ds2ZsORgEdqI1ohUEQYFdg" name="is" isQuery="true" bodyCondition="_ds2ZtuRgEdqI1ohUEQYFdg">
+ <ownedComment xmi:id="_ds2ZseRgEdqI1ohUEQYFdg" annotatedElement="_ds2ZsORgEdqI1ohUEQYFdg">
+ <body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ds2ZtuRgEdqI1ohUEQYFdg" name="spec" constrainedElement="_ds2ZsORgEdqI1ohUEQYFdg">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ds2Zt-RgEdqI1ohUEQYFdg">
+ <language>OCL</language>
+ <body>result = (lowerbound = self.lowerbound and upperbound = self.upperbound)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_ds2ZuORgEdqI1ohUEQYFdg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ds2ZueRgEdqI1ohUEQYFdg" name="lowerbound">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_jgelMORgEdqI1ohUEQYFdg" name="upperbound">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010A4007B"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF130350000" name="A_behavior_callBehaviorAction" memberEnd="_3ADC7B74022D3DF13035035B _3ADC7B74022D3DF13035038A">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF13035038A" type="_3ADC7B74022D3CB5CA3200A1" association="_3ADC7B74022D3DF130350000">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-lhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-lRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3AA6D2B301EA" name="A_operation_callOperationAction" memberEnd="_3ADC7B74022D3AA6D2B501A4 _3ADC7B74022D3AA6D2B501D6">
+ <ownedEnd xmi:id="_3ADC7B74022D3AA6D2B501D6" type="_3ADC7B74022D3AA6D36700D2" association="_3ADC7B74022D3AA6D2B301EA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-oBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-nxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3AA6D29A02D0" name="A_target_callOperationAction" memberEnd="_3ADC7B74022D3AA6D29D008C _3ADC7B74022D3AA6D29D0168">
+ <ownedEnd xmi:id="_3ADC7B74022D3AA6D29D0168" type="_3ADC7B74022D3AA6D36700D2" association="_3ADC7B74022D3AA6D29A02D0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-qhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-qRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B68A72002C9" name="A_target_sendSignalAction" memberEnd="_3ADC7B74022D3B68A72101DA _3ADC7B74022D3B68A72103B1">
+ <ownedEnd xmi:id="_3ADC7B74022D3B68A72103B1" type="_3ADC7B74022D3B68A63A0228" association="_3ADC7B74022D3B68A72002C9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szZ-tBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szZ-sxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B68A6EE028B" name="A_signal_sendSignalAction" memberEnd="_3ADC7B74022D3B68A6EF0188 _3ADC7B74022D3B68A6EF0305">
+ <ownedEnd xmi:id="_3ADC7B74022D3B68A6EF0305" type="_3ADC7B74022D3B68A63A0228" association="_3ADC7B74022D3B68A6EE028B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjIhhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjIhRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA72E030263" name="A_result_callAction" memberEnd="_3ADC7B74022D3CA72E0400E8 _3ADC7B74022D3CA72E04016A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA72E04016A" type="_3ADC7B74022D3DF12EC000DA" association="_3ADC7B74022D3CA72E030263">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vEhSIU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vEhSIE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CA72E44013A" name="A_argument_invocationAction" memberEnd="_3ADC7B74022D3CA72E450074 _3ADC7B74022D3CA72E4500CE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CA72E4500CE" type="_3ADC7B74022D3DF129D8035B" association="_3ADC7B74022D3CA72E44013A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uGPE8U-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uGPE8E-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D716DC100E7" name="A_action_output" memberEnd="_3ADC7B74022D3D716DC100E8 _3ADC7B74022D3D716DC100E9">
+ <ownedEnd xmi:id="_3ADC7B74022D3D716DC100E8" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D3D716DC100E7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szjImhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szjImRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D716DF5031C" name="A_action_input" memberEnd="_3ADC7B74022D3D716DF5031D _3ADC7B74022D3D716DF5031E">
+ <ownedEnd xmi:id="_3ADC7B74022D3D716DF5031D" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D3D716DF5031C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5gxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5ghTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E53FE620076" name="A_value_valuePin" memberEnd="_3ADC7B74022D3E53FE62030B _3ADC7B74022D3E53FE620347">
+ <ownedEnd xmi:id="_3ADC7B74022D3E53FE620347" type="_3ADC7B74022D3E53FBAE027A" association="_3ADC7B74022D3E53FE620076">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_szs5lRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_szs5lBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF3D8E703BF" name="A_context_action" memberEnd="_3ADC7B74022D3DF3D8E90137 _3ADC7B74022D3DF3D8E90191" isDerived="true">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF3D8E90191" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D3DF3D8E703BF">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JRd8oU-2EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JRd8oE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JYX74DaxEdqq1tCaRkgBQQ" name="A_inputValue_opaqueAction" memberEnd="_JYX74TaxEdqq1tCaRkgBQQ _JYX74jaxEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_JYX74jaxEdqq1tCaRkgBQQ" type="_3ADC7B74022D40FACF5B017F" association="_JYX74DaxEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GZIdkU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GZIdkE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LizMEDaxEdqq1tCaRkgBQQ" name="A_outputValue_opaqueAction" memberEnd="_LizMETaxEdqq1tCaRkgBQQ _LizMEjaxEdqq1tCaRkgBQQ">
+ <ownedEnd xmi:id="_LizMEjaxEdqq1tCaRkgBQQ" type="_3ADC7B74022D40FACF5B017F" association="_LizMEDaxEdqq1tCaRkgBQQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HLDpwU-2EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HLDpwE-2EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D410C265D0152" name="StructuredActions">
+ <packageImport xmi:id="_3ADC7B74022D410C27100268" importedPackage="_3ADC7B74022D3DF1253C0119"/>
+ <packageImport xmi:id="_3ADC7B74022D4162B94B02EE" importedPackage="_3ADC7B74022D410C264F010C"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D390789630084" name="VariableAction" isAbstract="true">
+ <ownedComment xmi:id="_s0JldBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D390789630084">
+ <body>VariableAction is an abstract class for actions that operate on a statically specified variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0JlfRTaEdqZu-3Jy1-uYg" name="scope_of_variable" constrainedElement="_3ADC7B74022D390789630084">
+ <ownedComment xmi:id="_s0JleRTaEdqZu-3Jy1-uYg" annotatedElement="_s0JlfRTaEdqZu-3Jy1-uYg">
+ <body>The action must be in the scope of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0JlfhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.variable.isAccessibleBy(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DF40ACA0105" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39078A3902B2" name="variable" type="_3ADC7B74022D380F459F0348" association="_3ADC7B74022D39078A380397">
+ <ownedComment xmi:id="_s0wCYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39078A3902B2">
+ <body>Variable to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCZRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38CD2ACC0175" name="ReadVariableAction">
+ <ownedComment xmi:id="_s0JlghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38CD2ACC0175">
+ <body>A read variable action is a variable action that retrieves the values of a variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0JlixTaEdqZu-3Jy1-uYg" name="type_and_ordering" constrainedElement="_3ADC7B74022D38CD2ACC0175">
+ <ownedComment xmi:id="_s0JlhxTaEdqZu-3Jy1-uYg" annotatedElement="_s0JlixTaEdqZu-3Jy1-uYg">
+ <body>The type and ordering of the result output pin of a read-variable action are the same as the type and ordering of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0JljBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.result.type =self.variable.type&#xA;and self.result.ordering = self.variable.ordering&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0TWdhTaEdqZu-3Jy1-uYg" name="compatible_multiplicity" constrainedElement="_3ADC7B74022D38CD2ACC0175">
+ <ownedComment xmi:id="_s0TWchTaEdqZu-3Jy1-uYg" annotatedElement="_s0TWdhTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the variable must be compatible with the multiplicity of the output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0TWdxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.variable.multiplicity.compatibleWith(self.result.multiplicity)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D393FC4840288" general="_3ADC7B74022D390789630084"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D393FC4C100AF" name="result" type="_3ADC7B74022D384B2387039A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DC100E9" association="_3ADC7B74022D393FC4C00220">
+ <ownedComment xmi:id="_s0wCbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D393FC4C100AF">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCbxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D39078A99029C" name="WriteVariableAction" isAbstract="true">
+ <ownedComment xmi:id="_s0TWexTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39078A99029C">
+ <body>WriteVariableAction is an abstract class for variable actions that change variable values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0TWhBTaEdqZu-3Jy1-uYg" name="same_type" constrainedElement="_3ADC7B74022D39078A99029C">
+ <ownedComment xmi:id="_s0TWgBTaEdqZu-3Jy1-uYg" annotatedElement="_s0TWhBTaEdqZu-3Jy1-uYg">
+ <body>The type input pin is the same as the type of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0TWhRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.type = self.variable.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0TWjRTaEdqZu-3Jy1-uYg" name="multiplicity" constrainedElement="_3ADC7B74022D39078A99029C">
+ <ownedComment xmi:id="_s0TWiRTaEdqZu-3Jy1-uYg" annotatedElement="_s0TWjRTaEdqZu-3Jy1-uYg">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0TWjhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D39078AA5028F" general="_3ADC7B74022D390789630084"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D39078AE90392" name="value" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D39078AE90125">
+ <ownedComment xmi:id="_s0wCdhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39078AE90392">
+ <body>Value to be added or removed from the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wCehTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCeRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A788A590162" name="ClearVariableAction">
+ <ownedComment xmi:id="_s0TWkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A788A590162">
+ <body>A clear variable action is a variable action that removes all values of a variable.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3A788A6202A6" general="_3ADC7B74022D390789630084"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787D1701D0" name="AddVariableValueAction">
+ <ownedComment xmi:id="_s0cgYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787D1701D0">
+ <body>An add variable value action is a write variable action for adding values to a variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0cgaRTaEdqZu-3Jy1-uYg" name="single_input_pin" constrainedElement="_3ADC7B74022D3A787D1701D0">
+ <ownedComment xmi:id="_s0cgZRTaEdqZu-3Jy1-uYg" annotatedElement="_s0cgaRTaEdqZu-3Jy1-uYg">
+ <body>Actions adding values to ordered variables must have a single input pin for the insertion point with type UnlimtedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0cgahTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>let insertAtPins : Collection = self.insertAt in&#xA;if self.variable.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A787D400215" general="_3ADC7B74022D39078A99029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3A79B05202CE" name="isReplaceAll">
+ <ownedComment xmi:id="_s0cgbhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A79B05202CE">
+ <body>Specifies whether existing values of the variable should be removed before adding the new value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HWSnYBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D39610D32030A" name="insertAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D39610D2F020B">
+ <ownedComment xmi:id="_s0wCgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D39610D32030A">
+ <body>Gives the position at which to insert a new value or move an existing value in ordered variables. The types is UnlimitedINatural, but the value cannot be zero. This pin is omitted for unordered variables.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s0wChBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s0wCgxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A787D21010C" name="RemoveVariableValueAction">
+ <ownedComment xmi:id="_s0cgcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A787D21010C">
+ <body>A remove variable value action is a write variable action that removes values from variables.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0cgfBTaEdqZu-3Jy1-uYg" name="unlimited_natural" constrainedElement="_3ADC7B74022D3A787D21010C">
+ <ownedComment xmi:id="_s0cgeBTaEdqZu-3Jy1-uYg" annotatedElement="_s0cgfBTaEdqZu-3Jy1-uYg">
+ <body>Actions removing a value from ordered nonunique variables must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type UnlimitedNatural with multiplicity of 1..1, otherwise the action has no removeAt input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0cgfRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A787D4201A0" general="_3ADC7B74022D39078A99029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B28100A4" name="isRemoveDuplicates">
+ <ownedComment xmi:id="_s0cggRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B28100A4">
+ <body>Specifies whether to remove duplicates of the value in nonunique variables.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_HWbxUBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B2C503CD" name="removeAt" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D40F9B2C300A9">
+ <ownedComment xmi:id="_s1MHQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B2C503CD">
+ <body>Specifies the position of an existing value to remove in ordered nonunique variables. The type of the pin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHRhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHRRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFE66FD035B" name="RaiseExceptionAction">
+ <ownedComment xmi:id="_s0mRZBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFE66FD035B">
+ <body>A raise exception action is an action that causes an exception to occur. The input value becomes the exception object.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DFE6728004E" general="_3ADC7B74022D3DF3DB6F036B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41321452000E" name="exception" type="_3ADC7B74022D384B237E021A" aggregation="composite" subsettedProperty="_3ADC7B74022D3D716DF5031E" association="_3ADC7B74022D413214500304">
+ <ownedComment xmi:id="_s1MHVhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41321452000E">
+ <body>An input pin whose value becomes an exception object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1MHWhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1MHWRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D4131228300D2" name="ActionInputPin">
+ <ownedComment xmi:id="_s0mRaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4131228300D2">
+ <body>An action input pin is a kind of pin that executes an action to determine the values to input to another.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_s0mRchTaEdqZu-3Jy1-uYg" name="one_output_pin" constrainedElement="_3ADC7B74022D4131228300D2">
+ <ownedComment xmi:id="_s0mRbhTaEdqZu-3Jy1-uYg" annotatedElement="_s0mRchTaEdqZu-3Jy1-uYg">
+ <body>The fromAction of an action input pin must have exactly one output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_s0mRcxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_s0mRexTaEdqZu-3Jy1-uYg" name="input_pin" constrainedElement="_3ADC7B74022D4131228300D2">
+ <ownedComment xmi:id="_s0mRdxTaEdqZu-3Jy1-uYg" annotatedElement="_s0mRexTaEdqZu-3Jy1-uYg">
+ <body>The fromAction of an action input pin must only have action input pins as input pins.</body>
+ </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>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D327A646F00E6" name="Dependency">
+ <ownedComment xmi:id="_sZBvvxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D327A646F00E6">
+ <body>A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s).</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3388FB030096" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <generalization xmi:id="_3ADC7B74022D3BC8C77F010F" general="_3ADC7B74022D41B8AD3D0247"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AFF021C0000" name="supplier" type="_3ADC7B74022D3CC0E4E5029C" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3AFF021B0000">
+ <ownedComment xmi:id="_sZebrxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AFF021C0000">
+ <body>The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZebsxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZebshTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AFF02160001" name="client" type="_3ADC7B74022D3CC0E4E5029C" subsettedProperty="_3ADC7B74022D3CAAEEF70165" association="_3ADC7B74022D3AFF02130203">
+ <ownedComment xmi:id="_sZebvBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AFF02160001">
+ <body>The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZoMoxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZoMohTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B71F6410244" name="Realization">
+ <ownedComment xmi:id="_sZBvxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B71F6410244">
+ <body>Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B71F662024E" general="_3ADC7B74022D3388FE7D006E"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0E11001C4" name="Substitution">
+ <ownedComment xmi:id="_sZLgtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0E11001C4">
+ <body>A substitution is a relationship between two classifiers signifies that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CC0E11001C5" general="_3ADC7B74022D3B71F6410244"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC0E384023A" name="contract" type="_3ADC7B74022D3CC0E3C1013D" subsettedProperty="_3ADC7B74022D3AFF021C0000" association="_3ADC7B74022D3CC0E38203DC">
+ <ownedComment xmi:id="_sZUqrxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0E384023A">
+ <body>The contract with which the substituting classifier complies.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZUqsxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZUqshTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC0E4110048" name="substitutingClassifier" type="_3ADC7B74022D3CC0E3C1013D" subsettedProperty="_3ADC7B74022D3AFF02160001" association="_3ADC7B74022D3CC0E40F0230">
+ <ownedComment xmi:id="_sZebohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0E4110048">
+ <body>Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZebphTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZebpRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0E3C1013D" name="Classifier" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D3E1D453C0393" general="_3ADC7B74022D3CC0E4E5029C"/>
+ <generalization xmi:id="_3ADC7B74022D41B0C0B90126" general="_3ADC7B74022D41BD9A8701A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC0E411003E" name="substitution" type="_3ADC7B74022D3CC0E11001C4" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187 _3ADC7B74022D3AFF02160000" association="_3ADC7B74022D3CC0E40F0230">
+ <ownedComment xmi:id="_sZUquRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0E411003E">
+ <body>References the substitutions that are owned by this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZeboBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZUqvBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0E4E5029C" name="NamedElement" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41BDA02C0130" general="_3ADC7B74022D3CAAEC0D0176"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3AFF02160000" name="clientDependency" type="_3ADC7B74022D327A646F00E6" association="_3ADC7B74022D3AFF02130203">
+ <ownedComment xmi:id="_sZebthTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AFF02160000">
+ <body>Indicates the dependencies that reference the client.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZebuhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZebuRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD9B210224" name="namespace" type="_3ADC7B74022D41BD9A8701A0" isReadOnly="true" isDerived="true" association="_3ADC7B74022D41BD9B1F0267">
+ <ownedComment xmi:id="_sZoMphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD9B210224">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZoMqhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZoMqRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41B8AD3D0247" name="PackageableElement" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41B8ADA900DA" general="_3ADC7B74022D3CC0E4E5029C"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41BD9A8701A0" name="Namespace" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41BD9AA701CE" general="_3ADC7B74022D3CC0E4E5029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BD9B210226" name="ownedMember" type="_3ADC7B74022D3CC0E4E5029C" isReadOnly="true" isDerived="true" aggregation="composite" association="_3ADC7B74022D41BD9B1F0267">
+ <ownedComment xmi:id="_sZoMrhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BD9B210226">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZoMshTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZoMsRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD1E5940083" name="A_mapping_abstraction" memberEnd="_3ADC7B74022D3BD1E59402F0 _3ADC7B74022D3BD1E594032C">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD1E594032C" type="_3ADC7B74022D3388FE7D006E" association="_3ADC7B74022D3BD1E5940083">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZUqrBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZUqqxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC0E38203DC" name="A_contract_substitution" memberEnd="_3ADC7B74022D3CC0E384023A _3ADC7B74022D3CC0E3840244">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC0E3840244" type="_3ADC7B74022D3CC0E11001C4" association="_3ADC7B74022D3CC0E38203DC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZUqthTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZUqtRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC0E40F0230" name="A_substitution_substitutingClassifier" memberEnd="_3ADC7B74022D3CC0E411003E _3ADC7B74022D3CC0E4110048"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3AFF021B0000" name="A_supplierDependency_supplier" memberEnd="_3ADC7B74022D3AFF021B03D8 _3ADC7B74022D3AFF021C0000">
+ <ownedEnd xmi:id="_3ADC7B74022D3AFF021B03D8" name="supplierDependency" type="_3ADC7B74022D327A646F00E6" association="_3ADC7B74022D3AFF021B0000">
+ <ownedComment xmi:id="_sZebqRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3AFF021B03D8">
+ <body>Indicates the dependencies that reference the supplier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sZebrRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZebrBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3AFF02130203" name="A_clientDependency_client" memberEnd="_3ADC7B74022D3AFF02160000 _3ADC7B74022D3AFF02160001"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BD9B1F0267" name="A_ownedMember_namespace" memberEnd="_3ADC7B74022D41BD9B210226 _3ADC7B74022D41BD9B210224"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CF19F41017F" name="PowerTypes">
+ <packageMerge xmi:id="_HBuFkxTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D7655AD029F" name="GeneralizationSet">
+ <ownedComment xmi:id="_sZxWlRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7655AD029F">
+ <body>A generalization set is a packageable element whose instances define collections of subsets of generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sZxWnhTaEdqZu-3Jy1-uYg" name="generalization_same_classifier" constrainedElement="_3ADC7B74022D3D7655AD029F">
+ <ownedComment xmi:id="_sZxWmhTaEdqZu-3Jy1-uYg" annotatedElement="_sZxWnhTaEdqZu-3Jy1-uYg">
+ <body>Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZxWnxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>generalization->collect(g | g.general)->asSet()->size() &lt;= 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sZ7HkxTaEdqZu-3Jy1-uYg" name="maps_to_generalization_set" constrainedElement="_3ADC7B74022D3D7655AD029F">
+ <ownedComment xmi:id="_sZxWoxTaEdqZu-3Jy1-uYg" annotatedElement="_sZ7HkxTaEdqZu-3Jy1-uYg">
+ <body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZ7HlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3D76566502E1" general="_3ADC7B74022D3CB1F3A0024D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D7656240161" name="isCovering">
+ <ownedComment xmi:id="_sZ7HmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7656240161">
+ <body>Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_8Rz5kGgZEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D7656340222" name="isDisjoint">
+ <ownedComment xmi:id="_sZ7HnBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7656340222">
+ <body>Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty. For example, Person could have two Generalization relationships, each with the different specific Classifier: Manager or Staff. This would be disjoint because every instance of Person must either be a Manager or Staff. In contrast, Person could have two Generalization relationships involving two specific (and non-covering) Classifiers: Sales Person and Manager. This GeneralizationSet would not be disjoint because there are instances of Person which can be a Sales Person and a Manager.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_N8DtwGgaEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D7657F40198" name="powertype" type="_3ADC7B74022D3D7655C4007B" association="_3ADC7B74022D3D7657EA012F">
+ <ownedComment xmi:id="_saE4oxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7657F40198">
+ <body>Designates the Classifier that is defined as the power type for the associated GeneralizationSet.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saE4pxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_saE4phTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D76589B00C2" name="generalization" type="_3ADC7B74022D3D765705003F" association="_3ADC7B74022D3D7658940253">
+ <ownedComment xmi:id="_saOChRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D76589B00C2">
+ <body>Designates the instances of Generalization which are members of a given GeneralizationSet.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saOCiRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_saOCiBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D7655C4007B" name="Classifier" isAbstract="true">
+ <ownedRule xmi:id="_sZ7HqBTaEdqZu-3Jy1-uYg" name="maps_to_generalization_set" constrainedElement="_3ADC7B74022D3D7655C4007B">
+ <ownedComment xmi:id="_sZ7HpBTaEdqZu-3Jy1-uYg" annotatedElement="_sZ7HqBTaEdqZu-3Jy1-uYg">
+ <body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sZ7HqRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D7657F40148" name="powertypeExtent" type="_3ADC7B74022D3D7655AD029F" association="_3ADC7B74022D3D7657EA012F">
+ <ownedComment xmi:id="_saE4nRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D7657F40148">
+ <body>Designates the GeneralizationSet of which the associated Classifier is a power type.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saE4oRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_saE4oBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D765705003F" name="Generalization">
+ <ownedComment xmi:id="_sZ7HrRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D765705003F">
+ <body>A generalization relates a specific classifier to a more general classifier, and is owned by the specific classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_saE4lxTaEdqZu-3Jy1-uYg" name="generalization_same_classifier" constrainedElement="_3ADC7B74022D3D765705003F">
+ <ownedComment xmi:id="_saE4kxTaEdqZu-3Jy1-uYg" annotatedElement="_saE4lxTaEdqZu-3Jy1-uYg">
+ <body>Every Generalization associated with a given GeneralizationSet must have the same general Classifier. That is, all Generalizations for a particular GeneralizationSet must have the same superclass.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_saE4mBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D76589B005E" name="generalizationSet" type="_3ADC7B74022D3D7655AD029F" association="_3ADC7B74022D3D7658940253">
+ <ownedComment xmi:id="_saE4qhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D76589B005E">
+ <body>Designates a set in which instances of Generalization is considered members.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saOCgxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_saOCghTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D7657EA012F" name="A_powertypeExtent_powertype" memberEnd="_3ADC7B74022D3D7657F40148 _3ADC7B74022D3D7657F40198"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D7658940253" name="A_generalizationSet_generalization" memberEnd="_3ADC7B74022D3D76589B005E _3ADC7B74022D3D76589B00C2"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3BAF182F0290" name="AssociationClasses">
+ <packageMerge xmi:id="_HCBAgBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D33657990026C" name="AssociationClass">
+ <ownedComment xmi:id="_saOCkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33657990026C">
+ <body>A model element that has both association and class properties. An AssociationClass can be seen as an association that also has class properties, or as a class that also has association properties. It not only connects a set of classifiers but also defines a set of features that belong to the relationship itself and not to any of the classifiers.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_saXzgxTaEdqZu-3Jy1-uYg" name="cannot_be_defined" constrainedElement="_3ADC7B74022D33657990026C">
+ <ownedComment xmi:id="_saOCmRTaEdqZu-3Jy1-uYg" annotatedElement="_saXzgxTaEdqZu-3Jy1-uYg">
+ <body>An AssociationClass cannot be defined between itself and something else.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_saXzhBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D33FF559B008C" general="_3ADC7B74022D3CAB1DD70016"/>
+ <generalization xmi:id="_3ADC7B74022D34062FB60366" general="_3ADC7B74022D3CAB1D6D00A0"/>
+ <ownedOperation xmi:id="_3ADC7B74022D4300B44A004E" name="allConnections" isQuery="true" bodyCondition="_saXzjBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_saXziBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300B44A004E">
+ <body>The operation allConnections results in the set of all AssociationEnds of the Association.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_saXzjBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300B44A004E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_saXzjRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = memberEnd->union ( self.parents ()->collect (p | p.allConnections () )</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_saXzixTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CC0DAE103AD" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PLGtAVVREdqEEPRvXymocA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PLGtAFVREdqEEPRvXymocA" value="2"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0DAE103AD" name="Property">
+ <ownedComment xmi:id="_saXzkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0DAE103AD">
+ <body>Property represents a declared state of one or more instances in terms of a named relationship to a value or values. When a property is an attribute of a classifier, the value or values are related to the instance of the classifier by being held in slots of the instance. When a property is an association end, the value or values are related to the instance or instances at the other end(s) of the association. The range of valid values represented by the property can be controlled by setting the property's type.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D86E03CC" general="_3ADC7B74022D3CAB08ED000D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D33DBE50B001E" name="qualifier" type="_3ADC7B74022D3CC0DAE103AD" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D33DBE5050028">
+ <ownedComment xmi:id="_saXzlxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33DBE50B001E">
+ <body>An optional list of ordered qualifier attributes for the end. If the list is empty, then the Association is not qualified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saXzmxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_saXzmhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D33DBE50B001F" name="associationEnd" type="_3ADC7B74022D3CC0DAE103AD" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D33DBE5050028">
+ <ownedComment xmi:id="_saXznRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33DBE50B001F">
+ <body>Designates the optional association end that owns a qualifier attribute.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saXzoRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_saXzoBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D33DBE5050028" name="A_qualifier_associationEnd" memberEnd="_3ADC7B74022D33DBE50B001E _3ADC7B74022D33DBE50B001F"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D1281210157" name="CommonBehaviors">
+ <packageImport xmi:id="_EERq4D9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D552D4C038C"/>
+ <packageImport xmi:id="_c6O30D9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3E0C8A930168"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3CFC224902BF" name="Communications">
+ <packageMerge xmi:id="_Go1rghTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAF164701DA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0D64E034F" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_rzLQtBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0D64E034F">
+ <body>A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC0D95B03A2" name="concurrency" type="_3ADC7B74022D33F0EC2002BC">
+ <ownedComment xmi:id="_rzVBoxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0D95B03A2">
+ <body>Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a class with isActive being false). Active instances control access to their own behavioral features.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_y6U_EGgUEdqfYrlcy8iLFA" type="_3ADC7B74022D33F0EC2002BC" instance="_3ADC7B74022D3B9A6A9A033A"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CFAE198037E" name="raisedException" type="_3ADC7B74022D3CAAECE80199" association="_3ADC7B74022D3CFAE198037C">
+ <ownedComment xmi:id="_r0hUhBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CFAE198037E">
+ <body>The signals that the behavioral feature raises as exceptions.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0hUiBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0hUhxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B9D229602BB" name="CallEvent">
+ <ownedComment xmi:id="_rzVBpxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9D229602BB">
+ <body>A call event models the receipt by an object of a message invoking a call of an operation.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E5B96DF0373" general="_3ADC7B74022D3E5B966A02F2"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9D229E01E8" name="operation" type="_3ADC7B74022D415D548B0119" association="_3ADC7B74022D3B9D229C0221">
+ <ownedComment xmi:id="_r0OZlRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9D229E01E8">
+ <body>Designates the operation whose invocation raised the call event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKgxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKghTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B9D229602A9" name="ChangeEvent">
+ <ownedComment xmi:id="_rzVBrBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9D229602A9">
+ <body>A change event models a change in the system configuration that makes a condition true.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D412878620373" general="_3ADC7B74022D412876E902EE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD1DE30000B" name="changeExpression" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3BD1DE2E036F">
+ <ownedComment xmi:id="_r0hUeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD1DE30000B">
+ <body>A Boolean-valued expression that will result in a change event whenever its value changes from false to true.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0hUfRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0hUfBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3BC8C05E0205" name="Class">
+ <ownedComment xmi:id="_rzeyoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC8C05E0205">
+ <body>A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_v0uyQDafEdqq1tCaRkgBQQ" name="passive_class" constrainedElement="_3ADC7B74022D3BC8C05E0205">
+ <ownedComment xmi:id="_7P7qQDafEdqq1tCaRkgBQQ" annotatedElement="_v0uyQDafEdqq1tCaRkgBQQ">
+ <body>A passive class may not own receptions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_v0uyQTafEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>not self.isActive implies self.ownedReception.isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3D0BAF88036E" general="_3ADC7B74022D3CC0D5FF02D3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC0D7E00108" name="isActive">
+ <ownedComment xmi:id="_rzeyphTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0D7E00108">
+ <body>Determines whether an object specified by this class is active or not. If true, then the owning class is referred to as an active class. If false, then such a class is referred to as a passive class.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_LlG2wGgVEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BC8DBAB0112" name="ownedReception" type="_3ADC7B74022D33EC13250140" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228 _3ADC7B74022D3CAB04790307" association="_3ADC7B74022D3BC8DBAA01F7">
+ <ownedComment xmi:id="_r0YKmxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC8DBAB0112">
+ <body>Receptions that objects of this class are willing to accept.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKnxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKnhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B9D229602A5" name="Trigger">
+ <ownedComment xmi:id="_rzeyqhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9D229602A5">
+ <body>A trigger relates an event to a behavior that may affect an instance of the classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3C6359E4017A" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41287751026C" name="event" type="_3ADC7B74022D412876E902EE" association="_3ADC7B74022D4128774F033B">
+ <ownedComment xmi:id="_r0rFgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41287751026C">
+ <body>The event that causes the trigger.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0rFhxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0rFhhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0D8B0028E" name="Interface">
+ <ownedComment xmi:id="_rzeysBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0D8B0028E">
+ <body>Interfaces may include receptions (in addition to operations).</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D3C80320" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BC8DBB902AD" name="ownedReception" type="_3ADC7B74022D33EC13250140" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3BC8DBB900C2">
+ <ownedComment xmi:id="_r0YKkRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC8DBB902AD">
+ <body>Receptions that objects providing this interface are willing to accept.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKlRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKlBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D33EC13250140" name="Reception">
+ <ownedComment xmi:id="_rzn8khTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33EC13250140">
+ <body>A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rzn8mxTaEdqZu-3Jy1-uYg" name="not_query" constrainedElement="_3ADC7B74022D33EC13250140">
+ <ownedComment xmi:id="_rzn8lxTaEdqZu-3Jy1-uYg" annotatedElement="_rzn8mxTaEdqZu-3Jy1-uYg">
+ <body>A Reception can not be a query.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rzn8nBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.isQuery</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D33F2372D0172" general="_3ADC7B74022D3CC0D64E034F"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D719DF30314" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D3D719DF30312">
+ <ownedComment xmi:id="_r0OZjhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D719DF30314">
+ <body>The signal that this reception handles.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0OZkhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0OZkRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3389030B00E6" name="Signal">
+ <ownedComment xmi:id="_rzxtmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3389030B00E6">
+ <body>A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D09AF53037A" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CFAE1F1037A" name="ownedAttribute" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB21AF0364 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CFAE1F002A6">
+ <ownedComment xmi:id="_r0hUixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CFAE1F1037A">
+ <body>The attributes owned by the signal.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0rFcxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0rFchTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B9D229602AE" name="SignalEvent">
+ <ownedComment xmi:id="_rzxtnRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9D229602AE">
+ <body>A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E5B96E30238" general="_3ADC7B74022D3E5B966A02F2"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B94A19F0189" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D3B94A19E0137">
+ <ownedComment xmi:id="_r0YKiRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94A19F0189">
+ <body>The specific signal that is associated with this event.</body>
+ </ownedComment>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B9D2296029B" name="TimeEvent">
+ <ownedComment xmi:id="_rzxtohTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9D2296029B">
+ <body>A time event specifies a point in time. At the specified time, the event occurs.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4128785E033B" general="_3ADC7B74022D412876E902EE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D3918CC003A" name="isRelative">
+ <ownedComment xmi:id="_rzxtpxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D3918CC003A">
+ <body>Specifies whether it is relative or absolute time.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_cNF7sGggEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD1DDCD0080" name="when" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3BD1DDCC01D3">
+ <ownedComment xmi:id="_r0hUcRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD1DDCD0080">
+ <body>Specifies the corresponding time deadline.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0hUdRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0hUdBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E5B966A02F2" name="MessageEvent" isAbstract="true">
+ <ownedComment xmi:id="_rz7eoBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5B966A02F2">
+ <body>A message event specifies the receipt by an object of either a call or a signal.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4128785A00A0" general="_3ADC7B74022D412876E902EE"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E5B982E0298" name="AnyReceiveEvent">
+ <ownedComment xmi:id="_rz7epRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5B982E0298">
+ <body>A transition trigger associated with an any receive event specifies that the transition is to be triggered by the receipt of any message that is not explicitly referenced in another transition from the same vertex.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E5B985F02AC" general="_3ADC7B74022D3E5B966A02F2"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D4128761A021E" name="BehavioredClassifier" isAbstract="true">
+ <ownedComment xmi:id="_r0EogRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4128761A021E">
+ <body>A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B9A397022E" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D40A7A6B4019C" name="ownedTrigger" type="_3ADC7B74022D3B9D229602A5" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D40A7A6B2015D">
+ <ownedComment xmi:id="_r0rFeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40A7A6B4019C">
+ <body>References Trigger descriptions owned by a Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0rFfRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0rFfBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D412876E902EE" name="Event" isAbstract="true">
+ <ownedComment xmi:id="_r0OZgRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D412876E902EE">
+ <body>An event is the specification of some occurrence that may potentially trigger effects by an object.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4128772A017F" general="_3ADC7B74022D3CB1F3A0024D"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D415D548B0119" name="Operation">
+ <ownedComment xmi:id="_r0OZhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D415D548B0119">
+ <body>An operation may invoke both the execution of method behaviors as well as other behavioral responses.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D33F0EC2002BC" name="CallConcurrencyKind">
+ <ownedComment xmi:id="_Ny3VMOEeEdqI1ohUEQYFdg" annotatedElement="_3ADC7B74022D33F0EC2002BC">
+ <body>CallConcurrencyKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B9A6A9A033A" name="sequential">
+ <ownedComment xmi:id="_rz7elBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A6A9A033A">
+ <body>No concurrency management mechanism is associated with the operation and, therefore, concurrency conflicts may occur. Instances that invoke a behavioral feature need to coordinate so that only one invocation to a target on any behavioral feature occurs at once.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B9A6AA900F7" name="guarded">
+ <ownedComment xmi:id="_rz7emBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A6AA900F7">
+ <body>Multiple invocations of a behavioral feature may occur simultaneously to one instance, but only one is allowed to commence. The others are blocked until the performance of the first behavioral feature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocks.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B9A6AB003E6" name="concurrent">
+ <ownedComment xmi:id="_rz7enBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A6AB003E6">
+ <body>Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D719DF30312" name="A_reception_signal" memberEnd="_3ADC7B74022D3D719DF30313 _3ADC7B74022D3D719DF30314">
+ <ownedEnd xmi:id="_3ADC7B74022D3D719DF30313" type="_3ADC7B74022D33EC13250140" association="_3ADC7B74022D3D719DF30312">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0OZjBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0OZixTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9D229C0221" name="A_operation_callEvent" memberEnd="_3ADC7B74022D3B9D229E01E8 _3ADC7B74022D3B9D229E01F2">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9D229E01F2" type="_3ADC7B74022D3B9D229602BB" association="_3ADC7B74022D3B9D229C0221">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKhhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKhRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B94A19E0137" name="A_signal_signalEvent" memberEnd="_3ADC7B74022D3B94A19F0189 _3ADC7B74022D3B94A19F0193">
+ <ownedEnd xmi:id="_3ADC7B74022D3B94A19F0193" type="_3ADC7B74022D3B9D229602AE" association="_3ADC7B74022D3B94A19E0137">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKjhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKjRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BC8DBB900C2" name="A_ownedReception_interface" memberEnd="_3ADC7B74022D3BC8DBB902AD _3ADC7B74022D3BC8DBB902C1">
+ <ownedEnd xmi:id="_3ADC7B74022D3BC8DBB902C1" type="_3ADC7B74022D3CC0D8B0028E" association="_3ADC7B74022D3BC8DBB900C2">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKmBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKlxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BC8DBAA01F7" name="A_ownedReception_class" memberEnd="_3ADC7B74022D3BC8DBAB0112 _3ADC7B74022D3BC8DBAB011C">
+ <ownedEnd xmi:id="_3ADC7B74022D3BC8DBAB011C" type="_3ADC7B74022D3BC8C05E0205" association="_3ADC7B74022D3BC8DBAA01F7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0YKohTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0YKoRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD1DDCC01D3" name="A_when_timeEvent" memberEnd="_3ADC7B74022D3BD1DDCD0080 _3ADC7B74022D3BD1DDCD00A8">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD1DDCD00A8" type="_3ADC7B74022D3B9D2296029B" association="_3ADC7B74022D3BD1DDCC01D3">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iHfW0U-9EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iHfW0E-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD1DE2E036F" name="A_changeExpression_changeEvent" memberEnd="_3ADC7B74022D3BD1DE30000B _3ADC7B74022D3BD1DE300033">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD1DE300033" type="_3ADC7B74022D3B9D229602A9" association="_3ADC7B74022D3BD1DE2E036F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jE4MIE-9EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jEvCME-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CFAE198037C" name="A_raisedException_behavioralFeature" memberEnd="_3ADC7B74022D3CFAE198037E _3ADC7B74022D3CFAE198037D">
+ <ownedEnd xmi:id="_3ADC7B74022D3CFAE198037D" type="_3ADC7B74022D3CC0D64E034F" association="_3ADC7B74022D3CFAE198037C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0hUghTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0hUgRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CFAE1F002A6" name="A_ownedAttribute_owningSignal" memberEnd="_3ADC7B74022D3CFAE1F1037A _3ADC7B74022D3CFAE1F10384">
+ <ownedEnd xmi:id="_3ADC7B74022D3CFAE1F10384" name="owningSignal" type="_3ADC7B74022D3389030B00E6" subsettedProperty="_3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB21AF036E _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3CFAE1F002A6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0rFdhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0rFdRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40A7A6B2015D" name="A_ownedTrigger_behavioredClassifier" memberEnd="_3ADC7B74022D40A7A6B4019C _3ADC7B74022D40A7A6B401B0">
+ <ownedEnd xmi:id="_3ADC7B74022D40A7A6B401B0" type="_3ADC7B74022D4128761A021E" association="_3ADC7B74022D40A7A6B2015D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r0rFgBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r0rFfxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4128774F033B" name="A_event_trigger" memberEnd="_3ADC7B74022D41287751026C _3ADC7B74022D41287751026E">
+ <ownedEnd xmi:id="_3ADC7B74022D41287751026E" type="_3ADC7B74022D3B9D229602A5" association="_3ADC7B74022D4128774F033B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_asI_kU-9EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_asI_kE-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D335C122001A4" name="BasicBehaviors">
+ <packageMerge xmi:id="_Gp4NURTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B9A6F4F0008" name="Behavior" isAbstract="true">
+ <ownedComment xmi:id="_r0-AZRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A6F4F0008">
+ <body>Behavior is a specification of how its context classifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r0-AbhTaEdqZu-3Jy1-uYg" name="parameters_match" constrainedElement="_3ADC7B74022D3B9A6F4F0008">
+ <ownedComment xmi:id="_r0-AahTaEdqZu-3Jy1-uYg" annotatedElement="_r0-AbhTaEdqZu-3Jy1-uYg">
+ <body>The parameters of the behavior must match the parameters of the implemented behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r0-AbxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r0-AdxTaEdqZu-3Jy1-uYg" name="feature_of_context_classifier" constrainedElement="_3ADC7B74022D3B9A6F4F0008">
+ <ownedComment xmi:id="_r0-AcxTaEdqZu-3Jy1-uYg" annotatedElement="_r0-AdxTaEdqZu-3Jy1-uYg">
+ <body>The implemented behavioral feature must be a feature (possibly inherited) of the context classifier of the behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r0-AeBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r1HxYxTaEdqZu-3Jy1-uYg" name="must_realize" constrainedElement="_3ADC7B74022D3B9A6F4F0008">
+ <ownedComment xmi:id="_r0-AfBTaEdqZu-3Jy1-uYg" annotatedElement="_r1HxYxTaEdqZu-3Jy1-uYg">
+ <body>If the implemented behavioral feature has been redefined in the ancestors of the owner of the behavior, then the behavior must realize the latest redefining behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1HxZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r1HxbBTaEdqZu-3Jy1-uYg" name="most_one_behaviour" constrainedElement="_3ADC7B74022D3B9A6F4F0008">
+ <ownedComment xmi:id="_r1HxaBTaEdqZu-3Jy1-uYg" annotatedElement="_r1HxbBTaEdqZu-3Jy1-uYg">
+ <body>There may be at most one behavior for a given pairing of classifier (as owner of the behavior) and behavioral feature (as specification of the behavior).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1HxbRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DAA1A3F0053" general="_3ADC7B74022D3CAB1D6D00A0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF40D330167" name="isReentrant">
+ <ownedComment xmi:id="_r1HxcRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF40D330167">
+ <body>Tells whether the behavior can be invoked while it is still executing from a previous invocation.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_i66VAGgUEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BC3404E0108" name="redefinedBehavior" type="_3ADC7B74022D3B9A6F4F0008" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3BC3404B02C6">
+ <ownedComment xmi:id="_r1j2UBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC3404E0108">
+ <body>References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1j2VBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1j2UxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C672C530274" name="specification" type="_3ADC7B74022D3D0380EA009C" association="_3ADC7B74022D3C672C52025E">
+ <ownedComment xmi:id="_r1tnQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C672C530274">
+ <body>Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. If a behavior does not have a specification, it is directly associated with a classifier (i.e., it is the behavior of the classifier as a whole).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1tnRRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1tnRBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CFADFD20213" name="ownedParameter" type="_3ADC7B74022D3CAB0B3D0362" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3CFADFD20211">
+ <ownedComment xmi:id="_r1tnSxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CFADFD20213">
+ <body>References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1tnTxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1tnThTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D40F9B6900288" name="context" type="_3ADC7B74022D3CC0D5FF02D3" isReadOnly="true" isDerived="true" subsettedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D40F9B68F0241">
+ <ownedComment xmi:id="_r13YXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D40F9B6900288">
+ <body>The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2AiMxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2AiMhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_9jvUsYNmEdq7cMP_l1l5Gg" name="precondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_9jvUsINmEdq7cMP_l1l5Gg">
+ <ownedComment xmi:id="_d02kcPZOEdqYHf-imTcTdw" annotatedElement="_9jvUsYNmEdq7cMP_l1l5Gg">
+ <body>An optional set of Constraints specifying what must be fulfilled when the behavior is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9kCPoINmEdq7cMP_l1l5Gg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9j5FsYNmEdq7cMP_l1l5Gg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_FNiXoYNnEdq7cMP_l1l5Gg" name="postcondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_FNiXoINnEdq7cMP_l1l5Gg">
+ <ownedComment xmi:id="_gB98QPZOEdqYHf-imTcTdw" annotatedElement="_FNiXoYNnEdq7cMP_l1l5Gg">
+ <body>An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FNiXpINnEdq7cMP_l1l5Gg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FNiXo4NnEdq7cMP_l1l5Gg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC0D5FF02D3" name="BehavioredClassifier" isAbstract="true">
+ <ownedComment xmi:id="_r1HxdRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC0D5FF02D3">
+ <body>A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r1HxfhTaEdqZu-3Jy1-uYg" name="class_behavior" constrainedElement="_3ADC7B74022D3CC0D5FF02D3">
+ <ownedComment xmi:id="_r1HxehTaEdqZu-3Jy1-uYg" annotatedElement="_r1HxfhTaEdqZu-3Jy1-uYg">
+ <body>If a behavior is classifier behavior, it does not have a specification.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1HxfxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.classifierBehavior.notEmpty() implies self.specification.isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3D0B90F900E4" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A6F8C0381" name="ownedBehavior" type="_3ADC7B74022D3B9A6F4F0008" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B9A6F8B0090">
+ <ownedComment xmi:id="_r1ascxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A6F8C0381">
+ <body>References behavior specifications owned by a classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1j2QxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1j2QhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A723C009B" name="classifierBehavior" type="_3ADC7B74022D3B9A6F4F0008" subsettedProperty="_3ADC7B74022D3B9A6F8C0381" association="_3ADC7B74022D3B9A723B01C6">
+ <ownedComment xmi:id="_r1j2RhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A723C009B">
+ <body>A behavior specification that specifies the behavior of the classifier itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1j2ShTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1j2SRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CEB52F70346" name="OpaqueExpression">
+ <ownedComment xmi:id="_r1Q7URTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEB52F70346">
+ <body>Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r1Q7WRTaEdqZu-3Jy1-uYg" name="only_return_result_parameters" constrainedElement="_3ADC7B74022D3CEB52F70346">
+ <ownedComment xmi:id="_r1Q7VRTaEdqZu-3Jy1-uYg" annotatedElement="_r1Q7WRTaEdqZu-3Jy1-uYg">
+ <body>The behavior may only have return result parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1Q7WhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameters->select(p | p.direction&lt;>#return)->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r1Q7YhTaEdqZu-3Jy1-uYg" name="one_return_result_parameter" constrainedElement="_3ADC7B74022D3CEB52F70346">
+ <ownedComment xmi:id="_r1Q7XhTaEdqZu-3Jy1-uYg" annotatedElement="_r1Q7YhTaEdqZu-3Jy1-uYg">
+ <body>The behavior must have exactly one return result parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1Q7YxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D06C90B02AF" name="result" type="_3ADC7B74022D3CAB0B3D0362" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3D06C90B0043">
+ <ownedComment xmi:id="_r1tnUhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D06C90B02AF">
+ <body>Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1tnVhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1tnVRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF935A20386" name="behavior" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3DF935A00379">
+ <ownedComment xmi:id="_r13YQBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF935A20386">
+ <body>Specifies the behavior of the opaque expression.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r13YRBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r13YQxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0380EA009C" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_r1Q7ZxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0380EA009C">
+ <body>A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D03812500D3" name="isAbstract">
+ <ownedComment xmi:id="_r1Q7axTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D03812500D3">
+ <body>If true, then the behavioral feature does not have an implementation, and one must be supplied by a more specific element. If false, the behavioral feature must have an implementation in the classifier or one must be inherited from a more general element.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AiMi8GgVEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C672C53024C" name="method" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3C672C52025E">
+ <ownedComment xmi:id="_r1j2WhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C672C53024C">
+ <body>A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1j2XhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1j2XRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410D8B4000F6" name="OpaqueBehavior">
+ <ownedComment xmi:id="_r1asUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410D8B4000F6">
+ <body>An behavior with implementation-specific semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410D8BDE02D7" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF6EF40300" name="body" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_r2AiORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF6EF40300">
+ <body>Specifies the behavior in one or more languages.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2AiPRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2AiPBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41AF6F25017A" name="language" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_r2AiQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41AF6F25017A">
+ <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="_r2AiRRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2AiRBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D411FC13F033A" name="FunctionBehavior">
+ <ownedComment xmi:id="_r1asWBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D411FC13F033A">
+ <body>A function behavior is an opaque behavior that does not access or modify any objects or other external data.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_r1asYRTaEdqZu-3Jy1-uYg" name="one_output_parameter" constrainedElement="_3ADC7B74022D411FC13F033A">
+ <ownedComment xmi:id="_r1asXRTaEdqZu-3Jy1-uYg" annotatedElement="_r1asYRTaEdqZu-3Jy1-uYg">
+ <body>A function behavior has at least one output parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1asYhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedParameters->&#xD;&#xA; select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_r1asahTaEdqZu-3Jy1-uYg" name="types_of_parameters" constrainedElement="_3ADC7B74022D411FC13F033A">
+ <ownedComment xmi:id="_r1asZhTaEdqZu-3Jy1-uYg" annotatedElement="_r1asahTaEdqZu-3Jy1-uYg">
+ <body>The types of parameters are all data types, which may not nest anything but other datatypes.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_r1asaxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>def: hasAllDataTypeAttributes(d : DataType) : Boolean =&#xD;&#xA; d.ownedAttribute->forAll(a |&#xD;&#xA; a.type.oclIsTypeOf(DataType) and&#xD;&#xA; hasAllDataTypeAttributes(a.type))&#xD;&#xA;self.ownedParameters->forAll(p | p.type.notEmpty() and&#xD;&#xA; p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D411FC15C013D" general="_3ADC7B74022D410D8B4000F6"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A6F8B0090" name="A_behavioredClassifier_ownedBehavior" memberEnd="_3ADC7B74022D3B9A6F8C0326 _3ADC7B74022D3B9A6F8C0381">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A6F8C0326" type="_3ADC7B74022D3CC0D5FF02D3" association="_3ADC7B74022D3B9A6F8B0090">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1ascRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1ascBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A723B01C6" name="A_classifierBehavior_behavioredClassifier" memberEnd="_3ADC7B74022D3B9A723C009B _3ADC7B74022D3B9A723C00AF">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A723C00AF" type="_3ADC7B74022D3CC0D5FF02D3" association="_3ADC7B74022D3B9A723B01C6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1j2TRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1j2TBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BC3404B02C6" name="A_redefinedBehavior_behavior" memberEnd="_3ADC7B74022D3BC3404E0108 _3ADC7B74022D3BC3404E0130">
+ <ownedEnd xmi:id="_3ADC7B74022D3BC3404E0130" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3BC3404B02C6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1j2VxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1j2VhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C672C52025E" name="A_method_specification" memberEnd="_3ADC7B74022D3C672C53024C _3ADC7B74022D3C672C530274"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CFADFD20211" name="A_behavior_ownedParameter" memberEnd="_3ADC7B74022D3CFADFD20212 _3ADC7B74022D3CFADFD20213">
+ <ownedEnd xmi:id="_3ADC7B74022D3CFADFD20212" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3CFADFD20211">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1tnSRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1tnSBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D06C90B0043" name="A_result_opaqueExpression" memberEnd="_3ADC7B74022D3D06C90B02AF _3ADC7B74022D3D06C90B02C3">
+ <ownedEnd xmi:id="_3ADC7B74022D3D06C90B02C3" type="_3ADC7B74022D3CEB52F70346" association="_3ADC7B74022D3D06C90B0043">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r1tnWxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r1tnWhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF935A00379" name="A_behavior_opaqueExpression" memberEnd="_3ADC7B74022D3DF935A20386 _3ADC7B74022D3DF935A203B8">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF935A203B8" type="_3ADC7B74022D3CEB52F70346" association="_3ADC7B74022D3DF935A00379">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r13YRxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r13YRhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D40F9B68F0241" name="A_context_behavior" memberEnd="_3ADC7B74022D40F9B6900288 _3ADC7B74022D40F9B690029C">
+ <ownedEnd xmi:id="_3ADC7B74022D40F9B690029C" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D40F9B68F0241">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r2AiNhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r2AiNRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_9jvUsINmEdq7cMP_l1l5Gg" name="A_precondition_behavior" memberEnd="_9jvUsYNmEdq7cMP_l1l5Gg _9j5FsINmEdq7cMP_l1l5Gg">
+ <ownedEnd xmi:id="_9j5FsINmEdq7cMP_l1l5Gg" type="_3ADC7B74022D3B9A6F4F0008" subsettedProperty="_3ADC7B74022D3CAAF5A901A6" association="_9jvUsINmEdq7cMP_l1l5Gg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nUHbYYNnEdq7cMP_l1l5Gg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nUHbYINnEdq7cMP_l1l5Gg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_FNiXoINnEdq7cMP_l1l5Gg" name="A_postcondition_behavior" memberEnd="_FNiXoYNnEdq7cMP_l1l5Gg _FNiXooNnEdq7cMP_l1l5Gg">
+ <ownedEnd xmi:id="_FNiXooNnEdq7cMP_l1l5Gg" type="_3ADC7B74022D3B9A6F4F0008" subsettedProperty="_3ADC7B74022D3CAAF5A901A6" association="_FNiXoINnEdq7cMP_l1l5Gg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jEKpIYNnEdq7cMP_l1l5Gg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jEKpIINnEdq7cMP_l1l5Gg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D381B1F00F7" name="SimpleTime">
+ <packageMerge xmi:id="_GvY_cBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF1252E035B"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B43D032C" name="TimeExpression">
+ <ownedComment xmi:id="_r2UENBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B43D032C">
+ <body>A time expression defines a value specification that represents a time value.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B5650223" general="_3ADC7B74022D3D0254AB023D"/>
+ <ownedAttribute xmi:id="_OJzLAXIvEdqziYxiZo0YtA" name="expr" type="_3ADC7B74022D3D0254AB023D" association="_OJzLAHIvEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_GHVsQHI2EdqziYxiZo0YtA" annotatedElement="_OJzLAXIvEdqziYxiZo0YtA">
+ <body>The value of the time expression.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OJ88AHIvEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OJzLA3IvEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_o-5IsXIwEdqziYxiZo0YtA" name="observation" type="_WKlVIHIwEdqziYxiZo0YtA" association="_o-5IsHIwEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_EVVjIHI2EdqziYxiZo0YtA" annotatedElement="_o-5IsXIwEdqziYxiZo0YtA">
+ <body>Refers to the time and duration observations that are involved in expr.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o-5ItHIwEdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o-5Is3IwEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B589009E" name="Duration">
+ <ownedComment xmi:id="_r2UEOxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B589009E">
+ <body>Duration defines a value specification that specifies the temporal distance between two time instants.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B5DF00E8" general="_3ADC7B74022D3D0254AB023D"/>
+ <ownedAttribute xmi:id="_ToRl4XIvEdqziYxiZo0YtA" name="expr" type="_3ADC7B74022D3D0254AB023D" association="_ToRl4HIvEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_8tiLoHIyEdqziYxiZo0YtA" annotatedElement="_ToRl4XIvEdqziYxiZo0YtA">
+ <body>The value of the Duration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ToRl5HIvEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ToRl43IvEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_kHKkwXIwEdqziYxiZo0YtA" name="observation" type="_WKlVIHIwEdqziYxiZo0YtA" association="_kHKkwHIwEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_3bbY0HIyEdqziYxiZo0YtA" annotatedElement="_kHKkwXIwEdqziYxiZo0YtA">
+ <body>Refers to the time and duration observations that are involved in expr.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kHKkxHIwEdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kHKkw3IwEdqziYxiZo0YtA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B5A00340" name="DurationInterval">
+ <ownedComment xmi:id="_r2dOJBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B5A00340">
+ <body>A duration interval defines the range between two durations.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B5BB03DF" general="_3ADC7B74022D3DE4B3AC0189"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFC80590327" name="min" type="_3ADC7B74022D3DE4B589009E" redefinedProperty="_3ADC7B74022D3DE4B4000338" association="_3ADC7B74022D3DFC80590129">
+ <ownedComment xmi:id="_r2wwJxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC80590327">
+ <body>Refers to the Duration denoting the minimum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFC808703B0" name="max" type="_3ADC7B74022D3DE4B589009E" redefinedProperty="_3ADC7B74022D3DE4B3CE006F" association="_3ADC7B74022D3DFC80870053">
+ <ownedComment xmi:id="_r2wwLRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC808703B0">
+ <body>Refers to the Duration denoting the maximum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B652035A" name="TimeConstraint">
+ <ownedComment xmi:id="_r2dOKRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B652035A">
+ <body>A time constraint is a constraint that refers to a time interval.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B6630264" general="_3ADC7B74022D3DE4B5F002CD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE4B6740273" name="specification" type="_3ADC7B74022D3DE4B5320049" aggregation="composite" redefinedProperty="_3ADC7B74022D3DE4B63C01B4" association="_3ADC7B74022D3DE4B6730394">
+ <ownedComment xmi:id="_hVYyIBWVEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DE4B6740273">
+ <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="_r256FhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r256FRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_GXmSoHIyEdqziYxiZo0YtA" name="firstEvent">
+ <ownedComment xmi:id="_9cHokHI1EdqziYxiZo0YtA" annotatedElement="_GXmSoHIyEdqziYxiZo0YtA">
+ <body>The value of firstEvent is related to constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within constrainedElement.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LX-cQXIyEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LX-cQHIyEdqziYxiZo0YtA"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_LCq6oHIyEdqziYxiZo0YtA" value="true">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B5320049" name="TimeInterval">
+ <ownedComment xmi:id="_r2dOLhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B5320049">
+ <body>A time interval defines the range between two time expressions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B5760200" general="_3ADC7B74022D3DE4B3AC0189"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFC802E02A3" name="max" type="_3ADC7B74022D3DE4B43D032C" redefinedProperty="_3ADC7B74022D3DE4B3CE006F" association="_3ADC7B74022D3DFC802D03A6">
+ <ownedComment xmi:id="_r2wwMxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC802E02A3">
+ <body>Refers to the TimeExpression denoting the maximum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFC80050381" name="min" type="_3ADC7B74022D3DE4B43D032C" redefinedProperty="_3ADC7B74022D3DE4B4000338" association="_3ADC7B74022D3DFC800500EC">
+ <ownedComment xmi:id="_r2wwORTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC80050381">
+ <body>Refers to the TimeExpression denoting the minimum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B68A0120" name="DurationConstraint">
+ <ownedComment xmi:id="_r2dOOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B68A0120">
+ <body>A duration constraint is a constraint that refers to a duration interval.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_y_SvQHIzEdqziYxiZo0YtA" name="first_event_multiplicity" constrainedElement="_3ADC7B74022D3DE4B68A0120">
+ <ownedComment xmi:id="_8CpmIHIzEdqziYxiZo0YtA" annotatedElement="_y_SvQHIzEdqziYxiZo0YtA">
+ <body>The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_y_SvQXIzEdqziYxiZo0YtA">
+ <language>OCL</language>
+ <body>if (constrainedElement->size() =2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DE4B6A7001D" general="_3ADC7B74022D3DE4B5F002CD"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE4B6AE0258" name="specification" type="_3ADC7B74022D3DE4B5A00340" aggregation="composite" redefinedProperty="_3ADC7B74022D3DE4B63C01B4" association="_3ADC7B74022D3DE4B6AD0275">
+ <ownedComment xmi:id="_JJwUkBWVEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DE4B6AE0258">
+ <body>The interval constraining the duration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r256GxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r256GhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_cln0AHIyEdqziYxiZo0YtA" name="firstEvent">
+ <ownedComment xmi:id="_RYwdgHIzEdqziYxiZo0YtA" annotatedElement="_cln0AHIyEdqziYxiZo0YtA">
+ <body>The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i]. Default value is true applied when constrainedElement[i] refers an element that represents only one time instant.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iBQ9UXIyEdqziYxiZo0YtA" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iBQ9UHIyEdqziYxiZo0YtA"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_gmqnkHIyEdqziYxiZo0YtA" value="true">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B5F002CD" name="IntervalConstraint">
+ <ownedComment xmi:id="_r2m_IRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B5F002CD">
+ <body>An interval constraint is a constraint that refers to an interval.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B61A00D9" general="_3ADC7B74022D3CAAED67023C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE4B63C01B4" name="specification" type="_3ADC7B74022D3DE4B3AC0189" aggregation="composite" redefinedProperty="_3ADC7B74022D3CECFC020007" association="_3ADC7B74022D3DE4B63B02CB">
+ <ownedComment xmi:id="_gi3wEBWVEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3DE4B63C01B4">
+ <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="_r3DrExTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r3DrEhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE4B3AC0189" name="Interval">
+ <ownedComment xmi:id="_r2m_JhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B3AC0189">
+ <body>An interval defines the range between two value specifications.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3DE4B3C2023F" general="_3ADC7B74022D3D0254AB023D"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE4B4000338" name="min" type="_3ADC7B74022D3D0254AB023D" association="_3ADC7B74022D3DE4B3FF0341">
+ <ownedComment xmi:id="_r256HxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B4000338">
+ <body>Refers to the ValueSpecification denoting the minimum value of the range.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r256IxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r256IhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DE4B3CE006F" name="max" type="_3ADC7B74022D3D0254AB023D" association="_3ADC7B74022D3DE4B3CC038E">
+ <ownedComment xmi:id="_r256JxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DE4B3CE006F">
+ <body>Refers to the ValueSpecification denoting the maximum value of the range.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r256KxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r256KhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E8A09D50380" name="TimeEvent">
+ <ownedComment xmi:id="_r2m_KxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E8A09D50380">
+ <body>A time event specifies a point in time. At the specified time, the event occurs.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_gukHkGd3EdqCCpdUvbQY5w" name="when_non_negative" constrainedElement="_3ADC7B74022D3E8A09D50380">
+ <ownedComment xmi:id="_lj6s8Gd3EdqCCpdUvbQY5w" annotatedElement="_gukHkGd3EdqCCpdUvbQY5w">
+ <body>The ValueSpecification when must return a non-negative Integer.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_gukHkWd3EdqCCpdUvbQY5w">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B0885D03C9" general="_3ADC7B74022D412876E902EE"/>
+ <ownedAttribute xmi:id="_K-WjkWd3EdqCCpdUvbQY5w" name="when" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" association="_K-WjkGd3EdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_WXwr0Gd3EdqCCpdUvbQY5w" annotatedElement="_K-WjkWd3EdqCCpdUvbQY5w">
+ <body>Specifies the corresponding time deadline.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K-WjlGd3EdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K-Wjk2d3EdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WKlVIHIwEdqziYxiZo0YtA" name="Observation" isAbstract="true">
+ <ownedComment xmi:id="_vBlRoHI1EdqziYxiZo0YtA" annotatedElement="_WKlVIHIwEdqziYxiZo0YtA">
+ <body>Observation is a superclass of TimeObservation and DurationObservation in order for TimeExpression and Duration to refer to either in a simple way.</body>
+ </ownedComment>
+ <generalization xmi:id="_y_QrEHycEdq7cMP_l1l5Gg" general="_3ADC7B74022D3CB1F3A0024D"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2Lfs4HIwEdqziYxiZo0YtA" name="TimeObservation">
+ <ownedComment xmi:id="_Nn5ToHI2EdqziYxiZo0YtA" annotatedElement="_2Lfs4HIwEdqziYxiZo0YtA">
+ <body>A time observation is a reference to a time instant during an execution. It points out the element in the model to observe and whether the observation is when this model element is entered or when it is exited.</body>
+ </ownedComment>
+ <generalization xmi:id="_BP5OcHIxEdqziYxiZo0YtA" general="_WKlVIHIwEdqziYxiZo0YtA"/>
+ <ownedAttribute xmi:id="_JLbhoXIxEdqziYxiZo0YtA" name="event" type="_3ADC7B74022D3CAAECB901B0" association="_JLbhoHIxEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_QJRrQHI2EdqziYxiZo0YtA" annotatedElement="_JLbhoXIxEdqziYxiZo0YtA">
+ <body>The observation is determined by the entering or exiting of the event element during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JLbhpHIxEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JLbho3IxEdqziYxiZo0YtA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xGFc0HIxEdqziYxiZo0YtA" name="firstEvent">
+ <ownedComment xmi:id="_QjWYIHI2EdqziYxiZo0YtA" annotatedElement="_xGFc0HIxEdqziYxiZo0YtA">
+ <body>The value of firstEvent is related to event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters event. If firstEvent is false, then the corresponding observation event is the time instant the execution exits event.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_3W7IwHIxEdqziYxiZo0YtA" value="true">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_4BEHYHIwEdqziYxiZo0YtA" name="DurationObservation">
+ <ownedComment xmi:id="_JGmkoHI0EdqziYxiZo0YtA" annotatedElement="_4BEHYHIwEdqziYxiZo0YtA">
+ <body>A duration observation is a reference to a duration during an execution. It points out the element(s) in the model to observe and whether the observations are when this model element is entered or when it is exited.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ceaRYHI1EdqziYxiZo0YtA" name="first_event_multiplicity" constrainedElement="_4BEHYHIwEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_kN33cHI1EdqziYxiZo0YtA" annotatedElement="_ceaRYHI1EdqziYxiZo0YtA">
+ <body>The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ceaRYXI1EdqziYxiZo0YtA">
+ <language>OCL</language>
+ <body>if (event->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_E5i1sHIxEdqziYxiZo0YtA" general="_WKlVIHIwEdqziYxiZo0YtA"/>
+ <ownedAttribute xmi:id="_MzcKIXIxEdqziYxiZo0YtA" name="event" type="_3ADC7B74022D3CAAECB901B0" association="_MzcKIHIxEdqziYxiZo0YtA">
+ <ownedComment xmi:id="_sBVCIHI0EdqziYxiZo0YtA" annotatedElement="_MzcKIXIxEdqziYxiZo0YtA">
+ <body>The observation is determined by the entering or exiting of the event element during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MzcKJHIxEdqziYxiZo0YtA" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MzcKI3IxEdqziYxiZo0YtA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_fSccEHIxEdqziYxiZo0YtA" name="firstEvent">
+ <ownedComment xmi:id="_U20DUHI0EdqziYxiZo0YtA" annotatedElement="_fSccEHIxEdqziYxiZo0YtA">
+ <body>The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i]. Default value is true applied when event[i] refers an element that represents only one time instant.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mbKLMXIxEdqziYxiZo0YtA" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mbKLMHIxEdqziYxiZo0YtA"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_pbPRAHIxEdqziYxiZo0YtA" value="true">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFC80590129" name="A_min_durationInterval" memberEnd="_3ADC7B74022D3DFC80590327 _3ADC7B74022D3DFC80590329">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFC80590329" type="_3ADC7B74022D3DE4B5A00340" association="_3ADC7B74022D3DFC80590129">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q9USkU--EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q9USkE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFC80870053" name="A_max_durationInterval" memberEnd="_3ADC7B74022D3DFC808703B0 _3ADC7B74022D3DFC808703B2">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFC808703B2" type="_3ADC7B74022D3DE4B5A00340" association="_3ADC7B74022D3DFC80870053">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rohywU--EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rohywE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFC802D03A6" name="A_max_timeInterval" memberEnd="_3ADC7B74022D3DFC802E02A3 _3ADC7B74022D3DFC802E02AD">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFC802E02AD" type="_3ADC7B74022D3DE4B5320049" association="_3ADC7B74022D3DFC802D03A6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qQBHsU--EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qQBHsE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFC800500EC" name="A_min_timeInterval" memberEnd="_3ADC7B74022D3DFC80050381 _3ADC7B74022D3DFC80050383">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFC80050383" type="_3ADC7B74022D3DE4B5320049" association="_3ADC7B74022D3DFC800500EC">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pZLmUE--EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pZB1UE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE4B6730394" name="A_specification_timeConstraint" memberEnd="_3ADC7B74022D3DE4B6740273 _3ADC7B74022D3DE4B674027D">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE4B674027D" type="_3ADC7B74022D3DE4B652035A" association="_3ADC7B74022D3DE4B6730394">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AfpBAU--EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AfpBAE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE4B6AD0275" name="A_specification_durationConstraint" memberEnd="_3ADC7B74022D3DE4B6AE0258 _3ADC7B74022D3DE4B6AE025A">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE4B6AE025A" type="_3ADC7B74022D3DE4B68A0120" association="_3ADC7B74022D3DE4B6AD0275">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CIGMkU--EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CIGMkE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE4B3FF0341" name="A_min_interval" memberEnd="_3ADC7B74022D3DE4B4000338 _3ADC7B74022D3DE4B40003A6">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE4B40003A6" type="_3ADC7B74022D3DE4B3AC0189" association="_3ADC7B74022D3DE4B3FF0341">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eFlLIE--EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eFbaIE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE4B3CC038E" name="A_max_interval" memberEnd="_3ADC7B74022D3DE4B3CE006F _3ADC7B74022D3DE4B3CE00F1">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE4B3CE00F1" type="_3ADC7B74022D3DE4B3AC0189" association="_3ADC7B74022D3DE4B3CC038E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e0NywU--EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e0NywE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DE4B63B02CB" name="A_specification_intervalConstraint" memberEnd="_3ADC7B74022D3DE4B63C01B4 _3ADC7B74022D3DE4B63C01B6">
+ <ownedEnd xmi:id="_3ADC7B74022D3DE4B63C01B6" type="_3ADC7B74022D3DE4B5F002CD" association="_3ADC7B74022D3DE4B63B02CB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BazBsU--EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BazBsE--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_kHKkwHIwEdqziYxiZo0YtA" name="A_observation_duration" memberEnd="_kHKkwXIwEdqziYxiZo0YtA _kHKkwnIwEdqziYxiZo0YtA">
+ <ownedEnd xmi:id="_kHKkwnIwEdqziYxiZo0YtA" type="_3ADC7B74022D3DE4B589009E" association="_kHKkwHIwEdqziYxiZo0YtA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wj9AYU-9EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wj9AYE-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_o-5IsHIwEdqziYxiZo0YtA" name="A_observation_timeExpression" memberEnd="_o-5IsXIwEdqziYxiZo0YtA _o-5IsnIwEdqziYxiZo0YtA">
+ <ownedEnd xmi:id="_o-5IsnIwEdqziYxiZo0YtA" type="_3ADC7B74022D3DE4B43D032C" association="_o-5IsHIwEdqziYxiZo0YtA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vOaw0U-9EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vOaw0E-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_K-WjkGd3EdqCCpdUvbQY5w" name="A_when_timeEvent" memberEnd="_K-WjkWd3EdqCCpdUvbQY5w _K-Wjkmd3EdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_K-Wjkmd3EdqCCpdUvbQY5w" type="_3ADC7B74022D3E8A09D50380" association="_K-WjkGd3EdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8I_J0U-9EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8I_J0E-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_OJzLAHIvEdqziYxiZo0YtA" name="A_expr_timeExpression" memberEnd="_OJzLAXIvEdqziYxiZo0YtA _OJzLAnIvEdqziYxiZo0YtA">
+ <ownedEnd xmi:id="_OJzLAnIvEdqziYxiZo0YtA" type="_3ADC7B74022D3DE4B43D032C" association="_OJzLAHIvEdqziYxiZo0YtA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uZ91EU-9EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uZ91EE-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_ToRl4HIvEdqziYxiZo0YtA" name="A_expr_duration" memberEnd="_ToRl4XIvEdqziYxiZo0YtA _ToRl4nIvEdqziYxiZo0YtA">
+ <ownedEnd xmi:id="_ToRl4nIvEdqziYxiZo0YtA" type="_3ADC7B74022D3DE4B589009E" association="_ToRl4HIvEdqziYxiZo0YtA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M7Xh4U--EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M7Xh4E--EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JLbhoHIxEdqziYxiZo0YtA" name="A_event_timeObservation" memberEnd="_JLbhoXIxEdqziYxiZo0YtA _JLbhonIxEdqziYxiZo0YtA">
+ <ownedEnd xmi:id="_JLbhonIxEdqziYxiZo0YtA" type="_2Lfs4HIwEdqziYxiZo0YtA" association="_JLbhoHIxEdqziYxiZo0YtA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1JXFQU-9EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1JXFQE-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_MzcKIHIxEdqziYxiZo0YtA" name="A_event_durationObservation" memberEnd="_MzcKIXIxEdqziYxiZo0YtA _MzcKInIxEdqziYxiZo0YtA">
+ <ownedEnd xmi:id="_MzcKInIxEdqziYxiZo0YtA" type="_4BEHYHIwEdqziYxiZo0YtA" association="_MzcKIHIxEdqziYxiZo0YtA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_11BRYU-9EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_11BRYE-9EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D55305E01BF" name="Components">
+ <packageImport xmi:id="_MS4rED9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3ADCA16503D6"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D5531EE03C3" name="PackagingComponents">
+ <packageMerge xmi:id="_HCKxgBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3E0251EF01F0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0251CD020F" name="Component">
+ <ownedComment xmi:id="_h1gSAOD7EdqI1ohUEQYFdg" annotatedElement="_3ADC7B74022D3E0251CD020F">
+ <body>In the namespace of a component, all model elements that are involved in or related to its definition are either owned or imported explicitly. This may include, for example, use cases and dependencies (e.g. mappings), packages, components, and artifacts.</body>
+ </ownedComment>
+ <generalization xmi:id="_T33SMEfLEdq0rbStTpEubg" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0252E500C9" name="packagedElement" type="_3ADC7B74022D3CB1F3A0024D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3E0252E500C7">
+ <ownedComment xmi:id="_sahkkhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0252E500C9">
+ <body>The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sahklhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sahklRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0252E500C7" name="A_component_packagedElement" memberEnd="_3ADC7B74022D3E0252E500C8 _3ADC7B74022D3E0252E500C9">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0252E500C8" type="_3ADC7B74022D3E0251CD020F" association="_3ADC7B74022D3E0252E500C7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sahkkBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sahkjxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E0251EF01F0" name="BasicComponents">
+ <packageMerge xmi:id="_HCKxgRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3ADF556A0044"/>
+ <packageMerge xmi:id="_HCKxghTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3D5EC5B702B8"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0251F50022" name="Component">
+ <ownedComment xmi:id="_saqueBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0251F50022">
+ <body>A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E02522B02DC" general="_3ADC7B74022D3D5EC6DD001C"/>
+ <generalization xmi:id="_rdzBwEcHEdq0rbStTpEubg" general="_3ADC7B74022D3CC0E4E5029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E02573803AE" name="isIndirectlyInstantiated">
+ <ownedComment xmi:id="_saqujxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E02573803AE">
+ <body>The kind of instantiation that applies to a Component. If false, the component is instantiated as an addressable object. If true, the Component is defined at design-time, but at runtime (or execution-time) an object specified by the Component does not exist, that is, the component is instantiated indirectly, through the instantiation of its realizing classifiers or parts. Several standard stereotypes use this meta attribute, e.g. &lt;&lt;specification>>, &lt;&lt;focus>>, &lt;&lt;subsystem>>.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_5bDVEF0nEdq3-fC14hmVtA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0257890057" name="required" type="_3ADC7B74022D3342A195014D" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3E02578801B4">
+ <ownedComment xmi:id="_sbHaZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0257890057">
+ <body>The interfaces that the component requires from other components in its environment in order to be able to offer its full set of provided functionality. These interfaces may be Used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbHaahTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbHaaRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0257B9029B" name="provided" type="_3ADC7B74022D3342A195014D" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3E0257B900D8">
+ <ownedComment xmi:id="_sbHacBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0257B9029B">
+ <body>The interfaces that the component exposes to its environment. These interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbHadBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbHacxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0257FB01C4" name="realization" type="_3ADC7B74022D3E02572A001E" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E0257FB00D3">
+ <ownedComment xmi:id="_sbRLYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0257FB01C4">
+ <body>The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbRLZhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbRLZRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300E4980280" name="realizedInterfaces" isQuery="true" bodyCondition="_saqugRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_saqufRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300E4980280">
+ <body>Utility returning the set of realized interfaces of a component:</body>
+ </ownedComment>
+ <ownedRule xmi:id="_saqugRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300E4980280">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_saqughTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (classifier.clientDependency->&#xA;select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface)))->&#xA;collect(dependency|dependency.client)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_saqugBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3342A195014D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HCdscRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HCdscBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_M5nGgGG9EdqXl-ScCKiacA" name="classifier" type="_3ADC7B74022D3CAAECE80199" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300E4AF032C" name="usedInterfaces" isQuery="true" bodyCondition="_saquihTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_saquhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300E4AF032C">
+ <body>Utility returning the set of used interfaces of a component:</body>
+ </ownedComment>
+ <ownedRule xmi:id="_saquihTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300E4AF032C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_saquixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (classifier.supplierDependency->&#xA;select(dependency|dependency.oclIsKindOf(Usage) and dependency.supplier.oclIsKindOf(interface)))->&#xA;collect(dependency|dependency.supplier)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_saquiRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3342A195014D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HCdscxTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HCdschTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RcLSwGG9EdqXl-ScCKiacA" name="classifier" type="_3ADC7B74022D3CAAECE80199" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_xc4UQDZ9Edqq1tCaRkgBQQ" name="required" isQuery="true" bodyCondition="_YjOdoDZ-Edqq1tCaRkgBQQ">
+ <ownedRule xmi:id="_YjOdoDZ-Edqq1tCaRkgBQQ" name="spec" constrainedElement="_xc4UQDZ9Edqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_YjOdoTZ-Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = let usedInterfaces = UsedInterfaces(self) and&#xD;&#xA; let realizingClassifierUsedInterfaces = UsedInterfaces(self.realizingClassifier) and&#xD;&#xA; let typesOfUsedPorts = self.ownedPort.required in&#xD;&#xA; ((usedInterfaces->union(realizingClassifierUsedInterfaces))->&#xD;&#xA; union(typesOfUsedPorts))->asSet()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_4GmaQDZ9Edqq1tCaRkgBQQ" type="_3ADC7B74022D3342A195014D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TNiyYTZ-Edqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TNiyYDZ-Edqq1tCaRkgBQQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_2cFjwDZ-Edqq1tCaRkgBQQ" name="provided" isQuery="true" bodyCondition="_-L2r0DZ-Edqq1tCaRkgBQQ">
+ <ownedRule xmi:id="_-L2r0DZ-Edqq1tCaRkgBQQ" name="spec" constrainedElement="_2cFjwDZ-Edqq1tCaRkgBQQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_-L2r0TZ-Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>result = let implementedInterfaces = self.implementation->collect(impl|impl.contract) and&#xD;&#xA; let realizedInterfaces = RealizedInterfaces(self) and&#xD;&#xA; let realizingClassifierInterfaces = RealizedInterfaces(self.realizingClassifier) and&#xD;&#xA; let typesOfRequiredPorts = self.ownedPort.provided in&#xD;&#xA; (((implementedInterfaces->union(realizedInterfaces)->union(realizingClassifierInterfaces))->&#xD;&#xA; union(typesOfRequiredPorts))->asSet()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_5L7OIDZ-Edqq1tCaRkgBQQ" type="_3ADC7B74022D3342A195014D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7-ljATZ-Edqq1tCaRkgBQQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7-ljADZ-Edqq1tCaRkgBQQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E02572A001E" name="ComponentRealization">
+ <ownedComment xmi:id="_sa0fcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E02572A001E">
+ <body>The realization concept is specialized to (optionally) define the classifiers that realize the contract offered by a component in terms of its provided and required interfaces. The component forms an abstraction from these various classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_Q0xU0EfwEdq0rbStTpEubg" general="_3ADC7B74022D3B71F6410244"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0257FB01E2" name="abstraction" type="_3ADC7B74022D3E0251F50022" subsettedProperty="_3ADC7B74022D3CAAEEA60189 _3ADC7B74022D3AFF02160001" association="_3ADC7B74022D3E0257FB00D3">
+ <ownedComment xmi:id="_FqQFUGd6EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3E0257FB01E2">
+ <body>The Component that owns this ComponentRealization and which is implemented by its realizing classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbRLaxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbRLahTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E02589F0011" name="realizingClassifier" type="_3ADC7B74022D3CAAECE80199" subsettedProperty="_3ADC7B74022D3AFF021C0000" association="_3ADC7B74022D3E02589E0218">
+ <ownedComment xmi:id="_Lq2V0Gd6EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3E02589F0011">
+ <body>A classifier that is involved in the implementation of the Component that owns this ComponentRealization.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbRLbxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbRLbhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0259870386" name="Connector">
+ <ownedComment xmi:id="_sa0feBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0259870386">
+ <body>A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the internal realization of that behavior by the component's parts. It represents the forwarding of signals (operation requests and events): a signal that arrives at a port that has a delegation connector to a part or to another port will be passed on to that target for handling.&#xD;
+An assembly connector is a connector between two components that defines that one component provides the services that another component requires. An assembly connector is a connector that is defined from a required interface or port to a provided interface or port.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sa0fgBTaEdqZu-3Jy1-uYg" name="between_interfaces_ports" constrainedElement="_3ADC7B74022D3E0259870386">
+ <ownedComment xmi:id="_sa0ffBTaEdqZu-3Jy1-uYg" annotatedElement="_sa0fgBTaEdqZu-3Jy1-uYg">
+ <body>A delegation connector must only be defined between used Interfaces or Ports of the same kind, e.g. between two provided Ports or between two required Ports.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sa0fgRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sa0fiRTaEdqZu-3Jy1-uYg" name="between_interface_port_implements" constrainedElement="_3ADC7B74022D3E0259870386">
+ <ownedComment xmi:id="_sa0fhRTaEdqZu-3Jy1-uYg" annotatedElement="_sa0fiRTaEdqZu-3Jy1-uYg">
+ <body>If a delegation connector is defined between a used Interface or Port and an internal Part Classifier, then that Classifier must have an 'implements' relationship to the Interface type of that Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sa0fihTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sa9pYxTaEdqZu-3Jy1-uYg" name="between_interface_port_signature" constrainedElement="_3ADC7B74022D3E0259870386">
+ <ownedComment xmi:id="_sa0fjhTaEdqZu-3Jy1-uYg" annotatedElement="_sa9pYxTaEdqZu-3Jy1-uYg">
+ <body>If a delegation connector is defined between a source Interface or Port and a target Interface or Port, then the target Interface must support a signature compatible subset of Operations of the source Interface or Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sa9pZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sa9pbBTaEdqZu-3Jy1-uYg" name="union_signature_compatible" constrainedElement="_3ADC7B74022D3E0259870386">
+ <ownedComment xmi:id="_sa9paBTaEdqZu-3Jy1-uYg" annotatedElement="_sa9pbBTaEdqZu-3Jy1-uYg">
+ <body>In a complete model, if a source Port has delegation connectors to a set of delegated target Ports, then the union of the Interfaces of these target Ports must be signature compatible with the Interface that types the source Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sa9pbRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sa9pdRTaEdqZu-3Jy1-uYg" name="assembly_connector" constrainedElement="_3ADC7B74022D3E0259870386">
+ <ownedComment xmi:id="_sa9pcRTaEdqZu-3Jy1-uYg" annotatedElement="_sa9pdRTaEdqZu-3Jy1-uYg">
+ <body>An assembly connector must only be defined from a required Interface or Ports to a provided Interface or Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sa9pdhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0259E30107" name="kind" type="_3ADC7B74022D3E025A1801EA">
+ <ownedComment xmi:id="_sa9pehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0259E30107">
+ <body>Indicates the kind of connector.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sa9pfhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sa9pfRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E025A790211" name="contract" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3E025A790012">
+ <ownedComment xmi:id="_69_W8Gd5EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3E025A790211">
+ <body>The set of Behaviors that specify the valid interaction patterns across the connector.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbRLdBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbRLcxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3E025A1801EA" name="ConnectorKind">
+ <ownedComment xmi:id="_Kn6cIOEeEdqI1ohUEQYFdg" annotatedElement="_3ADC7B74022D3E025A1801EA">
+ <body>ConnectorKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3E025A2C004E" name="assembly">
+ <ownedComment xmi:id="_sa9phBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E025A2C004E">
+ <body>Indicates that the connector is an assembly connector.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3E025A320060" name="delegation">
+ <ownedComment xmi:id="_sbHaYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E025A320060">
+ <body>Indicates that the connector is a delegation connector.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E02578801B4" name="A_required_component" memberEnd="_3ADC7B74022D3E0257890057 _3ADC7B74022D3E0257890089">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0257890089" type="_3ADC7B74022D3E0251F50022" association="_3ADC7B74022D3E02578801B4">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3zsToU-0EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3zsToE-0EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0257B900D8" name="A_provided_component" memberEnd="_3ADC7B74022D3E0257B9029B _3ADC7B74022D3E0257B902D7">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0257B902D7" type="_3ADC7B74022D3E0251F50022" association="_3ADC7B74022D3E0257B900D8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5JOjMU-0EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5JOjME-0EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0257FB00D3" name="A_realization_abstraction" memberEnd="_3ADC7B74022D3E0257FB01C4 _3ADC7B74022D3E0257FB01E2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E02589E0218" name="A_realizingClassifier_componentRealization" memberEnd="_3ADC7B74022D3E02589F0011 _3ADC7B74022D3E02589F00F7">
+ <ownedEnd xmi:id="_3ADC7B74022D3E02589F00F7" type="_3ADC7B74022D3E02572A001E" association="_3ADC7B74022D3E02589E0218">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9k8gkU-0EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9k8gkE-0EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E025A790012" name="A_contract_connector" memberEnd="_3ADC7B74022D3E025A790211 _3ADC7B74022D3E025A7A0032">
+ <ownedEnd xmi:id="_3ADC7B74022D3E025A7A0032" type="_3ADC7B74022D3E0259870386" association="_3ADC7B74022D3E025A790012">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbRLdxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbRLdhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3ADCA16503D6" name="CompositeStructures">
+ <packageImport xmi:id="_NQuMUD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D552D4C038C"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D5EC5B702B8" name="StructuredClasses">
+ <packageMerge xmi:id="_Gmm24BTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3D0259DF00A8"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D5EC6DD001C" name="Class">
+ <ownedComment xmi:id="_ru2xWxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D5EC6DD001C">
+ <body>A class has the capability to have an internal structure and ports.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D5EC6FE01E6" general="_3ADC7B74022D3D02622E0223"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3ADCA176014F" name="Collaborations">
+ <packageMerge xmi:id="_GmwA0BTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B8851380231" name="CollaborationUse">
+ <ownedComment xmi:id="_rvAiUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8851380231">
+ <body>A collaboration use represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration use shows how the pattern described by a collaboration is applied in a given context, by binding specific entities from that context to the roles of the collaboration. Depending on the context, these entities could be structural features of a classifier, instance specifications, or even roles in some containing collaboration. There may be multiple occurrences of a given collaboration within a classifier, each involving a different set of roles and connectors. A given role or connector may be involved in multiple occurrences of the same or different collaborations.&#xD;
+Associated dependencies map features of the collaboration type to features in the classifier. These dependencies indicate which role in the classifier plays which role in the collaboration.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rvAiXBTaEdqZu-3Jy1-uYg" name="client_elements" constrainedElement="_3ADC7B74022D3B8851380231">
+ <ownedComment xmi:id="_rvAiWBTaEdqZu-3Jy1-uYg" annotatedElement="_rvAiXBTaEdqZu-3Jy1-uYg">
+ <body>All the client elements of a roleBinding are in one classifier and all supplier elements of a roleBinding are in one collaboration and they are compatible.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvAiXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rvAiZRTaEdqZu-3Jy1-uYg" name="every_role" constrainedElement="_3ADC7B74022D3B8851380231">
+ <ownedComment xmi:id="_rvAiYRTaEdqZu-3Jy1-uYg" annotatedElement="_rvAiZRTaEdqZu-3Jy1-uYg">
+ <body>Every role in the collaboration is bound within the collaboration use to a connectable element within the classifier or operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvAiZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rvAibhTaEdqZu-3Jy1-uYg" name="connectors" constrainedElement="_3ADC7B74022D3B8851380231">
+ <ownedComment xmi:id="_rvAiahTaEdqZu-3Jy1-uYg" annotatedElement="_rvAibhTaEdqZu-3Jy1-uYg">
+ <body>The connectors in the classifier connect according to the connectors in the collaboration</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvAibxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DFE32020032" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B8851380234" name="type" type="_3ADC7B74022D337A47290078" association="_3ADC7B74022D3B8851380233">
+ <ownedComment xmi:id="_rvKTbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8851380234">
+ <body>The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvKTcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvKTbxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B885138027F" name="roleBinding" type="_3ADC7B74022D327A646F00E6" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3B885138027E">
+ <ownedComment xmi:id="_rvTdQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B885138027F">
+ <body>A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles).&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvTdRhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvTdRRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D337A47290078" name="Collaboration">
+ <ownedComment xmi:id="_rvAicxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D337A47290078">
+ <body>A collaboration use represents the application of the pattern described by a collaboration to a specific situation involving specific classes or instances playing the roles of the collaboration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CCB577200C8" general="_3ADC7B74022D3CC1A6A70282"/>
+ <generalization xmi:id="_3ADC7B74022D3D02655C0260" general="_3ADC7B74022D3CC16E2301C0"/>
+ <generalization xmi:id="_3ADC7B74022D3D09B456016C" general="_3ADC7B74022D3CC0D5FF02D3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CD7587F0383" name="collaborationRole" type="_3ADC7B74022D3CC16F5A00A4" subsettedProperty="_3ADC7B74022D3E2212D701CF" association="_3ADC7B74022D3CD7587F0148">
+ <ownedComment xmi:id="_rwyrBRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CD7587F0383">
+ <body>References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rwyrCRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rwyrCBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC1A6A70282" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rvKTVhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC1A6A70282">
+ <body>A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B9BC4E01EF" general="_3ADC7B74022D3CAB007101D7"/>
+ <generalization xmi:id="_3ADC7B74022D41B9BC540234" general="_3ADC7B74022D3CAAECC502DA"/>
+ <generalization xmi:id="_3ADC7B74022D41B9BC5A012E" general="_3ADC7B74022D3E5920C2014E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD646130104" name="representation" type="_3ADC7B74022D3B8851380231" subsettedProperty="_3ADC7B74022D3BD6464A01D6" association="_3ADC7B74022D3BD646120167">
+ <ownedComment xmi:id="_rvTdTxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD646130104">
+ <body>References a collaboration use which indicates the collaboration that represents this classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvTdUxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvTdUhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD6464A01D6" name="collaborationUse" type="_3ADC7B74022D3B8851380231" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3BD64649030B">
+ <ownedComment xmi:id="_rvTdVhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD6464A01D6">
+ <body>References the collaboration uses owned by the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rwDEIRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rwDEIBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D026486014A" name="Parameter">
+ <ownedComment xmi:id="_rvKTXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D026486014A">
+ <body>Parameters are allowed to be treated as connectable elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rvKTZhTaEdqZu-3Jy1-uYg" name="connector_end" constrainedElement="_3ADC7B74022D3D026486014A">
+ <ownedComment xmi:id="_rvKTYhTaEdqZu-3Jy1-uYg" annotatedElement="_rvKTZhTaEdqZu-3Jy1-uYg">
+ <body>A parameter may only be associated with a connector end within the context of a collaboration.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rvKTZxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.end.notEmpty() implies self.collaboration.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CECF738005F" general="_3ADC7B74022D3CC16F5A00A4"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B8851380233" name="A_type_collaborationUse" memberEnd="_3ADC7B74022D3B8851380234 _3ADC7B74022D3B8851380235">
+ <ownedEnd xmi:id="_3ADC7B74022D3B8851380235" type="_3ADC7B74022D3B8851380231" association="_3ADC7B74022D3B8851380233">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvKTcxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvKTchTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B885138027E" name="A_roleBinding_collaborationUse" memberEnd="_3ADC7B74022D3B885138027F _3ADC7B74022D3B8851380280">
+ <ownedEnd xmi:id="_3ADC7B74022D3B8851380280" type="_3ADC7B74022D3B8851380231" association="_3ADC7B74022D3B885138027E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvTdSRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvTdSBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD646120167" name="A_classifier_representation" memberEnd="_3ADC7B74022D3BD6461300FA _3ADC7B74022D3BD646130104">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD6461300FA" type="_3ADC7B74022D3CC1A6A70282" association="_3ADC7B74022D3BD646120167">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvTdTRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvTdTBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD64649030B" name="A_collaborationUse_classifier" memberEnd="_3ADC7B74022D3BD6464A01D6 _3ADC7B74022D3BD6464A01EA">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD6464A01EA" type="_3ADC7B74022D3CC1A6A70282" association="_3ADC7B74022D3BD64649030B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rwyrAhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rwyrARTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CD7587F0148" name="A_collaborationRole_collaboration" memberEnd="_3ADC7B74022D3CD7587F0383 _3ADC7B74022D3CD7587F0397">
+ <ownedEnd xmi:id="_3ADC7B74022D3CD7587F0397" type="_3ADC7B74022D337A47290078" association="_3ADC7B74022D3CD7587F0148">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rw8cARTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rw8cABTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D0259DF00A8" name="Ports">
+ <packageImport xmi:id="_IDgWAD9JEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3BAF164701DA"/>
+ <packageImport xmi:id="_LLVCkD9JEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_GnC7whTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packageMerge xmi:id="_GnC7wxTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3CFC224902BF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3BAFE2B3012C" name="Port">
+ <ownedComment xmi:id="_rw8cERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BAFE2B3012C">
+ <body>A port is a property of a classifier that specifies a distinct interaction point between that classifier and its environment or between the (behavior of the) classifier and its internal parts. Ports are connected to properties of the classifier by connectors through which requests can be made to invoke the behavioral features of a classifier. A Port may specify the services a classifier provides (offers) to its environment as well as the services that a classifier expects (requires) of its environment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rxGNCBTaEdqZu-3Jy1-uYg" name="required_interfaces" constrainedElement="_3ADC7B74022D3BAFE2B3012C">
+ <ownedComment xmi:id="_rxGNBBTaEdqZu-3Jy1-uYg" annotatedElement="_rxGNCBTaEdqZu-3Jy1-uYg">
+ <body>The required interfaces of a port must be provided by elements to which the port is connected.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxGNCRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rxGNERTaEdqZu-3Jy1-uYg" name="port_aggregation" constrainedElement="_3ADC7B74022D3BAFE2B3012C">
+ <ownedComment xmi:id="_rxGNDRTaEdqZu-3Jy1-uYg" annotatedElement="_rxGNERTaEdqZu-3Jy1-uYg">
+ <body>Port.aggregation must be composite.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxGNEhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rxGNGhTaEdqZu-3Jy1-uYg" name="port_destroyed" constrainedElement="_3ADC7B74022D3BAFE2B3012C">
+ <ownedComment xmi:id="_rxGNFhTaEdqZu-3Jy1-uYg" annotatedElement="_rxGNGhTaEdqZu-3Jy1-uYg">
+ <body>When a port is destroyed, all connectors attached to this port will be destroyed also.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxGNGxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rxGNIxTaEdqZu-3Jy1-uYg" name="default_value" constrainedElement="_3ADC7B74022D3BAFE2B3012C">
+ <ownedComment xmi:id="_rxGNHxTaEdqZu-3Jy1-uYg" annotatedElement="_rxGNIxTaEdqZu-3Jy1-uYg">
+ <body>A defaultValue for port cannot be specified when the type of the Port is an Interface</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxGNJBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3BAF6FE003E4" general="_3ADC7B74022D3B99825E03B4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC172EC02B1" name="isBehavior">
+ <ownedComment xmi:id="_rxGNKBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC172EC02B1">
+ <body>Specifies whether requests arriving at this port are sent to the classifier behavior of this classifier. Such ports are referred to as behavior port. Any invocation of a behavioral feature targeted at a behavior port will be handled by the instance of the owning classifier itself, rather than by any instances that this classifier may contain.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GnC7xBTbEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CECF626014B" name="isService">
+ <ownedComment xmi:id="_rxPW8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CECF626014B">
+ <body>If true indicates that this port is used to provide the published functionality of a classifier; if false, this port is used to implement the classifier but is not part of the essential externally-visible functionality of the classifier and can, therefore, be altered or deleted along with the internal implementation of the classifier and other properties that are considered part of its implementation.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GnMswBTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CCB579E00F4" name="required" type="_3ADC7B74022D3342A195014D" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3CCB579D0201">
+ <ownedComment xmi:id="_T5POsBWYEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3CCB579E00F4">
+ <body>References the interfaces specifying the set of operations and receptions which the classifier expects its environment to handle. This association is derived as the set of interfaces required by the type of the port or its supertypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxZIBBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxZIAxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC4DDF3021C" name="redefinedPort" type="_3ADC7B74022D3BAFE2B3012C" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CC4DDF101FB">
+ <ownedComment xmi:id="_rxZIDBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC4DDF3021C">
+ <body>A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxZIEBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxZIDxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D03D15C008B" name="provided" type="_3ADC7B74022D3342A195014D" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3D03D15B01DE">
+ <ownedComment xmi:id="_rxi48xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D03D15C008B">
+ <body>References the interfaces specifying the set of operations and receptions which the classifier offers to its environment, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived from the interfaces realized by the type of the port or by the type of the port, if the port was typed by an interface.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxi49xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxi49hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D02622E0223" name="EncapsulatedClassifier" isAbstract="true">
+ <ownedComment xmi:id="_rxPW-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D02622E0223">
+ <body>A classifier has the ability to own ports as specific and type checked interaction points.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D5EC6A50011" general="_3ADC7B74022D3CC16E2301C0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D02623F03E2" name="ownedPort" type="_3ADC7B74022D3BAFE2B3012C" isDerived="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3BC8B2620081" association="_3ADC7B74022D3D02623F03E0">
+ <ownedComment xmi:id="_rxZH_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D02623F03E2">
+ <body>References a set of ports that an encapsulated classifier owns.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxZIABTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxZH_xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D02637E02B3" name="ConnectorEnd">
+ <ownedComment xmi:id="_rxPW_RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D02637E02B3">
+ <body>A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rxPXBRTaEdqZu-3Jy1-uYg" name="part_with_port_empty" constrainedElement="_3ADC7B74022D3D02637E02B3">
+ <ownedComment xmi:id="_rxPXARTaEdqZu-3Jy1-uYg" annotatedElement="_rxPXBRTaEdqZu-3Jy1-uYg">
+ <body>If a connector end is attached to a port of the containing classifier, partWithPort will be empty.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxPXBhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rxPXDhTaEdqZu-3Jy1-uYg" name="role_and_part_with_port" constrainedElement="_3ADC7B74022D3D02637E02B3">
+ <ownedComment xmi:id="_rxPXChTaEdqZu-3Jy1-uYg" annotatedElement="_rxPXDhTaEdqZu-3Jy1-uYg">
+ <body>If a connector end references both a role and a partWithPort, then the role must be a port that is defined by the type of the partWithPort.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxPXDxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rxZH8xTaEdqZu-3Jy1-uYg" name="self_part_with_port" constrainedElement="_3ADC7B74022D3D02637E02B3">
+ <ownedComment xmi:id="_rxPXExTaEdqZu-3Jy1-uYg" annotatedElement="_rxZH8xTaEdqZu-3Jy1-uYg">
+ <body>The property held in self.partWithPort must not be a Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxZH9BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFDFE260321" name="partWithPort" type="_3ADC7B74022D3B99825E03B4" association="_3ADC7B74022D3DFDFE26010E">
+ <ownedComment xmi:id="_rxi4_xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFDFE260321">
+ <body>Indicates the role of the internal structure of a classifier with the port to which the connector end is attached.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxi5AxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxi5AhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D02623F03E0" name="A_encapsulatedClassifier_ownedPort" memberEnd="_3ADC7B74022D3D02623F03E1 _3ADC7B74022D3D02623F03E2">
+ <ownedEnd xmi:id="_3ADC7B74022D3D02623F03E1" type="_3ADC7B74022D3D02622E0223" subsettedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3D02623F03E0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxZH-hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxZH-RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CCB579D0201" name="A_required_port" memberEnd="_3ADC7B74022D3CCB579E00F4 _3ADC7B74022D3CCB579E00FE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CCB579E00FE" type="_3ADC7B74022D3BAFE2B3012C" association="_3ADC7B74022D3CCB579D0201">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxZICRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxZICBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC4DDF101FB" name="A_redefinedPort_port" memberEnd="_3ADC7B74022D3CC4DDF3021C _3ADC7B74022D3CC4DDF3023A">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC4DDF3023A" type="_3ADC7B74022D3BAFE2B3012C" association="_3ADC7B74022D3CC4DDF101FB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxi48BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxZIEhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D03D15B01DE" name="A_provided_port" memberEnd="_3ADC7B74022D3D03D15C008B _3ADC7B74022D3D03D15C009F">
+ <ownedEnd xmi:id="_3ADC7B74022D3D03D15C009F" type="_3ADC7B74022D3BAFE2B3012C" association="_3ADC7B74022D3D03D15B01DE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxi4_BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxi4-xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFDFE26010E" name="A_partWithPort_connectorEnd" memberEnd="_3ADC7B74022D3DFDFE260321 _3ADC7B74022D3DFDFE26032B">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFDFE26032B" type="_3ADC7B74022D3D02637E02B3" association="_3ADC7B74022D3DFDFE26010E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YX6z0U-1EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YX6z0E-1EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E0C9C9E02E6" name="InvocationActions">
+ <packageMerge xmi:id="_GnyiohTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3D0259DF00A8"/>
+ <packageMerge xmi:id="_GnyioxTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D410C264F010C"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E11E70C01CE" name="InvocationAction" isAbstract="true">
+ <ownedComment xmi:id="_rxsC6BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E11E70C01CE">
+ <body>In addition to targeting an object, invocation actions can also invoke behavioral features on ports from where the invocation requests are routed onwards on links deriving from attached connectors. Invocation actions may also be sent to a target via a given port, either on the sending object or on another object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rxsC8BTaEdqZu-3Jy1-uYg" name="on_port_receiver" constrainedElement="_3ADC7B74022D3E11E70C01CE">
+ <ownedComment xmi:id="_rxsC7BTaEdqZu-3Jy1-uYg" annotatedElement="_rxsC8BTaEdqZu-3Jy1-uYg">
+ <body>The onPort must be a port on the receiver object.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rxsC8RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0226050087" name="onPort" type="_3ADC7B74022D3BAFE2B3012C" association="_3ADC7B74022D3E022603035F">
+ <ownedComment xmi:id="_rx1z5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0226050087">
+ <body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rx1z6RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rx1z6BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E11EB4B013B" name="Trigger" isAbstract="true">
+ <ownedComment xmi:id="_rxsC9RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E11EB4B013B">
+ <body>A trigger specification may be qualified by the port on which the event occurred.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DF3E93C0169" name="port" type="_3ADC7B74022D3BAFE2B3012C" association="_3ADC7B74022D3DF3E93A0396">
+ <ownedComment xmi:id="_rxsC-hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DF3E93C0169">
+ <body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rxsC_hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rxsC_RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DF3E93A0396" name="A_port_trigger" memberEnd="_3ADC7B74022D3DF3E93C0169 _3ADC7B74022D3DF3E93C016B">
+ <ownedEnd xmi:id="_3ADC7B74022D3DF3E93C016B" type="_3ADC7B74022D3E11EB4B013B" association="_3ADC7B74022D3DF3E93A0396">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rx1z4hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rx1z4RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E022603035F" name="A_onPort_invocationAction" memberEnd="_3ADC7B74022D3E0226050087 _3ADC7B74022D3E02260500D7">
+ <ownedEnd xmi:id="_3ADC7B74022D3E02260500D7" type="_3ADC7B74022D3E11E70C01CE" association="_3ADC7B74022D3E022603035F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rx1z7BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rx1z6xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3BAE542B0121" name="InternalStructures">
+ <packageMerge xmi:id="_Gn8ToBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAF164701DA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B6D744E008C" name="ConnectorEnd">
+ <ownedComment xmi:id="_rx_k5RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B6D744E008C">
+ <body>A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_HVpQIDamEdqq1tCaRkgBQQ" name="multiplicity" constrainedElement="_3ADC7B74022D3B6D744E008C">
+ <ownedComment xmi:id="_TXbnADamEdqq1tCaRkgBQQ" annotatedElement="_HVpQIDamEdqq1tCaRkgBQQ">
+ <body>The multiplicity of the connector end may not be more general than the multiplicity of the association typing the owning connector.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_HVyaEDamEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DFFB5D6036F" general="_3ADC7B74022D3CAAFD5202DC"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E22160503E3" name="definingEnd" type="_3ADC7B74022D3B99825E03B4" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3E2216050202">
+ <ownedComment xmi:id="_ryvL4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E22160503E3">
+ <body>A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ry4VsxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ry4VshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E2216A30141" name="role" type="_3ADC7B74022D3CC16F5A00A4" association="_3ADC7B74022D3E2216A2021C">
+ <ownedComment xmi:id="_ry4VwRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2216A30141">
+ <body>The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ry4VxRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ry4VxBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B6D7514038E" name="Connector">
+ <ownedComment xmi:id="_rx_k6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B6D7514038E">
+ <body>Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_ryIu1BTaEdqZu-3Jy1-uYg" name="types" constrainedElement="_3ADC7B74022D3B6D7514038E">
+ <ownedComment xmi:id="_ryIu0BTaEdqZu-3Jy1-uYg" annotatedElement="_ryIu1BTaEdqZu-3Jy1-uYg">
+ <body>The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ryIu1RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_ryIu3RTaEdqZu-3Jy1-uYg" name="compatible" constrainedElement="_3ADC7B74022D3B6D7514038E">
+ <ownedComment xmi:id="_ryIu2RTaEdqZu-3Jy1-uYg" annotatedElement="_ryIu3RTaEdqZu-3Jy1-uYg">
+ <body>The connectable elements attached to the ends of a connector must be compatible.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ryIu3hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_rySf0xTaEdqZu-3Jy1-uYg" name="roles" constrainedElement="_3ADC7B74022D3B6D7514038E">
+ <ownedComment xmi:id="_ryIu4hTaEdqZu-3Jy1-uYg" annotatedElement="_rySf0xTaEdqZu-3Jy1-uYg">
+ <body>The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rySf1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B6D767D00E6" general="_3ADC7B74022D3CAAFD220337"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BB8CFCB011A" name="type" type="_3ADC7B74022D3CAB1DD70016" association="_3ADC7B74022D3BB8CFCA0231">
+ <ownedComment xmi:id="_rybp0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BB8CFCB011A">
+ <body>An optional association that specifies the link corresponding to this connector.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rybp1hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rybp1RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E2214450172" name="redefinedConnector" type="_3ADC7B74022D3B6D7514038E" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3E22144300E2">
+ <ownedComment xmi:id="_ryvLzBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2214450172">
+ <body>A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryvL0BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryvLzxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E22159003E4" name="end" type="_3ADC7B74022D3B6D744E008C" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E22158E002A">
+ <ownedComment xmi:id="_ryvL1hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E22159003E4">
+ <body>A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryvL2hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryvL2RTaEdqZu-3Jy1-uYg" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B99825E03B4" name="Property">
+ <ownedComment xmi:id="_rySf2BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B99825E03B4">
+ <body>A property represents a set of instances that are owned by a containing classifier instance.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CC16F5A00DA" general="_3ADC7B74022D3CC16F5A00A4"/>
+ <generalization xmi:id="_3ADC7B74022D41B0C9700355" general="_3ADC7B74022D3CAB08ED000D"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC16E2301C0" name="StructuredClassifier" isAbstract="true">
+ <ownedComment xmi:id="_rySf3hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC16E2301C0">
+ <body>A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_rybpwxTaEdqZu-3Jy1-uYg" name="multiplicities" constrainedElement="_3ADC7B74022D3CC16E2301C0">
+ <ownedComment xmi:id="_rySf4xTaEdqZu-3Jy1-uYg" annotatedElement="_rybpwxTaEdqZu-3Jy1-uYg">
+ <body>The multiplicities on connected elements must be consistent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_rybpxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41BDA54A00ED" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BC8B2620081" name="ownedAttribute" type="_3ADC7B74022D3B99825E03B4" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3E2212D701CF _3ADC7B74022D3CAAF0B00228 _3ADC7B74022D3CAB21AF0364" association="_3ADC7B74022D3BC8B2610260">
+ <ownedComment xmi:id="_rybp3BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC8B2620081">
+ <body>References the properties owned by the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rybp4BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rybp3xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0B98C901E2" name="part" type="_3ADC7B74022D3B99825E03B4" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3E0B98C8032B">
+ <ownedComment xmi:id="_rylaxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0B98C901E2">
+ <body>References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rylayRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rylayBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E2212D701CF" name="role" type="_3ADC7B74022D3CC16F5A00A4" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_3ADC7B74022D3CAAF1D0036C" association="_3ADC7B74022D3E2212D602E6">
+ <ownedComment xmi:id="_ryla0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2212D701CF">
+ <body>References the roles that instances may play in this classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryla1RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryla1BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E22136102A0" name="ownedConnector" type="_3ADC7B74022D3B6D7514038E" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3E22135F02F7">
+ <ownedComment xmi:id="_ryvLwhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E22136102A0">
+ <body>References the connectors owned by the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryvLxhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryvLxRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC16F5A00A4" name="ConnectableElement" isAbstract="true">
+ <ownedComment xmi:id="_rybpyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC16F5A00A4">
+ <body>ConnectableElement is an abstract metaclass representing a set of instances that play roles of a classifier. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D03CEE303AC" general="_3ADC7B74022D3CAAFD3A006B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E2216A3012D" name="end" type="_3ADC7B74022D3B6D744E008C" isOrdered="true" association="_3ADC7B74022D3E2216A2021C">
+ <ownedComment xmi:id="_ry4VuxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E2216A3012D">
+ <body>Denotes a connector that attaches to this connectable element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ry4VvxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ry4VvhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41BDAA2F0261" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_rybpzRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDAA2F0261">
+ <body>A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D41BDAA5A0141" name="attribute" type="_3ADC7B74022D3B99825E03B4" isReadOnly="true" isDerived="true" association="_3ADC7B74022D41BDAA5901EA">
+ <ownedComment xmi:id="_ry4VyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41BDAA5A0141">
+ <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="_ry4VzBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ry4VyxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BB8CFCA0231" name="A_type_connector" memberEnd="_3ADC7B74022D3BB8CFCB011A _3ADC7B74022D3BB8CFCB012E">
+ <ownedEnd xmi:id="_3ADC7B74022D3BB8CFCB012E" type="_3ADC7B74022D3B6D7514038E" association="_3ADC7B74022D3BB8CFCA0231">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rybp2RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rybp2BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BC8B2610260" name="A_ownedAttribute_structuredClassifier" memberEnd="_3ADC7B74022D3BC8B2620081 _3ADC7B74022D3BC8B26200B3">
+ <ownedEnd xmi:id="_3ADC7B74022D3BC8B26200B3" type="_3ADC7B74022D3CC16E2301C0" association="_3ADC7B74022D3BC8B2610260">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rylawhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rylawRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0B98C8032B" name="A_part_structuredClassifier" memberEnd="_3ADC7B74022D3E0B98C901E2 _3ADC7B74022D3E0B98C901F6">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0B98C901F6" type="_3ADC7B74022D3CC16E2301C0" association="_3ADC7B74022D3E0B98C8032B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rylazhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rylazRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E2212D602E6" name="A_role_structuredClassifier" memberEnd="_3ADC7B74022D3E2212D701CF _3ADC7B74022D3E2212D701F7">
+ <ownedEnd xmi:id="_3ADC7B74022D3E2212D701F7" type="_3ADC7B74022D3CC16E2301C0" association="_3ADC7B74022D3E2212D602E6">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryla2hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryla2RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E22135F02F7" name="A_ownedConnector_structuredClassifier" memberEnd="_3ADC7B74022D3E22136102A0 _3ADC7B74022D3E22136102BE">
+ <ownedEnd xmi:id="_3ADC7B74022D3E22136102BE" type="_3ADC7B74022D3CC16E2301C0" subsettedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3E22135F02F7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryvLyRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryvLyBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E22144300E2" name="A_redefinedConnector_connector" memberEnd="_3ADC7B74022D3E2214450172 _3ADC7B74022D3E2214450190">
+ <ownedEnd xmi:id="_3ADC7B74022D3E2214450190" type="_3ADC7B74022D3B6D7514038E" association="_3ADC7B74022D3E22144300E2">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryvL0xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryvL0hTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E22158E002A" name="A_end_connector" memberEnd="_3ADC7B74022D3E22159003E4 _3ADC7B74022D3E2215910010">
+ <ownedEnd xmi:id="_3ADC7B74022D3E2215910010" type="_3ADC7B74022D3B6D7514038E" association="_3ADC7B74022D3E22158E002A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ryvL3RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ryvL3BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E2216050202" name="A_definingEnd_connectorEnd" memberEnd="_3ADC7B74022D3E22160503E3 _3ADC7B74022D3E221606000F">
+ <ownedEnd xmi:id="_3ADC7B74022D3E221606000F" type="_3ADC7B74022D3B6D744E008C" association="_3ADC7B74022D3E2216050202">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ry4VuBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ry4VtxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E2216A2021C" name="A_end_role" memberEnd="_3ADC7B74022D3E2216A3012D _3ADC7B74022D3E2216A30141"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41BDAA5901EA" name="A_attribute_classifier" memberEnd="_3ADC7B74022D41BDAA5A0141 _3ADC7B74022D41BDAA5A0155">
+ <ownedEnd xmi:id="_3ADC7B74022D41BDAA5A0155" name="classifier" type="_3ADC7B74022D41BDAA2F0261" association="_3ADC7B74022D41BDAA5901EA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rzCGtBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rzCGsxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E8A0682039B" name="StructuredActivities">
+ <packageMerge xmi:id="_Go1rgBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3DF1253C0119"/>
+ <packageMerge xmi:id="_Go1rgRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E8A06DF0286" name="Variable">
+ <ownedComment xmi:id="_rzLQoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E8A06DF0286">
+ <body>A variable is considered a connectable element.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E8A07A60110" general="_3ADC7B74022D3CC16F5A00A4"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D553072002E" name="Deployments">
+ <packageImport xmi:id="_LWiXkD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D55305E01BF"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3B8856200320" name="ComponentDeployments">
+ <packageImport xmi:id="_VHKZkD9JEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_HC6YZRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3E0235B10207"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E02379003BF" name="Deployment">
+ <ownedComment xmi:id="_sbaVXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E02379003BF">
+ <body>A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0C38D0055" general="_3ADC7B74022D327A646F00E6"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E023CB50318" name="configuration" type="_3ADC7B74022D3E0237DD0301" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E023CB5000B">
+ <ownedComment xmi:id="_sbkGYxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E023CB50318">
+ <body>The specification of properties that parameterize the deployment and execution of one or more Artifacts.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbkGZxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbkGZhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0237DD0301" name="DeploymentSpecification">
+ <ownedComment xmi:id="_sbaVYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0237DD0301">
+ <body>A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sbaVahTaEdqZu-3Jy1-uYg" name="deployed_elements" constrainedElement="_3ADC7B74022D3E0237DD0301">
+ <ownedComment xmi:id="_sbaVZhTaEdqZu-3Jy1-uYg" annotatedElement="_sbaVahTaEdqZu-3Jy1-uYg">
+ <body>The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e. the configured components).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sbaVaxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.deployment->forAll (d | d.location.deployedElements->forAll (de |&#xD;&#xA; de.oclIsKindOf(Component)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sbkGVRTaEdqZu-3Jy1-uYg" name="deployment_target" constrainedElement="_3ADC7B74022D3E0237DD0301">
+ <ownedComment xmi:id="_sbkGURTaEdqZu-3Jy1-uYg" annotatedElement="_sbkGVRTaEdqZu-3Jy1-uYg">
+ <body>The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sbkGVhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.deployment->forAll (d | d.location..oclIsKindOf(ExecutionEnvironment))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_HAqi4EbyEdq0rbStTpEubg" general="_3ADC7B74022D3E132EC80298"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E023C610263" name="deploymentLocation">
+ <ownedComment xmi:id="_sbkGWhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E023C610263">
+ <body>The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address'.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bOFE0WgXEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bOFE0GgXEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E023C6802FA" name="executionLocation">
+ <ownedComment xmi:id="_sbkGXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E023C6802FA">
+ <body>The location where a component Artifact executes. This may be a local or remote location.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hX6w4WgXEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hX6w4GgXEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E023CB50322" name="deployment" type="_3ADC7B74022D3E02379003BF" association="_3ADC7B74022D3E023CB5000B">
+ <ownedComment xmi:id="_gVT28EbyEdq0rbStTpEubg" annotatedElement="_3ADC7B74022D3E023CB50322">
+ <body>The deployment with which the DeploymentSpecification is associated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbkGahTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbkGaRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E023CB5000B" name="A_configuration_deployment" memberEnd="_3ADC7B74022D3E023CB50318 _3ADC7B74022D3E023CB50322"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E0235B10207" name="Nodes">
+ <packageMerge xmi:id="_HDN6YBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3E0235D10308"/>
+ <packageMerge xmi:id="_HDN6YRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3D5EC5B702B8"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0235C103E1" name="Deployment">
+ <ownedComment xmi:id="_sbtQSBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0235C103E1">
+ <body>A deployment is the allocation of an artifact or artifact instance to a deployment target.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E0238C302B2" general="_3ADC7B74022D327A646F00E6"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0238C80074" name="deployedArtifact" type="_3ADC7B74022D3E045BFA00B7" subsettedProperty="_3ADC7B74022D3AFF021C0000" association="_3ADC7B74022D3E0238C70163">
+ <ownedComment xmi:id="_scJ8TRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0238C80074">
+ <body>The Artifacts that are deployed onto a Node. This association specializes the supplier association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scJ8URTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scJ8UBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E023945002E" name="location" type="_3ADC7B74022D3E045B5A0324" subsettedProperty="_3ADC7B74022D3AFF02160001" association="_3ADC7B74022D3E02394401E5">
+ <ownedComment xmi:id="_scTtOBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E023945002E">
+ <body>The DeployedTarget which is the target of a Deployment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scTtPBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scTtOxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0235C70231" name="Node">
+ <ownedComment xmi:id="_sb3BQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0235C70231">
+ <body>A node is computational resource upon which artifacts may be deployed for execution.&#xD;
+Nodes can be interconnected through communication paths to define network structures.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sb3BShTaEdqZu-3Jy1-uYg" name="internal_structure" constrainedElement="_3ADC7B74022D3E0235C70231">
+ <ownedComment xmi:id="_sb3BRhTaEdqZu-3Jy1-uYg" annotatedElement="_sb3BShTaEdqZu-3Jy1-uYg">
+ <body>The internal structure of a Node (if defined) consists solely of parts of type Node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sb3BSxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D41B08A7D0190" general="_3ADC7B74022D3D5EC6DD001C"/>
+ <generalization xmi:id="_M1Wm8BpTEdq8G-QPZvN9ow" general="_3ADC7B74022D3E045B5A0324"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E045DF603E2" name="nestedNode" type="_3ADC7B74022D3E0235C70231" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3E045DF2017A">
+ <ownedComment xmi:id="_scTtPxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E045DF603E2">
+ <body>The Nodes that are defined (nested) within the Node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scTtQxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scTtQhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E032BB600B9" name="Device">
+ <ownedComment xmi:id="_sb3BTxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E032BB600B9">
+ <body>A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices).</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E032BE00196" general="_3ADC7B74022D3E0235C70231"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E032BEB035E" name="ExecutionEnvironment">
+ <ownedComment xmi:id="_sb3BVBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E032BEB035E">
+ <body>An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E032C12029C" general="_3ADC7B74022D3E0235C70231"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E045B5A0324" name="DeploymentTarget" isAbstract="true">
+ <ownedComment xmi:id="_sb3BWRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E045B5A0324">
+ <body>A deployment target is the location for a deployed artifact.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E045BE6039D" general="_3ADC7B74022D3CC0E4E5029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E023945001A" name="deployment" type="_3ADC7B74022D3E0235C103E1" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187 _3ADC7B74022D3AFF02160000" association="_3ADC7B74022D3E02394401E5">
+ <ownedComment xmi:id="_scTtMhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E023945001A">
+ <body>The set of Deployments for a DeploymentTarget.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scTtNhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scTtNRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E045F15011E" name="deployedElement" type="_3ADC7B74022D3CB1F3A0024D" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3E045F11037B">
+ <ownedComment xmi:id="_scTtRxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E045F15011E">
+ <body>The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scTtSxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scTtShTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_xZVGsEb0Edq0rbStTpEubg" name="deployedElement" isQuery="true" bodyCondition="_D-cnsEb1Edq0rbStTpEubg">
+ <ownedRule xmi:id="_D-cnsEb1Edq0rbStTpEubg" name="spec" constrainedElement="_xZVGsEb0Edq0rbStTpEubg">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_D-cnsUb1Edq0rbStTpEubg">
+ <language>OCL</language>
+ <body>result = ((self.deployment->collect(deployedArtifact))->collect(manifestation))->collect(utilizedElement)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_7Sx4EEb0Edq0rbStTpEubg" type="_3ADC7B74022D3CB1F3A0024D" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-1bfcUb0Edq0rbStTpEubg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-1bfcEb0Edq0rbStTpEubg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E045BFA00B7" name="DeployedArtifact" isAbstract="true">
+ <ownedComment xmi:id="_sb3BXhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E045BFA00B7">
+ <body>A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E045C6E0302" general="_3ADC7B74022D3CC0E4E5029C"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0460FD0347" name="CommunicationPath">
+ <ownedComment xmi:id="_scAyRBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0460FD0347">
+ <body>A communication path is an association between two deployment targets, through which they are able to exchange signals and messages.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_scAyTRTaEdqZu-3Jy1-uYg" name="association_ends" constrainedElement="_3ADC7B74022D3E0460FD0347">
+ <ownedComment xmi:id="_scAySRTaEdqZu-3Jy1-uYg" annotatedElement="_scAyTRTaEdqZu-3Jy1-uYg">
+ <body>The association ends of a CommunicationPath are typed by DeploymentTargets.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_scAyThTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.endType->forAll (t | t.oclIsKindOf(DeploymentTarget))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E04611B03E0" general="_3ADC7B74022D3CAB1DD70016"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E132E01033C" name="Property">
+ <ownedComment xmi:id="_scAyUhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E132E01033C">
+ <body>A property has the capability of being a deployment target in a deployment relationship. This enables modeling the deployment to hierarchical nodes that have properties functioning as internal parts.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_scAyWxTaEdqZu-3Jy1-uYg" name="deployment_target" constrainedElement="_3ADC7B74022D3E132E01033C">
+ <ownedComment xmi:id="_scAyVxTaEdqZu-3Jy1-uYg" annotatedElement="_scAyWxTaEdqZu-3Jy1-uYg">
+ <body>A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_scAyXBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E132E3901D4" general="_3ADC7B74022D3E045B5A0324"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E132E5C02E2" name="InstanceSpecification">
+ <ownedComment xmi:id="_scAyYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E132E5C02E2">
+ <body>An instance specification has the capability of being a deployment target in a deployment relationship, in the case that it is an instance of a node. It is also has the capability of being a deployed artifact, if it is an instance of an artifact.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_scJ8ORTaEdqZu-3Jy1-uYg" name="deployment_target" constrainedElement="_3ADC7B74022D3E132E5C02E2">
+ <ownedComment xmi:id="_scJ8NRTaEdqZu-3Jy1-uYg" annotatedElement="_scJ8ORTaEdqZu-3Jy1-uYg">
+ <body>An InstanceSpecification can be a DeploymentTarget if it is the instance specification of a Node and functions as a part in the internal structure of an encompassing Node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_scJ8OhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_scJ8QhTaEdqZu-3Jy1-uYg" name="deployment_artifact" constrainedElement="_3ADC7B74022D3E132E5C02E2">
+ <ownedComment xmi:id="_scJ8PhTaEdqZu-3Jy1-uYg" annotatedElement="_scJ8QhTaEdqZu-3Jy1-uYg">
+ <body>An InstanceSpecification can be a DeployedArtifact if it is the instance specification of an Artifact.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_scJ8QxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E132E740106" general="_3ADC7B74022D3E045B5A0324"/>
+ <generalization xmi:id="_3ADC7B74022D3E132E820215" general="_3ADC7B74022D3E045BFA00B7"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E132EC80298" name="Artifact">
+ <ownedComment xmi:id="_scJ8RxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E132EC80298">
+ <body>An artifact is the source of a deployment to a node.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E132EE102D0" general="_3ADC7B74022D3E045BFA00B7"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0238C70163" name="A_deployedArtifact_deployment" memberEnd="_3ADC7B74022D3E0238C80074 _3ADC7B74022D3E0238C8007E">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0238C8007E" type="_3ADC7B74022D3E0235C103E1" association="_3ADC7B74022D3E0238C70163">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scJ8VBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scJ8UxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E02394401E5" name="A_deployment_location" memberEnd="_3ADC7B74022D3E023945001A _3ADC7B74022D3E023945002E"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E045DF2017A" name="A_nestedNode_node" memberEnd="_3ADC7B74022D3E045DF603E2 _3ADC7B74022D3E045DF603E4">
+ <ownedEnd xmi:id="_3ADC7B74022D3E045DF603E4" type="_3ADC7B74022D3E0235C70231" association="_3ADC7B74022D3E045DF2017A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0J7iMU-1EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0J7iME-1EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E045F11037B" name="A_deployedElement_deploymentTarget" memberEnd="_3ADC7B74022D3E045F15011E _3ADC7B74022D3E045F15013C" isDerived="true">
+ <ownedEnd xmi:id="_3ADC7B74022D3E045F15013C" type="_3ADC7B74022D3E045B5A0324" association="_3ADC7B74022D3E045F11037B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scdeNBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scdeMxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3E0235D10308" name="Artifacts">
+ <packageImport xmi:id="_3ADC7B74022D41B075FA035C" importedPackage="_3ADC7B74022D3ADF556A0044"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E0235DA036F" name="Artifact">
+ <ownedComment xmi:id="_scmoIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0235DA036F">
+ <body>An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0DBD201C1" general="_3ADC7B74022D3CAAECE80199"/>
+ <generalization xmi:id="_yc9BsEcGEdq0rbStTpEubg" general="_3ADC7B74022D3CC0E4E5029C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0330D40211" name="fileName">
+ <ownedComment xmi:id="_scmoJhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0330D40211">
+ <body>A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010B103C3"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ImMEAWgUEdqfYrlcy8iLFA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ImMEAGgUEdqfYrlcy8iLFA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0451AB01AC" name="nestedArtifact" type="_3ADC7B74022D3E0235DA036F" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3E0451A20268">
+ <ownedComment xmi:id="_scmoOhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0451AB01AC">
+ <body>The Artifacts that are defined (nested) within the Artifact.&#xD;
+The association is a specialization of the ownedMember association from Namespace to NamedElement.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scwZIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scwZIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E04540C03D9" name="manifestation" type="_3ADC7B74022D3E04533F02DA" aggregation="composite" subsettedProperty="_3ADC7B74022D3AFF02160000 _3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3E0454090352">
+ <ownedComment xmi:id="_scwZJxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E04540C03D9">
+ <body>The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sc6KIxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sc6KIhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0AF8480020" name="ownedOperation" type="_3ADC7B74022D3CAB1D710164" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB04790307 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3E0AF8460258">
+ <ownedComment xmi:id="_sc6KKRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0AF8480020">
+ <body>The Operations defined for the Artifact. The association is a specialization of the ownedMember association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sc6KLRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sc6KLBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0AF84C029D" name="ownedAttribute" type="_3ADC7B74022D3CAB1D790101" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAB21AF0364 _3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3E0AF84A034E">
+ <ownedComment xmi:id="_sc6KMxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0AF84C029D">
+ <body>The attributes or association ends defined for the Artifact.&#xD;
+The association is a specialization of the ownedMember association.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sc6KNxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sc6KNhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3E04533F02DA" name="Manifestation">
+ <ownedComment xmi:id="_scmoKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E04533F02DA">
+ <body>A manifestation is the concrete physical rendering of one or more model elements by an artifact.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E0456A402E3" general="_3ADC7B74022D3388FE7D006E"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3E0236860131" name="utilizedElement" type="_3ADC7B74022D3CB1F3A0024D" subsettedProperty="_3ADC7B74022D3AFF021C0000" association="_3ADC7B74022D3E023685031B">
+ <ownedComment xmi:id="_scmoMBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E0236860131">
+ <body>The model element that is utilized in the manifestation in an Artifact.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scmoNBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scmoMxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E023685031B" name="A_utilizedElement_manifestation" memberEnd="_3ADC7B74022D3E0236860131 _3ADC7B74022D3E0236860182">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0236860182" type="_3ADC7B74022D3E04533F02DA" association="_3ADC7B74022D3E023685031B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scmoNxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scmoNhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0451A20268" name="A_nestedArtifact_artifact" memberEnd="_3ADC7B74022D3E0451AB01AC _3ADC7B74022D3E0451AB01B6">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0451AB01B6" type="_3ADC7B74022D3E0235DA036F" association="_3ADC7B74022D3E0451A20268">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qiqF8U-1EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qiqF8E-1EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0454090352" name="A_manifestation_artifact" memberEnd="_3ADC7B74022D3E04540C03D9 _3ADC7B74022D3E04540C03DB">
+ <ownedEnd xmi:id="_3ADC7B74022D3E04540C03DB" type="_3ADC7B74022D3E0235DA036F" association="_3ADC7B74022D3E0454090352">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sc6KJhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sc6KJRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0AF8460258" name="A_ownedOperation_artifact" memberEnd="_3ADC7B74022D3E0AF8480020 _3ADC7B74022D3E0AF8480034">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0AF8480034" type="_3ADC7B74022D3E0235DA036F" subsettedProperty="_3ADC7B74022D3E026E2C0064 _3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3" association="_3ADC7B74022D3E0AF8460258">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sc6KMBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sc6KLxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3E0AF84A034E" name="A_ownedAttribute_artifact" memberEnd="_3ADC7B74022D3E0AF84C029D _3ADC7B74022D3E0AF84C02C5">
+ <ownedEnd xmi:id="_3ADC7B74022D3E0AF84C02C5" type="_3ADC7B74022D3E0235DA036F" subsettedProperty="_3ADC7B74022D3CAAF0B00232 _3ADC7B74022D3CAB047902F3 _3ADC7B74022D3CAB21AF036E" association="_3ADC7B74022D3E0AF84A034E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sc6KOhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sc6KORTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D552D100169" name="Interactions">
+ <packageImport xmi:id="_B3BJID9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D1281210157"/>
+ <packageImport xmi:id="_icIaID9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3ADCA16503D6"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3388DA6E014A" name="BasicInteractions">
+ <packageImport xmi:id="_3ADC7B74022D410DAF83016B" importedPackage="_3ADC7B74022D410C264F010C"/>
+ <packageMerge xmi:id="_G2ZmYBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAE542B0121"/>
+ <packageMerge xmi:id="_G2ZmYRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D328830A500E6" name="Interaction">
+ <ownedComment xmi:id="_sEBJExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D328830A500E6">
+ <body>An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B9B9D8F0237" general="_3ADC7B74022D38A3F9F00280"/>
+ <generalization xmi:id="_3ADC7B74022D3C46E8650394" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B7A280C0032" name="lifeline" type="_3ADC7B74022D3B20B2010275" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B7A280B0000">
+ <ownedComment xmi:id="_sFqHxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B7A280C0032">
+ <body>Specifies the participants in this Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFqHyhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFqHyRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BCB364F01AF" name="message" type="_3ADC7B74022D33DBAE5E005A" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3BCB364E028A">
+ <ownedComment xmi:id="_sF9CsBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCB364F01AF">
+ <body>The Messages contained in this Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sF9CtBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sF9CsxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DC8F1740087" name="fragment" type="_3ADC7B74022D38A3F9F00280" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3DC8F1740085">
+ <ownedComment xmi:id="_sGP9uBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DC8F1740087">
+ <body>The ordered set of fragments in the Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGP9vBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGP9uxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41628FF70323" name="action" type="_3ADC7B74022D3DF3DB6F036B" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D41628FF4010A">
+ <ownedComment xmi:id="_sGspqBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41628FF70323">
+ <body>Actions owned by the Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sG2akxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sG2akhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B20B2010275" name="Lifeline">
+ <ownedComment xmi:id="_sEK6BRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B20B2010275">
+ <body>A lifeline represents an individual participant in the interaction. While parts and structural features may have multiplicity greater than 1, lifelines represent only one interacting entity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sEK6DhTaEdqZu-3Jy1-uYg" name="interaction_uses_share_lifeline" constrainedElement="_3ADC7B74022D3B20B2010275">
+ <ownedComment xmi:id="_sEK6ChTaEdqZu-3Jy1-uYg" annotatedElement="_sEK6DhTaEdqZu-3Jy1-uYg">
+ <body>If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEK6DxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEK6FxTaEdqZu-3Jy1-uYg" name="selector_specified" constrainedElement="_3ADC7B74022D3B20B2010275">
+ <ownedComment xmi:id="_sEK6ExTaEdqZu-3Jy1-uYg" annotatedElement="_sEK6FxTaEdqZu-3Jy1-uYg">
+ <body>The selector for a Lifeline must only be specified if the referenced Part is multivalued.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEK6GBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.selector->isEmpty() implies not self.represents.isMultivalued()) or&#xA;(not self.selector->isEmpty() implies self.represents.isMultivalued())&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEK6IBTaEdqZu-3Jy1-uYg" name="same_classifier" constrainedElement="_3ADC7B74022D3B20B2010275">
+ <ownedComment xmi:id="_sEK6HBTaEdqZu-3Jy1-uYg" annotatedElement="_sEK6IBTaEdqZu-3Jy1-uYg">
+ <body>The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEK6IRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>if (represents->notEmpty()) then&#xA;(if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued())&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B9B9E130269" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B20B22F0237" name="coveredBy" type="_3ADC7B74022D38A3F9F00280" association="_3ADC7B74022D3B20B22F0235">
+ <ownedComment xmi:id="_WMYa4Gd6EdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3B20B22F0237">
+ <body>References the InteractionFragments in which this Lifeline takes part.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFXM6hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFXM6RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B4DDD1C0122" name="represents" type="_3ADC7B74022D3CC16F5A00A4" association="_3ADC7B74022D3B4DDD1B005A">
+ <ownedComment xmi:id="_sFgW4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B4DDD1C0122">
+ <body>References the ConnectableElement within the classifier that contains the enclosing interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFqHwxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFqHwhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B7A280C0034" name="interaction" type="_3ADC7B74022D328830A500E6" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3B7A280B0000">
+ <ownedComment xmi:id="_sFqHzBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B7A280C0034">
+ <body>References the Interaction enclosing this Lifeline.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFqH0BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFqHzxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BC8AA7603E2" name="selector" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3BC8AA76012F">
+ <ownedComment xmi:id="_sFz40xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC8AA7603E2">
+ <body>If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz41xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz41hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38A3F9F00280" name="InteractionFragment" isAbstract="true">
+ <ownedComment xmi:id="_sEK6JRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38A3F9F00280">
+ <body>InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B9B9D490313" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B20B22F0236" name="covered" type="_3ADC7B74022D3B20B2010275" association="_3ADC7B74022D3B20B22F0235">
+ <ownedComment xmi:id="_sFXM4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B20B22F0236">
+ <body>References the Lifelines that the InteractionFragment involves.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFXM5xTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFXM5hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DBE53BE0173" name="generalOrdering" type="_3ADC7B74022D3C47215102B2" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DBE53BD0171">
+ <ownedComment xmi:id="_sGP9phTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DBE53BE0173">
+ <body>The general ordering relationships contained in this fragment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGP9qhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGP9qRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DC8F1740086" name="enclosingInteraction" type="_3ADC7B74022D328830A500E6" association="_3ADC7B74022D3DC8F1740085">
+ <ownedComment xmi:id="_sGP9shTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DC8F1740086">
+ <body>The Interaction enclosing this InteractionFragment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGP9thTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGP9tRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D33DBAE5E005A" name="Message">
+ <ownedComment xmi:id="_sEUD9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33DBAE5E005A">
+ <body>A message defines a particular communication between lifelines of an interaction.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sEUD_RTaEdqZu-3Jy1-uYg" name="sending_receiving_message_event" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEUD-RTaEdqZu-3Jy1-uYg" annotatedElement="_sEUD_RTaEdqZu-3Jy1-uYg">
+ <body>If the sending MessageEvent and the receiving MessageEvent of the same Message are on the same Lifeline, the sending MessageEvent must be ordered before the receiving MessageEvent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEUD_hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEUEBhTaEdqZu-3Jy1-uYg" name="signature_refer_to" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEUEAhTaEdqZu-3Jy1-uYg" annotatedElement="_sEUEBhTaEdqZu-3Jy1-uYg">
+ <body>The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEUEBxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEUEDxTaEdqZu-3Jy1-uYg" name="signature_is_operation" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEUECxTaEdqZu-3Jy1-uYg" annotatedElement="_sEUEDxTaEdqZu-3Jy1-uYg">
+ <body>In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEUEEBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEd08xTaEdqZu-3Jy1-uYg" name="signature_is_signal" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEUEFBTaEdqZu-3Jy1-uYg" annotatedElement="_sEd08xTaEdqZu-3Jy1-uYg">
+ <body>In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEd09BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEd0_BTaEdqZu-3Jy1-uYg" name="arguments" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEd0-BTaEdqZu-3Jy1-uYg" annotatedElement="_sEd0_BTaEdqZu-3Jy1-uYg">
+ <body>Arguments of a Message must only be:
+i) attributes of the sending lifeline
+ii) constants
+iii) symbolic values (which are wildcard values representing any legal value)
+iv) explicit parameters of the enclosing Interaction
+v) attributes of the class owning the Interaction
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEd0_RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEd1BRTaEdqZu-3Jy1-uYg" name="cannot_cross_boundaries" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEd1ARTaEdqZu-3Jy1-uYg" annotatedElement="_sEd1BRTaEdqZu-3Jy1-uYg">
+ <body>Messages cannot cross bounderies of CombinedFragments or their operands.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEd1BhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sEd1DhTaEdqZu-3Jy1-uYg" name="occurrence_specifications" constrainedElement="_3ADC7B74022D33DBAE5E005A">
+ <ownedComment xmi:id="_sEd1ChTaEdqZu-3Jy1-uYg" annotatedElement="_sEd1DhTaEdqZu-3Jy1-uYg">
+ <body>If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEd1DxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B4DE9A502F8" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D05BC66015F" name="messageKind" type="_3ADC7B74022D3D05BBDA038F" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_sEd1ExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D05BC66015F">
+ <body>The derived kind of the Message (complete, lost, found or unknown)</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_CSkI0GgfEdqfYrlcy8iLFA" type="_3ADC7B74022D3D05BBDA038F" instance="_3ADC7B74022D3D05BC270281"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D621A8A0027" name="messageSort" type="_3ADC7B74022D3D621AD300F4">
+ <ownedComment xmi:id="_sEnl8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D621A8A0027">
+ <body>The sort of communication reflected by the Message</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_XKv4oGgfEdqfYrlcy8iLFA" type="_3ADC7B74022D3D621AD300F4" instance="_3ADC7B74022D3D621AFC00CB"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38A3DE950244" name="receiveEvent" type="_3ADC7B74022D3CC2FD900302" association="_3ADC7B74022D38A3DE940334">
+ <ownedComment xmi:id="_sFqH0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38A3DE950244">
+ <body>References the Receiving of the Message</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFqH1xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFqH1hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D38A3DE55028A" name="sendEvent" type="_3ADC7B74022D3CC2FD900302" association="_3ADC7B74022D38A3DE540370">
+ <ownedComment xmi:id="_sFqH3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38A3DE55028A">
+ <body>References the Sending of the Message.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz4wxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz4whTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BCB351300CE" name="connector" type="_3ADC7B74022D3B6D7514038E" association="_3ADC7B74022D3BCB351102CA">
+ <ownedComment xmi:id="_sFz43RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCB351300CE">
+ <body>The Connector on which this Message is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz44RTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz44BTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BCB364F01B9" name="interaction" type="_3ADC7B74022D328830A500E6" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3BCB364E028A">
+ <ownedComment xmi:id="_sF9CthTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCB364F01B9">
+ <body>The enclosing Interaction owning the Message</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sF9CuhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sF9CuRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CEF93500183" name="argument" type="_3ADC7B74022D3D0254AB023D" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3CEF934F02B8">
+ <ownedComment xmi:id="_sGGzvBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CEF93500183">
+ <body>The arguments of the Message</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGGzwBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGGzvxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C63983E02AE" name="signature" type="_3ADC7B74022D3CC0E4E5029C" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3C63983D037F">
+ <ownedComment xmi:id="_sGZusRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C63983E02AE">
+ <body>The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGjfoRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGjfoBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C47215102B2" name="GeneralOrdering">
+ <ownedComment xmi:id="_sEnl9xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C47215102B2">
+ <body>A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3C472384022F" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C47219501D3" name="before" type="_3ADC7B74022D3C6F946503C8" association="_3ADC7B74022D3C472194024A">
+ <ownedComment xmi:id="_sF9CvRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C47219501D3">
+ <body>The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sF9CwRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sF9CwBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C4721FE033C" name="after" type="_3ADC7B74022D3C6F946503C8" association="_3ADC7B74022D3C4721FE0102">
+ <ownedComment xmi:id="_sGGztRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C4721FE033C">
+ <body>The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGGzuRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGGzuBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C6392E00384" name="ExecutionSpecification" isAbstract="true">
+ <ownedComment xmi:id="_sEnl_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C6392E00384">
+ <body>An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sEwv5RTaEdqZu-3Jy1-uYg" name="same_lifeline" constrainedElement="_3ADC7B74022D3C6392E00384">
+ <ownedComment xmi:id="_sEwv4RTaEdqZu-3Jy1-uYg" annotatedElement="_sEwv5RTaEdqZu-3Jy1-uYg">
+ <body>The startEvent and the finishEvent must be on the same Lifeline</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sEwv5hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>start.lifeline = finish.lifeline</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B4BC0ED0370" general="_3ADC7B74022D38A3F9F00280"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B4BC10F006E" name="start" type="_3ADC7B74022D3C6F946503C8" association="_3ADC7B74022D3B4BC10B03D4">
+ <ownedComment xmi:id="_sFgWxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B4BC10F006E">
+ <body>References the OccurrenceSpecification that designates the start of the Action or Behavior</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFgWyhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFgWyRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B4BC1570079" name="finish" type="_3ADC7B74022D3C6F946503C8" association="_3ADC7B74022D3B4BC1510082">
+ <ownedComment xmi:id="_sFgW0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B4BC1570079">
+ <body>References the OccurrenceSpecification that designates the finish of the Action or Behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFgW1xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFgW1hTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C6F946503C8" name="OccurrenceSpecification">
+ <ownedComment xmi:id="_sEwv6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C6F946503C8">
+ <body>An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CC3010700E0" general="_3ADC7B74022D38A3F9F00280"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A9D4E00BD" name="covered" type="_3ADC7B74022D3B20B2010275" redefinedProperty="_3ADC7B74022D3B20B22F0236" association="_3ADC7B74022D3B9A9D4D0225">
+ <ownedComment xmi:id="_sFz4zBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A9D4E00BD">
+ <body>References the Lifeline on which the OccurrenceSpecification appears.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz40BTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz4zxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C472195038C" name="toAfter" type="_3ADC7B74022D3C47215102B2" association="_3ADC7B74022D3C472194024A">
+ <ownedComment xmi:id="_sF9CwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C472195038C">
+ <body>References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sF9CxxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sF9CxhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C4721FE0328" name="toBefore" type="_3ADC7B74022D3C47215102B2" association="_3ADC7B74022D3C4721FE0102">
+ <ownedComment xmi:id="_sF9CyhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C4721FE0328">
+ <body>References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGGzsxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGGzshTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D41628BD1004F" name="event" type="_3ADC7B74022D412876E902EE" association="_3ADC7B74022D41628BD0006B">
+ <ownedComment xmi:id="_sGspnhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41628BD1004F">
+ <body>References a specification of the occurring event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGspohTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGspoRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC2FD900302" name="MessageEnd" isAbstract="true">
+ <ownedComment xmi:id="_sEwv7xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC2FD900302">
+ <body>MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3CC2FE0700DC" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D416287D90274" name="message" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D416287D4015E">
+ <ownedComment xmi:id="_sGjfuxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416287D90274">
+ <body>References a Message.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGjfvxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGjfvhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D256B3D03C3" name="StateInvariant">
+ <ownedComment xmi:id="_sE6g6xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D256B3D03C3">
+ <body>A state invariant is a runtime constraint on the participants of the interaction. It may be used to specify a variety of different kinds of constraints, such as values of attributes or variables, internal or external states, and so on. A state invariant is an interaction fragment and it is placed on a lifeline.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3D256B7802AF" general="_3ADC7B74022D38A3F9F00280"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D256CF00242" name="invariant" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3D256CEF02B9">
+ <ownedComment xmi:id="_sGGzxhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D256CF00242">
+ <body>A Constraint that should hold at runtime for this StateInvariant</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGGzyhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGGzyRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D256DCE027D" name="covered" type="_3ADC7B74022D3B20B2010275" redefinedProperty="_3ADC7B74022D3B20B22F0236" association="_3ADC7B74022D3D256DCD01F0">
+ <ownedComment xmi:id="_sGGz0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D256DCE027D">
+ <body>References the Lifeline on which the StateInvariant appears.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGP9oxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGP9ohTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410DB3A70206" name="ActionExecutionSpecification">
+ <ownedComment xmi:id="_sFER5xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DB3A70206">
+ <body>An action execution specification is a kind of execution specification representing the execution of an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sFER8BTaEdqZu-3Jy1-uYg" name="action_referenced" constrainedElement="_3ADC7B74022D410DB3A70206">
+ <ownedComment xmi:id="_sFER7BTaEdqZu-3Jy1-uYg" annotatedElement="_sFER8BTaEdqZu-3Jy1-uYg">
+ <body>The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sFER8RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D410DB436039E" general="_3ADC7B74022D3C6392E00384"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D410DB4DF00BE" name="action" type="_3ADC7B74022D3DF3DB6F036B" association="_3ADC7B74022D410DB4DD01DD">
+ <ownedComment xmi:id="_sGZupxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DB4DF00BE">
+ <body>Action whose execution is occurring.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGZuqxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGZuqhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D410DB3B403AA" name="BehaviorExecutionSpecification">
+ <ownedComment xmi:id="_sFER9RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DB3B403AA">
+ <body>A behavior execution specification is a kind of execution specification representing the execution of a behavior.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D410DB440023A" general="_3ADC7B74022D3C6392E00384"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFC83610106" name="behavior" type="_3ADC7B74022D3B9A6F4F0008" association="_3ADC7B74022D3DFC835F0262">
+ <ownedComment xmi:id="_sGP9vxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC83610106">
+ <body>Behavior whose execution is occurring.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGZuoxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGZuohTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D4162845503DB" name="ExecutionEvent">
+ <ownedComment xmi:id="_sFER-hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162845503DB">
+ <body>An execution event models the start or finish of an execution occurrence.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D416285160314" general="_3ADC7B74022D412876E902EE"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41628460039B" name="CreationEvent">
+ <ownedComment xmi:id="_sFNb0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41628460039B">
+ <body>A creation event models the creation of an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_nDuSkDdCEdqq1tCaRkgBQQ" name="no_occurrence_above" constrainedElement="_3ADC7B74022D41628460039B">
+ <ownedComment xmi:id="_1Le3cDdCEdqq1tCaRkgBQQ" annotatedElement="_nDuSkDdCEdqq1tCaRkgBQQ">
+ <body>No othet OccurrenceSpecification may appear above an OccurrenceSpecification which references a CreationEvent on a given Lifeline in an InteractionOperand.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_nDuSkTdCEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D416285140285" general="_3ADC7B74022D412876E902EE"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D4162846D037B" name="DestructionEvent">
+ <ownedComment xmi:id="_sFNb1hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162846D037B">
+ <body>A destruction event models the destruction of an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sFNb3xTaEdqZu-3Jy1-uYg" name="no_occurrence_specifications_below" constrainedElement="_3ADC7B74022D4162846D037B">
+ <ownedComment xmi:id="_sFNb2xTaEdqZu-3Jy1-uYg" annotatedElement="_sFNb3xTaEdqZu-3Jy1-uYg">
+ <body>No other OccurrenceSpecifications may appear below an OccurrenceSpecification which references a DestructionEvent on a given Lifeline in an InteractionOperand.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sFNb4BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D416285110294" general="_3ADC7B74022D412876E902EE"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D416284A1001A" name="SendOperationEvent">
+ <ownedComment xmi:id="_sFNb5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416284A1001A">
+ <body>A send operation event models the invocation of an operation call.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41628559002C" general="_3ADC7B74022D3E5B966A02F2"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D4162859C0070" name="operation" type="_3ADC7B74022D3CAB1D710164" association="_3ADC7B74022D4162859A033E">
+ <ownedComment xmi:id="_sGjfpxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162859C0070">
+ <body>The operation associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGjfqxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGjfqhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D416284A90383" name="SendSignalEvent">
+ <ownedComment xmi:id="_sFNb6RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416284A90383">
+ <body>A send signal event models the sending of a signal.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4162855B0116" general="_3ADC7B74022D3E5B966A02F2"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D416285BA00CE" name="signal" type="_3ADC7B74022D3389030B00E6" association="_3ADC7B74022D416285B90181">
+ <ownedComment xmi:id="_sGjfsRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D416285BA00CE">
+ <body>The signal associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGjftRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGjftBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41628858007B" name="MessageOccurrenceSpecification">
+ <ownedComment xmi:id="_sFXM1BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41628858007B">
+ <body>A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D4162893902FA" general="_3ADC7B74022D3CC2FD900302"/>
+ <generalization xmi:id="_3ADC7B74022D4162894B001B" general="_3ADC7B74022D3C6F946503C8"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D41628CA002B4" name="ExecutionOccurrenceSpecification">
+ <ownedComment xmi:id="_sFXM2hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41628CA002B4">
+ <body>An execution occurrence specification represents moments in time at which actions or behaviors start or finish.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41628CC20016" general="_3ADC7B74022D3C6F946503C8"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D41629402034A" name="execution" type="_3ADC7B74022D3C6392E00384" association="_3ADC7B74022D416294010384">
+ <ownedComment xmi:id="_sG2amRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D41629402034A">
+ <body>References the execution specification describing the execution that is started or finished at this execution event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sG2anRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sG2anBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4162946C0245" name="event" type="_3ADC7B74022D4162845503DB" redefinedProperty="_3ADC7B74022D41628BD1004F" association="_3ADC7B74022D4162946B0320">
+ <ownedComment xmi:id="_sG2aoxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162946C0245">
+ <body>The event referenced is restricted to an execution event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sG2apxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sG2aphTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FV1GwGd1EdqCCpdUvbQY5w" name="ReceiveOperationEvent">
+ <ownedComment xmi:id="_SvRXoGd2EdqCCpdUvbQY5w" annotatedElement="_FV1GwGd1EdqCCpdUvbQY5w">
+ <body>A receive operation event specifies the event of receiving an operation invocation for a particular operation by the target entity.</body>
+ </ownedComment>
+ <generalization xmi:id="_HkldUGd1EdqCCpdUvbQY5w" general="_3ADC7B74022D3E5B966A02F2"/>
+ <ownedAttribute xmi:id="_85jBgWd1EdqCCpdUvbQY5w" name="operation" type="_3ADC7B74022D3CAB1D710164" association="_85jBgGd1EdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_T-2JIGd2EdqCCpdUvbQY5w" annotatedElement="_85jBgWd1EdqCCpdUvbQY5w">
+ <body>The operation associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_85jBhGd1EdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_85jBg2d1EdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IVTvoGd1EdqCCpdUvbQY5w" name="ReceiveSignalEvent">
+ <ownedComment xmi:id="_YFQk4Gd2EdqCCpdUvbQY5w" annotatedElement="_IVTvoGd1EdqCCpdUvbQY5w">
+ <body>A receive signal event specifies the event of receiving a signal by the target entity.</body>
+ </ownedComment>
+ <generalization xmi:id="_jkAVkGd1EdqCCpdUvbQY5w" general="_3ADC7B74022D3E5B966A02F2"/>
+ <ownedAttribute xmi:id="_-uE6MWd1EdqCCpdUvbQY5w" name="signal" type="_3ADC7B74022D3389030B00E6" association="_-uE6MGd1EdqCCpdUvbQY5w">
+ <ownedComment xmi:id="_bZANkGd2EdqCCpdUvbQY5w" annotatedElement="_-uE6MWd1EdqCCpdUvbQY5w">
+ <body>The signal associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-uOEImd1EdqCCpdUvbQY5w" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-uOEIWd1EdqCCpdUvbQY5w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3D05BBDA038F" name="MessageKind">
+ <ownedComment xmi:id="_sEwv9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D05BBDA038F">
+ <body>This is an enumerated type that identifies the type of message.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D05BBFF0003" name="complete">
+ <ownedComment xmi:id="_sEwv-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D05BBFF0003">
+ <body>sendEvent and receiveEvent are present</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D05BC11018F" name="lost">
+ <ownedComment xmi:id="_sEwv_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D05BC11018F">
+ <body>sendEvent present and receiveEvent absent</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D05BC1E0043" name="found">
+ <ownedComment xmi:id="_sE6g4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D05BC1E0043">
+ <body>sendEvent absent and receiveEvent present</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D05BC270281" name="unknown">
+ <ownedComment xmi:id="_sE6g5xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D05BC270281">
+ <body>sendEvent and receiveEvent absent (should not appear)</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3D621AD300F4" name="MessageSort">
+ <ownedComment xmi:id="_sE6g8BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D621AD300F4">
+ <body>This is an enumerated type that identifies the type of communication action that was used to generate the message.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D621AFC00CB" name="synchCall">
+ <ownedComment xmi:id="_sE6g9BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D621AFC00CB">
+ <body>The message was generated by a synchronous call to an operation.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D621B2A0370" name="asynchCall">
+ <ownedComment xmi:id="_sE6g-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D621B2A0370">
+ <body>The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous&#xD;
+= false.&#xD;
+</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D621B3E0044" name="asynchSignal">
+ <ownedComment xmi:id="_sFER4xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D621B3E0044">
+ <body>The message was generated by an asynchronous send action.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Mk5iEGdgEdqCCpdUvbQY5w" name="createMessage">
+ <ownedComment xmi:id="_SzWoYGdgEdqCCpdUvbQY5w" annotatedElement="_Mk5iEGdgEdqCCpdUvbQY5w">
+ <body>The message designating the creation of another lifeline object.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_TKmqwGdgEdqCCpdUvbQY5w" name="deleteMessage">
+ <ownedComment xmi:id="_YMnMEGdgEdqCCpdUvbQY5w" annotatedElement="_TKmqwGdgEdqCCpdUvbQY5w">
+ <body>The message designating the termination of another lifeline.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_1k2RYGdgEdqCCpdUvbQY5w" name="reply">
+ <ownedComment xmi:id="_5tycsGdgEdqCCpdUvbQY5w" annotatedElement="_1k2RYGdgEdqCCpdUvbQY5w">
+ <body>The message is a reply message to an operation call.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B20B22F0235" name="A_covered_coveredBy" memberEnd="_3ADC7B74022D3B20B22F0236 _3ADC7B74022D3B20B22F0237">
+ <ownedComment xmi:id="_sFXM3xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B20B22F0235">
+ <body>This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B4BC10B03D4" name="A_executionSpecification_start" memberEnd="_3ADC7B74022D3B4BC10F003C _3ADC7B74022D3B4BC10F006E">
+ <ownedComment xmi:id="_sFXM7BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B4BC10B03D4">
+ <body>The event shows the time point at which the action begins execution.</body>
+ </ownedComment>
+ <ownedEnd xmi:id="_3ADC7B74022D3B4BC10F003C" type="_3ADC7B74022D3C6392E00384" association="_3ADC7B74022D3B4BC10B03D4">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFgWxBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFgWwxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B4BC1510082" name="A_executionSpecification_finish" memberEnd="_3ADC7B74022D3B4BC157003C _3ADC7B74022D3B4BC1570079">
+ <ownedComment xmi:id="_sFgWzBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B4BC1510082">
+ <body>The event shows the time point at which the action completes execution.</body>
+ </ownedComment>
+ <ownedEnd xmi:id="_3ADC7B74022D3B4BC157003C" type="_3ADC7B74022D3C6392E00384" association="_3ADC7B74022D3B4BC1510082">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFgW0RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFgW0BTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B4DDD1B005A" name="A_lifeline_represents" memberEnd="_3ADC7B74022D3B4DDD1C00F0 _3ADC7B74022D3B4DDD1C0122">
+ <ownedComment xmi:id="_sFgW2RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B4DDD1B005A">
+ <body>If a Part has multiplicity, multiple lifelines might be used to show it.</body>
+ </ownedComment>
+ <ownedEnd xmi:id="_3ADC7B74022D3B4DDD1C00F0" type="_3ADC7B74022D3B20B2010275" association="_3ADC7B74022D3B4DDD1B005A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFgW3hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFgW3RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B7A280B0000" name="A_lifeline_interaction" memberEnd="_3ADC7B74022D3B7A280C0032 _3ADC7B74022D3B7A280C0034"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38A3DE940334" name="A_receiveEvent_message" memberEnd="_3ADC7B74022D38A3DE950244 _3ADC7B74022D38A3DE950280">
+ <ownedEnd xmi:id="_3ADC7B74022D38A3DE950280" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D38A3DE940334">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFqH2hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFqH2RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D38A3DE540370" name="A_sendEvent_message" memberEnd="_3ADC7B74022D38A3DE55028A _3ADC7B74022D38A3DE5502C6">
+ <ownedEnd xmi:id="_3ADC7B74022D38A3DE5502C6" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D38A3DE540370">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz4xhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz4xRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A9D4D0225" name="A_events_covered" memberEnd="_3ADC7B74022D3B9A9D4E00A9 _3ADC7B74022D3B9A9D4E00BD">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A9D4E00A9" name="events" type="_3ADC7B74022D3C6F946503C8" isOrdered="true" association="_3ADC7B74022D3B9A9D4D0225">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz4yhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz4yRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BC8AA76012F" name="A_selector_lifeline" memberEnd="_3ADC7B74022D3BC8AA7603E2 _3ADC7B74022D3BC8AA770022">
+ <ownedEnd xmi:id="_3ADC7B74022D3BC8AA770022" type="_3ADC7B74022D3B20B2010275" association="_3ADC7B74022D3BC8AA76012F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz42hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz42RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BCB351102CA" name="A_connector_message" memberEnd="_3ADC7B74022D3BCB351300CE _3ADC7B74022D3BCB351300E2">
+ <ownedEnd xmi:id="_3ADC7B74022D3BCB351300E2" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D3BCB351102CA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFz45BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFz44xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BCB364E028A" name="A_message_interaction" memberEnd="_3ADC7B74022D3BCB364F01AF _3ADC7B74022D3BCB364F01B9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C472194024A" name="A_before_toAfter" memberEnd="_3ADC7B74022D3C47219501D3 _3ADC7B74022D3C472195038C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C4721FE0102" name="A_toBefore_after" memberEnd="_3ADC7B74022D3C4721FE0328 _3ADC7B74022D3C4721FE033C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CEF934F02B8" name="A_argument_message" memberEnd="_3ADC7B74022D3CEF93500183 _3ADC7B74022D3CEF935001AB">
+ <ownedEnd xmi:id="_3ADC7B74022D3CEF935001AB" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D3CEF934F02B8">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGGzwxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGGzwhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D256CEF02B9" name="A_invariant_stateInvariant" memberEnd="_3ADC7B74022D3D256CF00242 _3ADC7B74022D3D256CF00260">
+ <ownedEnd xmi:id="_3ADC7B74022D3D256CF00260" type="_3ADC7B74022D3D256B3D03C3" association="_3ADC7B74022D3D256CEF02B9">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VV624U-_EduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VV624E-_EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D256DCD01F0" name="A_stateInvariant_covered" memberEnd="_3ADC7B74022D3D256DCE0273 _3ADC7B74022D3D256DCE027D">
+ <ownedEnd xmi:id="_3ADC7B74022D3D256DCE0273" name="stateInvariant" type="_3ADC7B74022D3D256B3D03C3" association="_3ADC7B74022D3D256DCD01F0">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGGzzxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGGzzhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DBE53BD0171" name="A_generalOrdering_interactionFragment" memberEnd="_3ADC7B74022D3DBE53BE0173 _3ADC7B74022D3DBE53BE0175">
+ <ownedEnd xmi:id="_3ADC7B74022D3DBE53BE0175" type="_3ADC7B74022D38A3F9F00280" association="_3ADC7B74022D3DBE53BD0171">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGP9rRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGP9rBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DC8F1740085" name="A_enclosingInteraction_fragment" memberEnd="_3ADC7B74022D3DC8F1740086 _3ADC7B74022D3DC8F1740087"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFC835F0262" name="A_behavior_behaviorExecutionSpecification" memberEnd="_3ADC7B74022D3DFC83610106 _3ADC7B74022D3DFC8361012F">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFC8361012F" type="_3ADC7B74022D410DB3B403AA" association="_3ADC7B74022D3DFC835F0262">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bWs4IU_AEduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bWs4IE_AEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410DB4DD01DD" name="A_action_actionExecutionSpecification" memberEnd="_3ADC7B74022D410DB4DF00BE _3ADC7B74022D410DB4DF00C8">
+ <ownedEnd xmi:id="_3ADC7B74022D410DB4DF00C8" type="_3ADC7B74022D410DB3A70206" association="_3ADC7B74022D410DB4DD01DD">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGZurhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGZurRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C63983D037F" name="A_signature_message" memberEnd="_3ADC7B74022D3C63983E02AE _3ADC7B74022D3C63983E02C2">
+ <ownedEnd xmi:id="_3ADC7B74022D3C63983E02C2" type="_3ADC7B74022D33DBAE5E005A" association="_3ADC7B74022D3C63983D037F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iGgNcU-_EduFOcgjjRrSMg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iGgNcE-_EduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4162859A033E" name="A_operation_sendOperationEvent" memberEnd="_3ADC7B74022D4162859C0070 _3ADC7B74022D4162859C007A">
+ <ownedEnd xmi:id="_3ADC7B74022D4162859C007A" type="_3ADC7B74022D416284A1001A" association="_3ADC7B74022D4162859A033E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGjfrhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGjfrRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D416285B90181" name="A_signal_sendSignalEvent" memberEnd="_3ADC7B74022D416285BA00CE _3ADC7B74022D416285BA00D8">
+ <ownedEnd xmi:id="_3ADC7B74022D416285BA00D8" type="_3ADC7B74022D416284A90383" association="_3ADC7B74022D416285B90181">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGjfuBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGjftxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D416287D4015E" name="A_message_messageEnd" memberEnd="_3ADC7B74022D416287D90274 _3ADC7B74022D416287D9027E">
+ <ownedEnd xmi:id="_3ADC7B74022D416287D9027E" type="_3ADC7B74022D3CC2FD900302" association="_3ADC7B74022D416287D4015E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGspkRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGspkBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41628BD0006B" name="A_event_occurrenceSpecification" memberEnd="_3ADC7B74022D41628BD1004F _3ADC7B74022D41628BD10059">
+ <ownedEnd xmi:id="_3ADC7B74022D41628BD10059" type="_3ADC7B74022D3C6F946503C8" association="_3ADC7B74022D41628BD0006B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sGsppRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sGsppBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D41628FF4010A" name="A_action_interaction" memberEnd="_3ADC7B74022D41628FF70323 _3ADC7B74022D41628FF70337">
+ <ownedEnd xmi:id="_3ADC7B74022D41628FF70337" type="_3ADC7B74022D328830A500E6" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D41628FF4010A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sG2alhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sG2alRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D416294010384" name="A_execution_executionOccurrenceSpecification" memberEnd="_3ADC7B74022D41629402034A _3ADC7B74022D416294020354">
+ <ownedEnd xmi:id="_3ADC7B74022D416294020354" type="_3ADC7B74022D41628CA002B4" association="_3ADC7B74022D416294010384">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sG2aoBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sG2anxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4162946B0320" name="A_event_executionOccurrenceSpecification" memberEnd="_3ADC7B74022D4162946C0245 _3ADC7B74022D4162946C0247">
+ <ownedEnd xmi:id="_3ADC7B74022D4162946C0247" type="_3ADC7B74022D41628CA002B4" association="_3ADC7B74022D4162946B0320">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sG2aqhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sG2aqRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_85jBgGd1EdqCCpdUvbQY5w" name="A_operation_receiveOperationEvent" memberEnd="_85jBgWd1EdqCCpdUvbQY5w _85jBgmd1EdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_85jBgmd1EdqCCpdUvbQY5w" type="_FV1GwGd1EdqCCpdUvbQY5w" association="_85jBgGd1EdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ElR-IWd2EdqCCpdUvbQY5w" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ElR-IGd2EdqCCpdUvbQY5w"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_-uE6MGd1EdqCCpdUvbQY5w" name="A_signal_receiveSignalEvent" memberEnd="_-uE6MWd1EdqCCpdUvbQY5w _-uOEIGd1EdqCCpdUvbQY5w">
+ <ownedEnd xmi:id="_-uOEIGd1EdqCCpdUvbQY5w" type="_IVTvoGd1EdqCCpdUvbQY5w" association="_-uE6MGd1EdqCCpdUvbQY5w">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FuJqsWd2EdqCCpdUvbQY5w" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FuJqsGd2EdqCCpdUvbQY5w"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3DC8ED110289" name="Fragments">
+ <packageMerge xmi:id="_G340IBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3388DA6E014A"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38A3FDEF012C" name="InteractionUse">
+ <ownedComment xmi:id="_sHTGhhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38A3FDEF012C">
+ <body>An interaction use refers to an interaction. The interaction use is a shorthand for copying the contents of the referenced interaction where the interaction use is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal gates with the actual ones.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sHc3gxTaEdqZu-3Jy1-uYg" name="gates_match" constrainedElement="_3ADC7B74022D38A3FDEF012C">
+ <ownedComment xmi:id="_sHTGixTaEdqZu-3Jy1-uYg" annotatedElement="_sHc3gxTaEdqZu-3Jy1-uYg">
+ <body>Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHc3hBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHc3jBTaEdqZu-3Jy1-uYg" name="all_lifelines" constrainedElement="_3ADC7B74022D38A3FDEF012C">
+ <ownedComment xmi:id="_sHc3iBTaEdqZu-3Jy1-uYg" annotatedElement="_sHc3jBTaEdqZu-3Jy1-uYg">
+ <body>The InteractionUse must cover all Lifelines of the enclosing Interaction which appear within the referred Interaction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHc3jRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHc3lRTaEdqZu-3Jy1-uYg" name="arguments_correspond_to_parameters" constrainedElement="_3ADC7B74022D38A3FDEF012C">
+ <ownedComment xmi:id="_sHc3kRTaEdqZu-3Jy1-uYg" annotatedElement="_sHc3lRTaEdqZu-3Jy1-uYg">
+ <body>The arguments of the InteractionUse must correspond to parameters of the referred Interaction</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHc3lhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHc3nhTaEdqZu-3Jy1-uYg" name="arguments_are_constants" constrainedElement="_3ADC7B74022D38A3FDEF012C">
+ <ownedComment xmi:id="_sHc3mhTaEdqZu-3Jy1-uYg" annotatedElement="_sHc3nhTaEdqZu-3Jy1-uYg">
+ <body>The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHc3nxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B975A3B0162" general="_3ADC7B74022D408A540F023B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A9C900024" name="refersTo" type="_3ADC7B74022D3DE359F6035B" association="_3ADC7B74022D3B9A9C8D0387">
+ <ownedComment xmi:id="_sIyUUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A9C900024">
+ <body>Refers to the Interaction that defines its meaning</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIyUVxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIyUVhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A9EF802D3" name="actualGate" type="_3ADC7B74022D38A3FD2A006E" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3B9A9EF800CA">
+ <ownedComment xmi:id="_sI8FTBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A9EF802D3">
+ <body>The actual gates of the InteractionUse</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sI8FUBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sI8FTxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D61F4A20146" name="argument" type="_3ADC7B74022D3DF3DB6F036B" isOrdered="true" aggregation="composite" association="_3ADC7B74022D3D61F4A10112">
+ <ownedComment xmi:id="_sJFPPxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D61F4A20146">
+ <body>The actual arguments of the Interaction</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJFPQxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJFPQhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A641F9802FA" name="PartDecomposition">
+ <ownedComment xmi:id="_sHc3oxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A641F9802FA">
+ <body>A part decomposition is a description of the internal interactions of one lifeline relative to an interaction.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sHmBcxTaEdqZu-3Jy1-uYg" name="parts_of_internal_structures" constrainedElement="_3ADC7B74022D3A641F9802FA">
+ <ownedComment xmi:id="_sHc3qBTaEdqZu-3Jy1-uYg" annotatedElement="_sHmBcxTaEdqZu-3Jy1-uYg">
+ <body>PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHmBdBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHmBfBTaEdqZu-3Jy1-uYg" name="assume" constrainedElement="_3ADC7B74022D3A641F9802FA">
+ <ownedComment xmi:id="_sHmBeBTaEdqZu-3Jy1-uYg" annotatedElement="_sHmBfBTaEdqZu-3Jy1-uYg">
+ <body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order.&#xD;
+&#xD;
+i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D&#xD;
+ii) An InteractionUse covering L are matched with a global (i.e. covering all Lifelines) InteractionUse in D.&#xD;
+iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHmBfRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHmBhRTaEdqZu-3Jy1-uYg" name="commutativity_of_decomposition" constrainedElement="_3ADC7B74022D3A641F9802FA">
+ <ownedComment xmi:id="_sHmBgRTaEdqZu-3Jy1-uYg" annotatedElement="_sHmBhRTaEdqZu-3Jy1-uYg">
+ <body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an&#xD;
+InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition)&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHmBhhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A641FC502CC" general="_3ADC7B74022D38A3FDEF012C"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3A4CAC51006F" name="InteractionOperand">
+ <ownedComment xmi:id="_sHmBihTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3A4CAC51006F">
+ <body>An interaction operand is contained in a combined fragment. An interaction operand represents one operand of the expression given by the enclosing combined fragment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sHvycxTaEdqZu-3Jy1-uYg" name="guard_directly_prior" constrainedElement="_3ADC7B74022D3A4CAC51006F">
+ <ownedComment xmi:id="_sHmBkBTaEdqZu-3Jy1-uYg" annotatedElement="_sHvycxTaEdqZu-3Jy1-uYg">
+ <body>The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHvydBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHvyfBTaEdqZu-3Jy1-uYg" name="guard_contain_references" constrainedElement="_3ADC7B74022D3A4CAC51006F">
+ <ownedComment xmi:id="_sHvyeBTaEdqZu-3Jy1-uYg" annotatedElement="_sHvyfBTaEdqZu-3Jy1-uYg">
+ <body>The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHvyfRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3A4CAD860005" general="_3ADC7B74022D408A540F023B"/>
+ <generalization xmi:id="_3ADC7B74022D410AD45D0126" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A96C402F1" name="guard" type="_3ADC7B74022D3C46E8B3010C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3B9A96C202EE">
+ <ownedComment xmi:id="_sIojYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A96C402F1">
+ <body>Constraint of the operand.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIyUQxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIyUQhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B8B9A5902FB" name="fragment" type="_3ADC7B74022D408A540F023B" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B8B9A5702D0">
+ <ownedComment xmi:id="_sJPANhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8B9A5902FB">
+ <body>The fragments of the operand.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJPAOhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJPAORTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C46E8B3010C" name="InteractionConstraint">
+ <ownedComment xmi:id="_sHvygRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C46E8B3010C">
+ <body>An interaction constraint is a Boolean expression that guards an operand in a combined fragment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sHvyihTaEdqZu-3Jy1-uYg" name="dynamic_variables" constrainedElement="_3ADC7B74022D3C46E8B3010C">
+ <ownedComment xmi:id="_sHvyhhTaEdqZu-3Jy1-uYg" annotatedElement="_sHvyihTaEdqZu-3Jy1-uYg">
+ <body>The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHvyixTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sHvykxTaEdqZu-3Jy1-uYg" name="global_data" constrainedElement="_3ADC7B74022D3C46E8B3010C">
+ <ownedComment xmi:id="_sHvyjxTaEdqZu-3Jy1-uYg" annotatedElement="_sHvykxTaEdqZu-3Jy1-uYg">
+ <body>The constraint may contain references to global data or write-once data.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sHvylBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sH48YxTaEdqZu-3Jy1-uYg" name="minint_maxint" constrainedElement="_3ADC7B74022D3C46E8B3010C">
+ <ownedComment xmi:id="_sHvymBTaEdqZu-3Jy1-uYg" annotatedElement="_sH48YxTaEdqZu-3Jy1-uYg">
+ <body>Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sH48ZBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sH48bBTaEdqZu-3Jy1-uYg" name="minint_non_negative" constrainedElement="_3ADC7B74022D3C46E8B3010C">
+ <ownedComment xmi:id="_sH48aBTaEdqZu-3Jy1-uYg" annotatedElement="_sH48bBTaEdqZu-3Jy1-uYg">
+ <body>If minint is specified, then the expression must evaluate to a non-negative integer.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sH48bRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sH48dRTaEdqZu-3Jy1-uYg" name="maxint_positive" constrainedElement="_3ADC7B74022D3C46E8B3010C">
+ <ownedComment xmi:id="_sH48cRTaEdqZu-3Jy1-uYg" annotatedElement="_sH48dRTaEdqZu-3Jy1-uYg">
+ <body>If maxint is specified, then the expression must evaluate to a positive integer.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sH48dhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sH48fhTaEdqZu-3Jy1-uYg" name="maxint_greater_equal_minint" constrainedElement="_3ADC7B74022D3C46E8B3010C">
+ <ownedComment xmi:id="_sH48ehTaEdqZu-3Jy1-uYg" annotatedElement="_sH48fhTaEdqZu-3Jy1-uYg">
+ <body>If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sH48fxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C46E93D02EB" general="_3ADC7B74022D3CAAED67023C"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C46E99D02CB" name="minint" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3C46E99C0388">
+ <ownedComment xmi:id="_sI8FXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C46E99D02CB">
+ <body>The minimum number of iterations of a loop</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJFPMxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJFPMhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C46E9B702F0" name="maxint" type="_3ADC7B74022D3D0254AB023D" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3C46E9B70137">
+ <ownedComment xmi:id="_sJFPNxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C46E9B702F0">
+ <body>The maximum number of iterations of a loop</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJFPOxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJFPOhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38A3FD2A006E" name="Gate">
+ <ownedComment xmi:id="_sICtaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38A3FD2A006E">
+ <body>A gate is a connection point for relating a message outside an interaction fragment with a message inside the interaction fragment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sICtchTaEdqZu-3Jy1-uYg" name="messages_actual_gate" constrainedElement="_3ADC7B74022D38A3FD2A006E">
+ <ownedComment xmi:id="_sICtbhTaEdqZu-3Jy1-uYg" annotatedElement="_sICtchTaEdqZu-3Jy1-uYg">
+ <body>The message leading to/from an actualGate of an InteractionUse must correspond to the message leading from/to the formalGate with the same name of the Interaction referenced by the InteractionUse.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sICtcxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sICtexTaEdqZu-3Jy1-uYg" name="messages_combined_fragment" constrainedElement="_3ADC7B74022D38A3FD2A006E">
+ <ownedComment xmi:id="_sICtdxTaEdqZu-3Jy1-uYg" annotatedElement="_sICtexTaEdqZu-3Jy1-uYg">
+ <body>The message leading to/from an (expression) Gate within a CombinedFragment must correspond to the message leading from/to the CombinedFragment on its outside.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sICtfBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CC3000F0057" general="_3ADC7B74022D3CC2FD900302"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D38A3FF2003C0" name="CombinedFragment">
+ <ownedComment xmi:id="_sICtgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D38A3FF2003C0">
+ <body>A combined fragment defines an expression of interaction fragments. A combined fragment is defined by an interaction operator and corresponding interaction operands. Through the use of combined fragments the user will be able to describe a number of traces in a compact and concise manner.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sIMeaBTaEdqZu-3Jy1-uYg" name="opt_loop_break_neg" constrainedElement="_3ADC7B74022D38A3FF2003C0">
+ <ownedComment xmi:id="_sIMeZBTaEdqZu-3Jy1-uYg" annotatedElement="_sIMeaBTaEdqZu-3Jy1-uYg">
+ <body>If the interactionOperator is opt, loop, break, or neg there must be exactly one operand</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIMeaRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sIMecRTaEdqZu-3Jy1-uYg" name="minint_and_maxint" constrainedElement="_3ADC7B74022D38A3FF2003C0">
+ <ownedComment xmi:id="_sIMebRTaEdqZu-3Jy1-uYg" annotatedElement="_sIMecRTaEdqZu-3Jy1-uYg">
+ <body>The InteractionConstraint with minint and maxint only apply when attached to an InteractionOperand where the interactionOperator is loop.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIMechTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sIMeehTaEdqZu-3Jy1-uYg" name="break" constrainedElement="_3ADC7B74022D38A3FF2003C0">
+ <ownedComment xmi:id="_sIMedhTaEdqZu-3Jy1-uYg" annotatedElement="_sIMeehTaEdqZu-3Jy1-uYg">
+ <body>If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines within the enclosing InteractionFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIMeexTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sIMegxTaEdqZu-3Jy1-uYg" name="consider_and_ignore" constrainedElement="_3ADC7B74022D38A3FF2003C0">
+ <ownedComment xmi:id="_sIMefxTaEdqZu-3Jy1-uYg" annotatedElement="_sIMegxTaEdqZu-3Jy1-uYg">
+ <body>The interaction operators 'consider' and 'ignore' can only be used for the CombineIgnoreFragment subtype of CombinedFragment</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIMehBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B975A3D0042" general="_3ADC7B74022D408A540F023B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B7A26FA02E4" name="interactionOperator" type="_3ADC7B74022D3B7A272600B4">
+ <ownedComment xmi:id="_sIMeiBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B7A26FA02E4">
+ <body>Specifies the operation which defines the semantics of this combination of InteractionFragments.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_a_3UkGgVEdqfYrlcy8iLFA" type="_3ADC7B74022D3B7A272600B4" instance="_3ADC7B74022D3C46B98B004F"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A973F030C" name="operand" type="_3ADC7B74022D3A4CAC51006F" isOrdered="true" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3B9A973E0365">
+ <ownedComment xmi:id="_sIyUSRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A973F030C">
+ <body>The set of operands of the combined fragment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIyUTRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIyUTBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9A9EA6031B" name="cfragmentGate" type="_3ADC7B74022D38A3FD2A006E" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3B9A9EA6002C">
+ <ownedComment xmi:id="_sIyUXRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9A9EA6031B">
+ <body>Specifies the gates that form the interface between this CombinedFragment and its surroundings</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sI8FQxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sI8FQhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE359F6035B" name="Interaction">
+ <generalization xmi:id="_3ADC7B74022D41B0C1390242" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9AA23A0296" name="formalGate" type="_3ADC7B74022D38A3FD2A006E" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B9AA23A005B">
+ <ownedComment xmi:id="_sI8FUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9AA23A0296">
+ <body>Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sI8FVxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sI8FVhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DE35C7C0043" name="Lifeline">
+ <ownedAttribute xmi:id="_3ADC7B74022D3B97C62D00A9" name="decomposedAs" type="_3ADC7B74022D3A641F9802FA" association="_3ADC7B74022D3B97C62C0288">
+ <ownedComment xmi:id="_sIojWRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B97C62D00A9">
+ <body>References the Interaction that represents the decomposition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIojXRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIojXBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3DFC87C303E5" name="Continuation">
+ <ownedComment xmi:id="_sIVoXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC87C303E5">
+ <body>A continuation is a syntactic way to define continuations of different branches of an alternative combined fragment. Continuations is intuitively similar to labels representing intermediate points in a flow of control.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sIVoZRTaEdqZu-3Jy1-uYg" name="same_name" constrainedElement="_3ADC7B74022D3DFC87C303E5">
+ <ownedComment xmi:id="_sIVoYRTaEdqZu-3Jy1-uYg" annotatedElement="_sIVoZRTaEdqZu-3Jy1-uYg">
+ <body>Continuations with the same name may only cover the same set of Lifelines (within one Classifier).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIVoZhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sIfZUxTaEdqZu-3Jy1-uYg" name="global" constrainedElement="_3ADC7B74022D3DFC87C303E5">
+ <ownedComment xmi:id="_sIVoahTaEdqZu-3Jy1-uYg" annotatedElement="_sIfZUxTaEdqZu-3Jy1-uYg">
+ <body>Continuations are always global in the enclosing InteractionFragment e.g. it always covers all Lifelines covered by the enclosing InteractionFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIfZVBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sIfZXBTaEdqZu-3Jy1-uYg" name="first_or_last_interaction_fragment" constrainedElement="_3ADC7B74022D3DFC87C303E5">
+ <ownedComment xmi:id="_sIfZWBTaEdqZu-3Jy1-uYg" annotatedElement="_sIfZXBTaEdqZu-3Jy1-uYg">
+ <body>Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIfZXRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3DFC896F028C" general="_3ADC7B74022D408A540F023B"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFC90410098" name="setting">
+ <ownedComment xmi:id="_sIfZYRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFC90410098">
+ <body>True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_G4obABTbEdqZu-3Jy1-uYg" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D408A540F023B" name="InteractionFragment" isAbstract="true">
+ <generalization xmi:id="_3ADC7B74022D41B06B81005E" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B8B9A590323" name="enclosingOperand" type="_3ADC7B74022D3A4CAC51006F" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3B8B9A5702D0">
+ <ownedComment xmi:id="_sJPAPBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8B9A590323">
+ <body>The operand enclosing this InteractionFragment (they may nest recursively)</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJYxMxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJYxMhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D411FA4AB0092" name="ConsiderIgnoreFragment">
+ <ownedComment xmi:id="_sIojQBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D411FA4AB0092">
+ <body>A consider ignore fragment is a kind of combined fragment that is used for the consider and ignore cases, which require lists of pertinent messages to be specified.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sIojSRTaEdqZu-3Jy1-uYg" name="consider_or_ignore" constrainedElement="_3ADC7B74022D411FA4AB0092">
+ <ownedComment xmi:id="_sIojRRTaEdqZu-3Jy1-uYg" annotatedElement="_sIojSRTaEdqZu-3Jy1-uYg">
+ <body>The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIojShTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(interactionOperator = #consider) or (interactionOperator = #ignore)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sIojUhTaEdqZu-3Jy1-uYg" name="type" constrainedElement="_3ADC7B74022D411FA4AB0092">
+ <ownedComment xmi:id="_sIojThTaEdqZu-3Jy1-uYg" annotatedElement="_sIojUhTaEdqZu-3Jy1-uYg">
+ <body>The NamedElements must be of a type of element that identifies a message (e.g., an Operation, Reception, or a Signal).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sIojUxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D411FA5330065" general="_3ADC7B74022D38A3FF2003C0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D411FA50D0287" name="message" type="_3ADC7B74022D3CAAECB901B0" association="_3ADC7B74022D411FA50B0325">
+ <ownedComment xmi:id="_sJYxNhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D411FA50D0287">
+ <body>The set of messages that apply to this fragment</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJYxOhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJYxORTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3B7A272600B4" name="InteractionOperatorKind">
+ <ownedComment xmi:id="_sH48gxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B7A272600B4">
+ <body>InteractionOperatorKind is an enumeration designating the different kinds of operators of combined fragments. The interaction operand defines the type of operator of a combined fragment.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3C46B98B004F" name="seq">
+ <ownedComment xmi:id="_5cd3sDXSEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3C46B98B004F">
+ <body>The interactionOperator seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B7A276703D4" name="alt">
+ <ownedComment xmi:id="_sxEYkDXREdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B7A276703D4">
+ <body>The interactionOperator alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B7A276D032A" name="opt">
+ <ownedComment xmi:id="_np3YwDXSEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B7A276D032A">
+ <body>The interactionOperator opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DFC86D802A7" name="break">
+ <ownedComment xmi:id="_taON0DXSEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3DFC86D802A7">
+ <body>The interactionOperator break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B7A276B03AC" name="par">
+ <ownedComment xmi:id="_w7O2cDXSEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B7A276B03AC">
+ <body>The interactionOperator par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3C46B98701A7" name="strict">
+ <ownedComment xmi:id="_9Ac70DXSEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3C46B98701A7">
+ <body>The interactionOperator strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B7A27B00140" name="loop">
+ <ownedComment xmi:id="_PVeLUDXTEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B7A27B00140">
+ <body>The interactionOperator loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B8B8D9000F6" name="critical">
+ <ownedComment xmi:id="_D0whMDXTEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B8B8D9000F6">
+ <body>The interactionOperator critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as e.g. with par-operator, this is prevented by defining a region.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B8B8DA00289" name="neg">
+ <ownedComment xmi:id="__dp-EDXSEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B8B8DA00289">
+ <body>The interactionOperator neg designates that the CombinedFragment represents traces that are defined to be invalid.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B8B8DB0028C" name="assert">
+ <ownedComment xmi:id="_J-ccQDXTEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3B8B8DB0028C">
+ <body>The interactionOperator assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DFC86A1010D" name="ignore">
+ <ownedComment xmi:id="_fQ3RADXTEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3DFC86A1010D">
+ <body>The interacionOperator ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D257AE90097" name="consider">
+ <ownedComment xmi:id="_imZCYDXTEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3D257AE90097">
+ <body>The interactionOperator consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B97C62C0288" name="A_lifeline_decomposedAs" memberEnd="_3ADC7B74022D3B97C62D008B _3ADC7B74022D3B97C62D00A9">
+ <ownedEnd xmi:id="_3ADC7B74022D3B97C62D008B" type="_3ADC7B74022D3DE35C7C0043" association="_3ADC7B74022D3B97C62C0288"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A96C202EE" name="A_guard_interactionOperand" memberEnd="_3ADC7B74022D3B9A96C402F1 _3ADC7B74022D3B9A96C402FB">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A96C402FB" type="_3ADC7B74022D3A4CAC51006F" association="_3ADC7B74022D3B9A96C202EE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIyURhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIyURRTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A973E0365" name="A_operand_combinedFragment" memberEnd="_3ADC7B74022D3B9A973F030C _3ADC7B74022D3B9A973F0316">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A973F0316" type="_3ADC7B74022D38A3FF2003C0" association="_3ADC7B74022D3B9A973E0365">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIyUUBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIyUTxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A9C8D0387" name="A_refersTo_interactionUse" memberEnd="_3ADC7B74022D3B9A9C900024 _3ADC7B74022D3B9A9C900038">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A9C900038" type="_3ADC7B74022D38A3FDEF012C" association="_3ADC7B74022D3B9A9C8D0387">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sIyUWhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sIyUWRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A9EA6002C" name="A_cfragmentGate_combinedFragment" memberEnd="_3ADC7B74022D3B9A9EA6031B _3ADC7B74022D3B9A9EA6031D">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A9EA6031D" type="_3ADC7B74022D38A3FF2003C0" association="_3ADC7B74022D3B9A9EA6002C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sI8FRhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sI8FRRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9A9EF800CA" name="A_interactionUse_actualGate" memberEnd="_3ADC7B74022D3B9A9EF802BF _3ADC7B74022D3B9A9EF802D3">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9A9EF802BF" type="_3ADC7B74022D38A3FDEF012C" association="_3ADC7B74022D3B9A9EF800CA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sI8FShTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sI8FSRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9AA23A005B" name="A_formalGate_interaction" memberEnd="_3ADC7B74022D3B9AA23A0296 _3ADC7B74022D3B9AA23A02A0">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9AA23A02A0" type="_3ADC7B74022D3DE359F6035B" association="_3ADC7B74022D3B9AA23A005B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sI8FWhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sI8FWRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C46E99C0388" name="A_minint_interactionConstraint" memberEnd="_3ADC7B74022D3C46E99D02CB _3ADC7B74022D3C46E99E0087">
+ <ownedEnd xmi:id="_3ADC7B74022D3C46E99E0087" type="_3ADC7B74022D3C46E8B3010C" association="_3ADC7B74022D3C46E99C0388">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nZZN8U_AEduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nZZN8E_AEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C46E9B70137" name="A_maxint_interactionConstraint" memberEnd="_3ADC7B74022D3C46E9B702F0 _3ADC7B74022D3C46E9B70386">
+ <ownedEnd xmi:id="_3ADC7B74022D3C46E9B70386" type="_3ADC7B74022D3C46E8B3010C" association="_3ADC7B74022D3C46E9B70137">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mvOPkU_AEduFOcgjjRrSMg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mvOPkE_AEduFOcgjjRrSMg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D61F4A10112" name="A_argument_interactionUse" memberEnd="_3ADC7B74022D3D61F4A20146 _3ADC7B74022D3D61F4A20150">
+ <ownedEnd xmi:id="_3ADC7B74022D3D61F4A20150" type="_3ADC7B74022D38A3FDEF012C" association="_3ADC7B74022D3D61F4A10112">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJPAMRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJPAMBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B8B9A5702D0" name="A_fragment_enclosingOperand" memberEnd="_3ADC7B74022D3B8B9A5902FB _3ADC7B74022D3B8B9A590323"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D411FA50B0325" name="A_message_considerIgnoreFragment" memberEnd="_3ADC7B74022D411FA50D0287 _3ADC7B74022D411FA50D02A5">
+ <ownedEnd xmi:id="_3ADC7B74022D411FA50D02A5" type="_3ADC7B74022D411FA4AB0092" association="_3ADC7B74022D411FA50B0325">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sJYxPRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sJYxPBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D5530D00105" name="StateMachines">
+ <packageImport xmi:id="_DFZAwD9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3D1281210157"/>
+ <packageImport xmi:id="_fF3B4D9KEdqjIv4r4xIGZw" importedPackage="_3ADC7B74022D3ADCA16503D6"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D334A99B00208" name="BehaviorStateMachines">
+ <packageImport xmi:id="_3ADC7B74022D337EEF3202D0" importedPackage="_3ADC7B74022D335C122001A4"/>
+ <packageImport xmi:id="_3ADC7B74022D410AC04F00F1" importedPackage="_3ADC7B74022D3DF1253C0119"/>
+ <packageMerge xmi:id="_HJUiYBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3CFC224902BF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D327D9E410186" name="StateMachine">
+ <ownedComment xmi:id="_seZX5BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D327D9E410186">
+ <body>State machines can be used to express the behavior of part of a system. Behavior is modeled as a traversal of a graph of state nodes interconnected by one or more joined transition arcs that are triggered by the dispatching of series of (event) occurrences. During this traversal, the state machine executes a series of activities associated with various elements of the state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_seZX7RTaEdqZu-3Jy1-uYg" name="classifier_context" constrainedElement="_3ADC7B74022D327D9E410186">
+ <ownedComment xmi:id="_seZX6RTaEdqZu-3Jy1-uYg" annotatedElement="_seZX7RTaEdqZu-3Jy1-uYg">
+ <body>The classifier context of a state machine cannot be an interface.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_seZX7hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>context->notEmpty() implies not context.oclIsKindOf(Interface)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_seih0xTaEdqZu-3Jy1-uYg" name="context_classifier" constrainedElement="_3ADC7B74022D327D9E410186">
+ <ownedComment xmi:id="_seZX8hTaEdqZu-3Jy1-uYg" annotatedElement="_seih0xTaEdqZu-3Jy1-uYg">
+ <body>The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_seih1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_seih3BTaEdqZu-3Jy1-uYg" name="connection_points" constrainedElement="_3ADC7B74022D327D9E410186">
+ <ownedComment xmi:id="_seih2BTaEdqZu-3Jy1-uYg" annotatedElement="_seih3BTaEdqZu-3Jy1-uYg">
+ <body>The connection points of a state machine are pseudostates of kind entry point or exit point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_seih3RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_seih5RTaEdqZu-3Jy1-uYg" name="method" constrainedElement="_3ADC7B74022D327D9E410186">
+ <ownedComment xmi:id="_seih4RTaEdqZu-3Jy1-uYg" annotatedElement="_seih5RTaEdqZu-3Jy1-uYg">
+ <body>A state machine as the method for a behavioral feature cannot have entry/exit connection points.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_seih5hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>specification->notEmpty() implies connectionPoint->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B9CA63B03A9" general="_3ADC7B74022D3B9A6F4F0008"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C610C58024D" name="region" type="_3ADC7B74022D3C610C150391" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3C610C570378">
+ <ownedComment xmi:id="_shrVcxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C610C58024D">
+ <body>The regions owned directly by the state machine.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shrVdxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shrVdhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C612AB700EE" name="connectionPoint" type="_3ADC7B74022D328A47F10064" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3C612AB50254">
+ <ownedComment xmi:id="_shrVgBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C612AB700EE">
+ <body>The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh0fUxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh0fUhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC52E2903A8" name="extendedStateMachine" type="_3ADC7B74022D327D9E410186" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CC52E2702F1">
+ <ownedComment xmi:id="_sh-QWRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC52E2903A8">
+ <body>The state machines of which this is an extension.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh-QXRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh-QXBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3403125E03A2" name="submachineState" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D3403125E0140">
+ <ownedComment xmi:id="_lglfYGdnEdqCCpdUvbQY5w" annotatedElement="_3ADC7B74022D3403125E03A2">
+ <body>References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shXzeBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shXzdxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F7C400FA" name="LCA" isQuery="true" bodyCondition="__Y_TwDXCEdqtg44TD97UDQ">
+ <ownedComment xmi:id="_seih6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F7C400FA">
+ <body>The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy.</body>
+ </ownedComment>
+ <ownedRule xmi:id="__Y_TwDXCEdqtg44TD97UDQ" name="spec" constrainedElement="_3ADC7B74022D4300F7C400FA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="__Y_TwTXCEdqtg44TD97UDQ">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_seih7RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECC502DA" direction="return"/>
+ <ownedParameter xmi:id="_3ADC7B74022D430C77DF0113" name="s1" type="_3ADC7B74022D3287F81C0136"/>
+ <ownedParameter xmi:id="_3ADC7B74022D430C77F5036E" name="s2" type="_3ADC7B74022D3287F81C0136"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F7D601A5" name="ancestor" isQuery="true" bodyCondition="_seih-RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_seih8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F7D601A5">
+ <body>The query ancestor(s1, s2) checks whether s2 is an ancestor state of state s1. context StateMachine::ancestor (s1 : State, s2 : State) : Boolean&#xD;
+</body>
+ </ownedComment>
+ <ownedRule xmi:id="_seih-RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F7D601A5">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_seih-hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if (s2 = s1) then&#xA;true&#xA;else if (s1.container->isEmpty) then&#xA;true&#xA;else if (s2.container->isEmpty) then&#xA;false&#xA;else (ancestor (s1, s2.container))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_seih9hTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430C792C00A4" name="s1" type="_3ADC7B74022D3287F81C0136"/>
+ <ownedParameter xmi:id="_3ADC7B74022D430C79430147" name="s2" type="_3ADC7B74022D3287F81C0136"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F7ED008C" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD5D00DA" bodyCondition="_sesS0xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_seih_hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F7ED008C">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a statemachine are properly related to the redefinition contexts of the specified statemachine to allow this element to redefine the other. The containing classifier of a redefining statemachine must redefine the containing classifier of the redefined statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sesS0xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F7ED008C">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sesS1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sesS0hTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_HRnV8Fd6EdqYibj4xL6Cag" name="redefined" type="_3ADC7B74022D327D9E410186" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F81300AB" name="isConsistentWith" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_6iv9kDXCEdqtg44TD97UDQ">
+ <ownedComment xmi:id="_sesS2BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F81300AB">
+ <body>The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_6iv9kDXCEdqtg44TD97UDQ" name="spec" constrainedElement="_3ADC7B74022D4300F81300AB">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_6iv9kTXCEdqtg44TD97UDQ">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sesS2xTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430C79F70006" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3287F81C0136" name="State">
+ <ownedComment xmi:id="_sesS4BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3287F81C0136">
+ <body>A state models a situation during which some (usually implicit) invariant condition holds.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_se2D0xTaEdqZu-3Jy1-uYg" name="submachine_states" constrainedElement="_3ADC7B74022D3287F81C0136">
+ <ownedComment xmi:id="_sesS8BTaEdqZu-3Jy1-uYg" annotatedElement="_se2D0xTaEdqZu-3Jy1-uYg">
+ <body>Only submachine states can have connection point references.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se2D1BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isSubmachineState implies connection->notEmpty ( )</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_se2D3BTaEdqZu-3Jy1-uYg" name="destinations_or_sources_of_transitions" constrainedElement="_3ADC7B74022D3287F81C0136">
+ <ownedComment xmi:id="_se2D2BTaEdqZu-3Jy1-uYg" annotatedElement="_se2D3BTaEdqZu-3Jy1-uYg">
+ <body>The connection point references used as destinations/sources of transitions associated with a submachine state must be defined as entry/exit points in the submachine state machine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se2D3RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.isSubmachineState implies (self.connection->forAll (cp |&#xD;&#xA;cp.entry->forAll (p | p.statemachine = self.submachine) and&#xD;&#xA;cp.exit->forAll (p | p.statemachine = self.submachine)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_se2D5RTaEdqZu-3Jy1-uYg" name="submachine_or_regions" constrainedElement="_3ADC7B74022D3287F81C0136">
+ <ownedComment xmi:id="_se2D4RTaEdqZu-3Jy1-uYg" annotatedElement="_se2D5RTaEdqZu-3Jy1-uYg">
+ <body>A state is not allowed to have both a submachine and regions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se2D5hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>isComposite implies not isSubmachineState</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_se_N3hTaEdqZu-3Jy1-uYg" name="composite_states" constrainedElement="_3ADC7B74022D3287F81C0136">
+ <ownedComment xmi:id="_se_N2hTaEdqZu-3Jy1-uYg" annotatedElement="_se_N3hTaEdqZu-3Jy1-uYg">
+ <body>Only composite states can have entry or exit pseudostates defined.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se_N3xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>connectionPoint->notEmpty() implies isComoposite</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_se_N5xTaEdqZu-3Jy1-uYg" name="entry_or_exit" constrainedElement="_3ADC7B74022D3287F81C0136">
+ <ownedComment xmi:id="_se_N4xTaEdqZu-3Jy1-uYg" annotatedElement="_se_N5xTaEdqZu-3Jy1-uYg">
+ <body>Only entry or exit pseudostates can serve as connection points.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se_N6BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>connectionPoint->forAll(cp|cp.kind = #entry or cp.kind = #exit)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D328A49050366" general="_3ADC7B74022D328A484303D4"/>
+ <generalization xmi:id="_3ADC7B74022D3CC52D4903B0" general="_3ADC7B74022D3CAB007101D7"/>
+ <generalization xmi:id="_3ADC7B74022D4103139502CB" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C612C28022F" name="isComposite" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_sfI-2xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C612C28022F">
+ <body>A state with isComposite=true is said to be a composite state. A composite state is a state that contains at least one region.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_FU6DAGggEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C6136B401B9" name="isOrthogonal" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_sfI-4RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C6136B401B9">
+ <body>A state with isOrthogonal=true is said to be an orthogonal composite state. An orthogonal composite state contains two or more regions.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_I4TRQGggEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C613764000E" name="isSimple" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_sfSvxRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C613764000E">
+ <body>A state with isSimple=true is said to be a simple state. A simple state does not have any regions and it does not refer to any submachine state machine.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MhzHgGggEdqfYrlcy8iLFA" value="true">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C678F5300CA" name="isSubmachineState" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_sfSvyxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C678F5300CA">
+ <body>A state with isSubmachineState=true is said to be a submachine state. Such a state refers to a state machine (submachine).</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_QZwQgGggEdqfYrlcy8iLFA">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3403125E03A3" name="submachine" type="_3ADC7B74022D327D9E410186" association="_3ADC7B74022D3403125E0140">
+ <ownedComment xmi:id="_shXzehTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3403125E03A3">
+ <body>The state machine that is to be inserted in place of the (submachine) state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shXzfhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shXzfRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B8A553B019A" name="connection" type="_3ADC7B74022D3B8A548E03CC" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3B8A553A033D">
+ <ownedComment xmi:id="_shhkchTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8A553B019A">
+ <body>The entry and exit connection points used in conjunction with this (submachine) state, i.e. as targets and sources, respectively, in the region with the submachine state. A connection point reference references the corresponding definition of a connection point pseudostate in the statemachine referenced by the submachinestate.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shhkdhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shhkdRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9CACBF03D9" name="redefinedState" type="_3ADC7B74022D3287F81C0136" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3B9CACBE0360">
+ <ownedComment xmi:id="_shhkeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9CACBF03D9">
+ <body>The state of which this state is a redefinition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shhkfRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shhkfBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C612B29028D" name="region" type="_3ADC7B74022D3C610C150391" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3C612B280078">
+ <ownedComment xmi:id="_sh0fXBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C612B29028D">
+ <body>The regions owned directly by the state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh0fYBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh0fXxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D73412C0329" name="redefinitionContext" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" redefinedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3D73412B0151">
+ <ownedComment xmi:id="_siHaTBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D73412C0329">
+ <body>References the classifier in which context this element may be redefined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siHaUBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siHaTxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3DFF235A01E8" name="stateInvariant" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3DFF235701F7">
+ <ownedComment xmi:id="_sia8QRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DFF235A01E8">
+ <body>Specifies conditions that are always true when this state is the current state. In protocol state machines, state invariants are additional conditions to the preconditions of the outgoing transitions, and to the postcondition of the incoming transitions.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8RRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8RBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410DA7800057" name="entry" type="_3ADC7B74022D3B9A6F4F0008" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410DA77F0006">
+ <ownedComment xmi:id="_sia8VRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DA7800057">
+ <body>An optional behavior that is executed whenever this state is entered regardless of the transition taken to reach the state. If defined, entry actions are always executed to completion prior to any internal behavior or transitions performed within the state.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8WRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8WBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410DA7C90226" name="exit" type="_3ADC7B74022D3B9A6F4F0008" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410DA7C801C1">
+ <ownedComment xmi:id="_sia8XxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DA7C90226">
+ <body>An optional behavior that is executed whenever this state is exited regardless of which transition was taken out of the state. If defined, exit actions are always executed to completion only after all internal activities and transition actions have completed execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8YxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8YhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410DA80B00FC" name="doActivity" type="_3ADC7B74022D3B9A6F4F0008" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410DA80A0082">
+ <ownedComment xmi:id="_sikGMhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DA80B00FC">
+ <body>An optional behavior that is executed while being in the state. The execution starts when this state is entered, and stops either by itself, or when the state is exited, whichever comes first.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sikGNhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sikGNRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4113F0B90373" name="connectionPoint" type="_3ADC7B74022D328A47F10064" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D4113F0B802B3">
+ <ownedComment xmi:id="_sikGPBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4113F0B90373">
+ <body>The entry and exit pseudostates of a composite state. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite states.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sikGQBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sikGPxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4162AE0F02CD" name="deferrableTrigger" type="_3ADC7B74022D3B9D229602A5" aggregation="composite" association="_3ADC7B74022D4162AE0E0361">
+ <ownedComment xmi:id="_sikGUxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162AE0F02CD">
+ <body>A list of triggers that are candidates to be retained by the state machine if they trigger no transitions out of the state (not consumed). A deferred trigger is retained until the state machine reaches a state configuration where it is no longer deferred.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sit3MxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sit3MhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F49E035B" name="isSimple" isQuery="true" bodyCondition="_se2D7hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_se2D6hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F49E035B">
+ <body>A simple state is a state without any regions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_se2D7hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F49E035B _3ADC7B74022D3C613764000E">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se2D7xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = region.isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_se2D7RTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F4B2003E" name="isComposite" isQuery="true" bodyCondition="_se2D9xTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_se2D8xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F4B2003E">
+ <body>A composite state is a state with at least one region.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_se2D9xTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F4B2003E _3ADC7B74022D3C612C28022F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se2D-BTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = region.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_se2D9hTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F4D102BF" name="isOrthogonal" isQuery="true" bodyCondition="_se_NwxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_se2D_BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F4D102BF">
+ <body>An orthogonal state is a composite state with at least 2 regions</body>
+ </ownedComment>
+ <ownedRule xmi:id="_se_NwxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F4D102BF _3ADC7B74022D3C6136B401B9">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se_NxBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (region->size () > 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_se_NwhTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F4EE033C" name="isSubmachineState" isQuery="true" bodyCondition="_se_NzBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_se_NyBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F4EE033C">
+ <body>Only submachine states can have a reference statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_se_NzBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F4EE033C _3ADC7B74022D3C678F5300CA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se_NzRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = submachine.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_se_NyxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F510029F" name="redefinitionContext" isQuery="true" bodyCondition="_se_N1RTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_se_N0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F510029F">
+ <body>The redefinition context of a state is the nearest containing statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_se_N1RTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F510029F _3ADC7B74022D3D73412C0329">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_se_N1hTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_se_N1BTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECE80199" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F70A0148" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD5D00DA" bodyCondition="_sfI-wxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_se_N7BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F70A0148">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a state are properly related to the redefinition contexts of the specified state to allow this element to redefine the other. The containing region of a redefining state must redefine the containing region of the redefined state.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfI-wxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F70A0148">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfI-xBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sfI-whTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_EPAgkFd6EdqYibj4xL6Cag" name="redefined" type="_3ADC7B74022D3287F81C0136" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F719035B" name="isConsistentWith" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_sfI-zRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sfI-yBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F719035B">
+ <body>The query isConsistentWith() specifies that a redefining state is consistent with a redefined state provided that the redefining state is an extension of the redefined state: A simple state can be redefined (extended) to become a composite state (by adding a region) and a composite state can be redefined (extended) by adding regions and by adding vertices, states, and transitions to inherited regions. All states may add or replace entry, exit, and 'doActivity' actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfI-zRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F719035B">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfI-zhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sfI-yxTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430C75820211" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F7320399" name="containingStateMachine" isQuery="true" redefinedOperation="_3ADC7B74022D4300FA66007D" bodyCondition="_sfI-1hTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sfI-0hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F7320399">
+ <body>The query containingStateMachine() returns the state machine that contains the state either directly or transitively.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfI-1hTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F7320399">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfI-1xTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = container.containingStateMachine()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sfI-1RTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D327D9E410186" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3288D70A0212" name="Transition">
+ <ownedComment xmi:id="_sfSv0RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3288D70A0212">
+ <body>A transition is a directed relationship between a source vertex and a target vertex. It may be part of a compound transition, which takes the state machine from one state configuration to another, representing the complete response of the state machine to an occurrence of an event of a particular type.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfb5uRTaEdqZu-3Jy1-uYg" name="fork_segment_guards" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sfb5tRTaEdqZu-3Jy1-uYg" annotatedElement="_sfb5uRTaEdqZu-3Jy1-uYg">
+ <body>A fork segment must not have guards or triggers.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfb5uhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (guard->isEmpty() and trigger->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sfb5whTaEdqZu-3Jy1-uYg" name="join_segment_guards" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sfb5vhTaEdqZu-3Jy1-uYg" annotatedElement="_sfb5whTaEdqZu-3Jy1-uYg">
+ <body>A join segment must not have guards or triggers.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfb5wxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (guard->isEmpty() and trigger->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sfb5yxTaEdqZu-3Jy1-uYg" name="fork_segment_state" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sfb5xxTaEdqZu-3Jy1-uYg" annotatedElement="_sfb5yxTaEdqZu-3Jy1-uYg">
+ <body>A fork segment must always target a state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfb5zBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (target.oclIsKindOf(State))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sfb51BTaEdqZu-3Jy1-uYg" name="join_segment_state" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sfb50BTaEdqZu-3Jy1-uYg" annotatedElement="_sfb51BTaEdqZu-3Jy1-uYg">
+ <body>A join segment must always originate from a state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfb51RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (source.oclIsKindOf(State))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sflqsxTaEdqZu-3Jy1-uYg" name="outgoing_pseudostates" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sfb52RTaEdqZu-3Jy1-uYg" annotatedElement="_sflqsxTaEdqZu-3Jy1-uYg">
+ <body>Transitions outgoing pseudostates may not have a trigger.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sflqtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>source.oclIsKindOf(Pseudostate) and&#xA;((source.kind &lt;> #junction) and (source.kind &lt;> #join) and (source.kind &lt;> #initial)) implies trigger->isEmpty()&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sflqvBTaEdqZu-3Jy1-uYg" name="initial_transition" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sflquBTaEdqZu-3Jy1-uYg" annotatedElement="_sflqvBTaEdqZu-3Jy1-uYg">
+ <body>An initial transition at the topmost level (region of a statemachine) either has no trigger or it has a trigger with the stereotype &lt;&lt;create>>.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sflqvRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.source.oclIsKindOf(Pseudostate) implies&#xA;(self.source.oclAsType(Pseudostate).kind = #initial) implies&#xA;(self.source.container = self.stateMachine.top) implies&#xA;((self.trigger->isEmpty) or&#xA;(self.trigger.stereotype.name = 'create'))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sflqxRTaEdqZu-3Jy1-uYg" name="signatures_compatible" constrainedElement="_3ADC7B74022D3288D70A0212">
+ <ownedComment xmi:id="_sflqwRTaEdqZu-3Jy1-uYg" annotatedElement="_sflqxRTaEdqZu-3Jy1-uYg">
+ <body>In case of more than one trigger, the signatures of these must be compatible in case the parameters of the signal are assigned to local variables/attributes.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sflqxhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CC52D72007A" general="_3ADC7B74022D3CAB007101D7"/>
+ <generalization xmi:id="_O04s0GgSEdqfYrlcy8iLFA" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C612B6500DA" name="kind" type="_3ADC7B74022D3E5B99180230">
+ <ownedComment xmi:id="_MDwY0BWbEdqDjccWl3Bw0Q" annotatedElement="_3ADC7B74022D3C612B6500DA">
+ <body>Indicates the precise type of the transition.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_fRwGcGsIEdqjf5gpY12xSQ" type="_3ADC7B74022D3E5B99180230" instance="_3ADC7B74022D3E5B998C03B4"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3288D72700C8" name="container" type="_3ADC7B74022D3C610C150391" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3288D725037A">
+ <ownedComment xmi:id="_shOpeBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3288D72700C8">
+ <body>Designates the region that owns this transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shOpfBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shOpexTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3289028300D2" name="source" type="_3ADC7B74022D328A484303D4" association="_3ADC7B74022D32890282014A">
+ <ownedComment xmi:id="_shOpixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3289028300D2">
+ <body>Designates the originating vertex (state or pseudostate) of the transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shXzYxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shXzYhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3289028D035C" name="target" type="_3ADC7B74022D328A484303D4" association="_3ADC7B74022D3289028C03D4">
+ <ownedComment xmi:id="_shXzbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3289028D035C">
+ <body>Designates the target vertex that is reached when the transition is taken.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shXzcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shXzbxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B9CACD701E9" name="redefinedTransition" type="_3ADC7B74022D3288D70A0212" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3B9CACD5034F">
+ <ownedComment xmi:id="_shhkgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B9CACD701E9">
+ <body>The transition that is redefined by this transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shrVYxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shrVYhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CE2B46A02E0" name="guard" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_3ADC7B74022D3CE2B46901C7">
+ <ownedComment xmi:id="_sh-QYBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CE2B46A02E0">
+ <body>A guard is a constraint that provides a fine-grained control over the firing of the transition. The guard is evaluated when an event occurrence is dispatched by the state machine. If the guard is true at that time, the transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh-QZBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh-QYxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D73416A0300" name="redefinitionContext" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" redefinedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3D734167014D">
+ <ownedComment xmi:id="_siRLRRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D73416A0300">
+ <body>References the classifier in which context this element may be redefined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siRLSRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siRLSBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D410DA72D0200" name="effect" type="_3ADC7B74022D3B9A6F4F0008" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D410DA72C023B">
+ <ownedComment xmi:id="_sia8SxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D410DA72D0200">
+ <body>Specifies an optional behavior to be performed when the transition fires.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8TxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8ThTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4162ADCB0045" name="trigger" type="_3ADC7B74022D3B9D229602A5" aggregation="composite" association="_3ADC7B74022D4162ADC70021">
+ <ownedComment xmi:id="_sikGSRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4162ADCB0045">
+ <body>Specifies the triggers that may fire the transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sikGTRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sikGTBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F8FC003E" name="redefinitionContext" isQuery="true" bodyCondition="_sflqzhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sflqyhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F8FC003E">
+ <body>The redefinition context of a transition is the nearest containing statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sflqzhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F8FC003E _3ADC7B74022D3D73416A0300">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sflqzxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sflqzRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECE80199" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F9C70261" name="isConsistentWith" isQuery="true" precondition="_tZ6x8DZ5Edqq1tCaRkgBQQ" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_sflq2BTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sflq0xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F9C70261">
+ <body>The query isConsistentWith() specifies that a redefining transition is consistent with a redefined transition provided that the redefining transition has the following relation to the redefined transition: A redefining transition redefines all properties of the corresponding redefined transition, except the source state and the trigger.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sflq2BTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F9C70261">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sflq2RTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = (redefinee.oclIsKindOf(Transition) and&#xD;&#xA; let trans: Transition = redefinee.oclAsType(Transition) in&#xD;&#xA; (source() = trans.source() and trigger() = tran.trigger())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_tZ6x8DZ5Edqq1tCaRkgBQQ" constrainedElement="_3ADC7B74022D4300F9C70261">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_tZ6x8TZ5Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sflq1hTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430C7B130177" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F9D9006D" name="containingStateMachine" isQuery="true" bodyCondition="_sfu0oxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sflq3RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F9D9006D">
+ <body>The query containingStateMachine() returns the state machine that contains the transition either directly or transitively.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfu0oxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F9D9006D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfu0pBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = container.containingStateMachine()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sfu0ohTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D327D9E410186" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D328A484303D4" name="Vertex" isAbstract="true">
+ <ownedComment xmi:id="_sfu0qRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D328A484303D4">
+ <body>A vertex is an abstraction of a node in a state machine graph. In general, it can be the source or destination of any number of transitions.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3B97E4DC009B" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3288D8C70172" name="container" type="_3ADC7B74022D3C610C150391" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3288D8C4023A">
+ <ownedComment xmi:id="_shE4iRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3288D8C70172">
+ <body>The region that contains this vertex.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shE4jRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shE4jBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D328902830028" name="outgoing" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D32890282014A">
+ <ownedComment xmi:id="_shOphRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D328902830028">
+ <body>Specifies the transitions departing from this vertex.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shOpiRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shOpiBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3289028D02BC" name="incoming" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D3289028C03D4">
+ <ownedComment xmi:id="_shXzZhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3289028D02BC">
+ <body>Specifies the transitions entering this vertex.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shXzahTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shXzaRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300FA66007D" name="containingStateMachine" isQuery="true" bodyCondition="_sfu0shTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sfu0rhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300FA66007D">
+ <body>The operation containingStateMachine() returns the state machine in which this Vertex is defined</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfu0shTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300FA66007D">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfu0sxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if not container->isEmpty()&#xA;then&#xA;-- the container is a region&#xA;container.containingStateMachine()&#xA;else if (oclIsKindOf(Pseudostate)) then&#xA;-- entry or exit point?&#xA;if (kind = #entryPoint) or (kind = #exitPoint) then&#xA;stateMachine&#xA;else if (oclIsKindOf(ConnectionPointReference)) then&#xA;state.containingStateMachine() -- no other valid cases possible&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sfu0sRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D327D9E410186" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D328A47F10064" name="Pseudostate">
+ <ownedComment xmi:id="_sfu0txTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D328A47F10064">
+ <body>A pseudostate is an abstraction that encompasses different types of transient vertices in the state machine graph.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sfu0wBTaEdqZu-3Jy1-uYg" name="initial_vertex" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sfu0vBTaEdqZu-3Jy1-uYg" annotatedElement="_sfu0wBTaEdqZu-3Jy1-uYg">
+ <body>An initial vertex can have at most one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sfu0wRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #initial) implies (self.outgoing->size &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sf4loxTaEdqZu-3Jy1-uYg" name="history_vertices" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sfu0xRTaEdqZu-3Jy1-uYg" annotatedElement="_sf4loxTaEdqZu-3Jy1-uYg">
+ <body>History vertices can have at most one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf4lpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies&#xA;(self.outgoing->size &lt;= 1)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sf4lrBTaEdqZu-3Jy1-uYg" name="join_vertex" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sf4lqBTaEdqZu-3Jy1-uYg" annotatedElement="_sf4lrBTaEdqZu-3Jy1-uYg">
+ <body>In a complete statemachine, a join vertex must have at least two incoming transitions and exactly one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf4lrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #join) implies&#xA;((self.outgoing->size = 1) and (self.incoming->size >= 2))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sf4ltRTaEdqZu-3Jy1-uYg" name="transitions_incoming" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sf4lsRTaEdqZu-3Jy1-uYg" annotatedElement="_sf4ltRTaEdqZu-3Jy1-uYg">
+ <body>All transitions incoming a join vertex must originate in different regions of an orthogonal state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf4lthTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #join) implies&#xA; self.incoming->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sf4lvhTaEdqZu-3Jy1-uYg" name="fork_vertex" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sf4luhTaEdqZu-3Jy1-uYg" annotatedElement="_sf4lvhTaEdqZu-3Jy1-uYg">
+ <body>In a complete statemachine, a fork vertex must have at least two outgoing transitions and exactly one incoming transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf4lvxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #fork) implies&#xA;((self.incoming->size = 1) and (self.outgoing->size >= 2))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sf4lxxTaEdqZu-3Jy1-uYg" name="transitions_outgoing" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sf4lwxTaEdqZu-3Jy1-uYg" annotatedElement="_sf4lxxTaEdqZu-3Jy1-uYg">
+ <body>All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sf4lyBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #fork) implies&#xA; self.outgoing->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgCWoxTaEdqZu-3Jy1-uYg" name="junction_vertex" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sf4lzBTaEdqZu-3Jy1-uYg" annotatedElement="_sgCWoxTaEdqZu-3Jy1-uYg">
+ <body>In a complete statemachine, a junction vertex must have at least one incoming and one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgCWpBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #junction) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgCWrBTaEdqZu-3Jy1-uYg" name="choice_vertex" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_sgCWqBTaEdqZu-3Jy1-uYg" annotatedElement="_sgCWrBTaEdqZu-3Jy1-uYg">
+ <body>In a complete statemachine, a choice vertex must have at least one incoming and one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgCWrRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(self.kind = #choice) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_fhQwgDavEdqq1tCaRkgBQQ" name="outgoing_from_initial" constrainedElement="_3ADC7B74022D328A47F10064">
+ <ownedComment xmi:id="_mg41EDavEdqq1tCaRkgBQQ" annotatedElement="_fhQwgDavEdqq1tCaRkgBQQ">
+ <body>The outgoing transition from and initial vertex may have a behavior, but not a trigger or a guard.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_fhQwgTavEdqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>(self.kind = #initial) implies (self.outgoing.guard->isEmpty()&#xD;&#xA; and self.outgoing.trigger->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D328A4901001E" general="_3ADC7B74022D328A484303D4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D328A480D00AA" name="kind" type="_3ADC7B74022D3B94B827009C">
+ <ownedComment xmi:id="_sgCWwxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D328A480D00AA">
+ <body>Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AVbRQGggEdqfYrlcy8iLFA" type="_3ADC7B74022D3B94B827009C" instance="_3ADC7B74022D3B94B8BB0059"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C612AB700F8" name="stateMachine" type="_3ADC7B74022D327D9E410186" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3C612AB50254">
+ <ownedComment xmi:id="_sh0fVRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C612AB700F8">
+ <body>The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh0fWRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh0fWBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D4113F0B9037D" name="state" type="_3ADC7B74022D3287F81C0136" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D4113F0B802B3">
+ <ownedComment xmi:id="_sikGQhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4113F0B9037D">
+ <body>The State that owns this pseudostate and in which it appears.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sikGRhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sikGRRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D364986DD01F4" name="FinalState">
+ <ownedComment xmi:id="_sgCWxxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D364986DD01F4">
+ <body>A special kind of state signifying that the enclosing region is completed. If the enclosing region is directly contained in a state machine and all other regions in the state machine also are completed, then it means that the entire state machine is completed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sgLgmBTaEdqZu-3Jy1-uYg" name="no_outgoing_transitions" constrainedElement="_3ADC7B74022D364986DD01F4">
+ <ownedComment xmi:id="_sgLglBTaEdqZu-3Jy1-uYg" annotatedElement="_sgLgmBTaEdqZu-3Jy1-uYg">
+ <body>A final state cannot have any outgoing transitions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgLgmRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.outgoing->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgLgoRTaEdqZu-3Jy1-uYg" name="no_regions" constrainedElement="_3ADC7B74022D364986DD01F4">
+ <ownedComment xmi:id="_sgLgnRTaEdqZu-3Jy1-uYg" annotatedElement="_sgLgoRTaEdqZu-3Jy1-uYg">
+ <body>A final state cannot have regions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgLgohTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.region->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgLgqhTaEdqZu-3Jy1-uYg" name="cannot_reference_submachine" constrainedElement="_3ADC7B74022D364986DD01F4">
+ <ownedComment xmi:id="_sgLgphTaEdqZu-3Jy1-uYg" annotatedElement="_sgLgqhTaEdqZu-3Jy1-uYg">
+ <body>A final state cannot reference a submachine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgLgqxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.submachine->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgLgsxTaEdqZu-3Jy1-uYg" name="no_entry_behavior" constrainedElement="_3ADC7B74022D364986DD01F4">
+ <ownedComment xmi:id="_sgLgrxTaEdqZu-3Jy1-uYg" annotatedElement="_sgLgsxTaEdqZu-3Jy1-uYg">
+ <body>A final state has no entry behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgLgtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.entry->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgVRkxTaEdqZu-3Jy1-uYg" name="no_exit_behavior" constrainedElement="_3ADC7B74022D364986DD01F4">
+ <ownedComment xmi:id="_sgLguBTaEdqZu-3Jy1-uYg" annotatedElement="_sgVRkxTaEdqZu-3Jy1-uYg">
+ <body>A final state has no exit behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgVRlBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.exit->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgVRnBTaEdqZu-3Jy1-uYg" name="no_state_behavior" constrainedElement="_3ADC7B74022D364986DD01F4">
+ <ownedComment xmi:id="_sgVRmBTaEdqZu-3Jy1-uYg" annotatedElement="_sgVRnBTaEdqZu-3Jy1-uYg">
+ <body>A final state has no state (doActivity) behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgVRnRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.doActivity->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C6117C0010B" general="_3ADC7B74022D3287F81C0136"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B8A548E03CC" name="ConnectionPointReference">
+ <ownedComment xmi:id="_sgVRoRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8A548E03CC">
+ <body>A connection point reference represents a usage (as part of a submachine state) of an entry/exit point defined in the statemachine reference by the submachine state.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sgVRqhTaEdqZu-3Jy1-uYg" name="entry_pseudostates" constrainedElement="_3ADC7B74022D3B8A548E03CC">
+ <ownedComment xmi:id="_sgVRphTaEdqZu-3Jy1-uYg" annotatedElement="_sgVRqhTaEdqZu-3Jy1-uYg">
+ <body>The entry Pseudostates must be Pseudostates with kind entryPoint.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgVRqxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgVRsxTaEdqZu-3Jy1-uYg" name="exit_pseudostates" constrainedElement="_3ADC7B74022D3B8A548E03CC">
+ <ownedComment xmi:id="_sgVRrxTaEdqZu-3Jy1-uYg" annotatedElement="_sgVRsxTaEdqZu-3Jy1-uYg">
+ <body>The exit Pseudostates must be Pseudostates with kind exitPoint.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgVRtBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3B8A54F70034" general="_3ADC7B74022D328A484303D4"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B8A552D0276" name="entry" type="_3ADC7B74022D328A47F10064" association="_3ADC7B74022D3B8A552C03A1">
+ <ownedComment xmi:id="_shhkYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8A552D0276">
+ <body>The entryPoint kind pseudo states corresponding to this connection point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shhkZhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shhkZRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3B8A553B0186" name="state" type="_3ADC7B74022D3287F81C0136" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3B8A553A033D">
+ <ownedComment xmi:id="_shhkbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B8A553B0186">
+ <body>The State in which the connection point refreshens are defined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shhkcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shhkbxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BC3E1E200DA" name="exit" type="_3ADC7B74022D328A47F10064" association="_3ADC7B74022D3BC3E1E00023">
+ <ownedComment xmi:id="_shrVaRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BC3E1E200DA">
+ <body>The exitPoints kind pseudo states corresponding to this connection point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shrVbRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shrVbBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C610C150391" name="Region">
+ <ownedComment xmi:id="_sgoMjxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C610C150391">
+ <body>A region is an orthogonal part of either a composite state or a state machine. It contains states and transitions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sgoMmRTaEdqZu-3Jy1-uYg" name="initial_vertex" constrainedElement="_3ADC7B74022D3C610C150391">
+ <ownedComment xmi:id="_sgoMlRTaEdqZu-3Jy1-uYg" annotatedElement="_sgoMmRTaEdqZu-3Jy1-uYg">
+ <body>A region can have at most one initial vertex</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgoMmhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #initial)->size() &lt;= 1&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgx9gxTaEdqZu-3Jy1-uYg" name="deep_history_vertex" constrainedElement="_3ADC7B74022D3C610C150391">
+ <ownedComment xmi:id="_sgoMnhTaEdqZu-3Jy1-uYg" annotatedElement="_sgx9gxTaEdqZu-3Jy1-uYg">
+ <body>A region can have at most one deep history vertex</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgx9hBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #deepHistory)->size() &lt;= 1&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgx9jBTaEdqZu-3Jy1-uYg" name="shallow_history_vertex" constrainedElement="_3ADC7B74022D3C610C150391">
+ <ownedComment xmi:id="_sgx9iBTaEdqZu-3Jy1-uYg" annotatedElement="_sgx9jBTaEdqZu-3Jy1-uYg">
+ <body>A region can have at most one shallow history vertex</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgx9jRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.subvertex->select(v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #shallowHistory)->size() &lt;= 1&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sgx9lRTaEdqZu-3Jy1-uYg" name="owned" constrainedElement="_3ADC7B74022D3C610C150391">
+ <ownedComment xmi:id="_sgx9kRTaEdqZu-3Jy1-uYg" annotatedElement="_sgx9lRTaEdqZu-3Jy1-uYg">
+ <body>If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgx9lhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(stateMachine->notEmpty() implies state->isEmpty()) and (state->notEmpty() implies stateMachine->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3CC52D3400C1" general="_3ADC7B74022D3CAB007101D7"/>
+ <generalization xmi:id="_3ADC7B74022D3D64948702B4" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3288D8C7021C" name="subvertex" type="_3ADC7B74022D328A484303D4" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3288D8C4023A">
+ <ownedComment xmi:id="_shE4jxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3288D8C7021C">
+ <body>The set of vertices that are owned by this region.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shOpcxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shOpchTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3288D72700C9" name="transition" type="_3ADC7B74022D3288D70A0212" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3288D725037A">
+ <ownedComment xmi:id="_shOpfhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3288D72700C9">
+ <body>The set of transitions owned by the region. Note that internal transitions are owned by a region, but applies to the source state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shOpghTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shOpgRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C610C580257" name="stateMachine" type="_3ADC7B74022D327D9E410186" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3C610C570378">
+ <ownedComment xmi:id="_shrVeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C610C580257">
+ <body>The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shrVfRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shrVfBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C612B290297" name="state" type="_3ADC7B74022D3287F81C0136" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3C612B280078">
+ <ownedComment xmi:id="_sh0fYhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C612B290297">
+ <body>The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh0fZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh0fZRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CC52B6301A9" name="extendedRegion" type="_3ADC7B74022D3C610C150391" subsettedProperty="_3ADC7B74022D3E026DFA035B" association="_3ADC7B74022D3CC52B600046">
+ <ownedComment xmi:id="_sh0fbBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC52B6301A9">
+ <body>The region of which this region is an extension.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh-QUxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh-QUhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D733F2200E4" name="redefinitionContext" type="_3ADC7B74022D3CAAECE80199" isReadOnly="true" isDerived="true" redefinedProperty="_3ADC7B74022D3E026E2C0064" association="_3ADC7B74022D3D733F1F0252">
+ <ownedComment xmi:id="_sh-QahTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D733F2200E4">
+ <body>References the classifier in which context this element may be redefined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siHaQRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siHaQBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F35D02DE" name="redefinitionContext" isQuery="true" bodyCondition="_sgx9nhTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sgx9mhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F35D02DE">
+ <body>The redefinition context of a region is the nearest containing statemachine</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sgx9nhTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F35D02DE _3ADC7B74022D3D733F2200E4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgx9nxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sgx9nRTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3CAAECE80199" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F3AA01D4" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD5D00DA" bodyCondition="_sgx9pxTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sgx9oxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F3AA01D4">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a region are properly related to the redefinition contexts of the specified region to allow this element to redefine the other. The containing statemachine/state of a redefining region must redefine the containing statemachine/state of the redefined region.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sgx9pxTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F3AA01D4">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sgx9qBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sgx9phTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_BpdaoFd6EdqYibj4xL6Cag" name="redefined" type="_3ADC7B74022D3C610C150391" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F3BD001F" name="isConsistentWith" isQuery="true" redefinedOperation="_3ADC7B74022D4300DD4100CB" bodyCondition="_sg7HdBTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sgx9rBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F3BD001F">
+ <body>The query isConsistentWith() specifies that a redefining region is consistent with a redefined region provided that the redefining region is an extension of the redefined region, i.e. it adds vertices and transitions and it redefines states and transitions of the redefined region.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sg7HdBTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F3BD001F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sg7HdRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sg7HchTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3ADC7B74022D430C755203C0" name="redefinee" type="_3ADC7B74022D3CAB007101D7"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3ADC7B74022D4300F3CF001F" name="containingStateMachine" isQuery="true" bodyCondition="_sg7HfRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sg7HeRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300F3CF001F">
+ <body>The operation containingStateMachine() returns the sate machine in which this Region is defined</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sg7HfRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300F3CF001F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sg7HfhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if stateMachine->isEmpty() &#xA;then&#xA;state.containingStateMachine()&#xA;else&#xA;stateMachine&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sg7HfBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D327D9E410186" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D415DB2F700F6" name="TimeEvent">
+ <ownedComment xmi:id="_shE4exTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D415DB2F700F6">
+ <body>A time event can be defined relative to entering the current state of the executing state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_shE4gxTaEdqZu-3Jy1-uYg" name="starting_time" constrainedElement="_3ADC7B74022D415DB2F700F6">
+ <ownedComment xmi:id="_shE4fxTaEdqZu-3Jy1-uYg" annotatedElement="_shE4gxTaEdqZu-3Jy1-uYg">
+ <body>The starting time for a relative time event may only be omitted for a time event that is the trigger of a state machine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_shE4hBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3B94B827009C" name="PseudostateKind">
+ <ownedComment xmi:id="_sgVRuBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B827009C">
+ <body>PseudostateKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B8BB0059" name="initial">
+ <ownedComment xmi:id="_sgebgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B8BB0059">
+ <body>An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B8D50273" name="deepHistory">
+ <ownedComment xmi:id="_sgebhxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B8D50273">
+ <body>DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B8F00376" name="shallowHistory">
+ <ownedComment xmi:id="_sgebixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B8F00376">
+ <body>ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B90D0292" name="join">
+ <ownedComment xmi:id="_sgebjxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B90D0292">
+ <body>Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B91D03C1" name="fork">
+ <ownedComment xmi:id="_sgebkxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B91D03C1">
+ <body>Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices&#xD;
+(i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B9320259" name="junction">
+ <ownedComment xmi:id="_sgeblxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B9320259">
+ <body>Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below).</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B95A03D3" name="choice">
+ <ownedComment xmi:id="_sgebmxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B95A03D3">
+ <body>Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above).</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3B94B86600F7" name="entryPoint">
+ <ownedComment xmi:id="_sgoMgxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B94B86600F7">
+ <body>An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3DD3980A01C6" name="exitPoint">
+ <ownedComment xmi:id="_sgoMhxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3DD3980A01C6">
+ <body>An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3D073F2E02EC" name="terminate">
+ <ownedComment xmi:id="_sgoMixTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D073F2E02EC">
+ <body>Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_3ADC7B74022D3E5B99180230" name="TransitionKind">
+ <ownedComment xmi:id="_sg7HghTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5B99180230">
+ <body>TransitionKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_SCBXQDZ6Edqq1tCaRkgBQQ" name="state_is_local" constrainedElement="_3ADC7B74022D3E5B99180230">
+ <ownedComment xmi:id="_hy09kDZ6Edqq1tCaRkgBQQ" annotatedElement="_SCBXQDZ6Edqq1tCaRkgBQQ">
+ <body>The source state of a transition with transition kind local must be a composite state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_SCBXQTZ6Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>kind=#local implies owner.source.isComposite</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_jN3_QDZ6Edqq1tCaRkgBQQ" name="state_is_external" constrainedElement="_3ADC7B74022D3E5B99180230">
+ <ownedComment xmi:id="_sC7UYDZ6Edqq1tCaRkgBQQ" annotatedElement="_jN3_QDZ6Edqq1tCaRkgBQQ">
+ <body>The source state of a transition with transition kind external must be a composite state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_jN3_QTZ6Edqq1tCaRkgBQQ">
+ <language>OCL</language>
+ <body>kind=#external implies owner.source.isComposite</body>
+ </specification>
+ </ownedRule>
+ <ownedLiteral xmi:id="_3ADC7B74022D3E5B997B03E1" name="internal">
+ <ownedComment xmi:id="_sg7HmBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5B997B03E1">
+ <body>Implies that the transition, if triggered, occurs without exiting or entering the source state. Thus, it does not cause a state change. This means that the entry or exit condition of the source state will not be invoked. An internal transition can be taken even if the state machine is in one or more regions nested within this state.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3E5B998602F7" name="local">
+ <ownedComment xmi:id="_shE4cxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5B998602F7">
+ <body>Implies that the transition, if triggered, will not exit the composite (source) state, but it will apply to any state within the composite state, and these will be exited and entered.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_3ADC7B74022D3E5B998C03B4" name="external">
+ <ownedComment xmi:id="_shE4dxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3E5B998C03B4">
+ <body>Implies that the transition, if triggered, will exit the composite (source) state.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3288D8C4023A" name="A_container_subvertex" memberEnd="_3ADC7B74022D3288D8C70172 _3ADC7B74022D3288D8C7021C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3288D725037A" name="A_container_transition" memberEnd="_3ADC7B74022D3288D72700C8 _3ADC7B74022D3288D72700C9"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D32890282014A" name="A_outgoing_source" memberEnd="_3ADC7B74022D328902830028 _3ADC7B74022D3289028300D2"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3289028C03D4" name="A_incoming_target" memberEnd="_3ADC7B74022D3289028D02BC _3ADC7B74022D3289028D035C"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3403125E0140" name="A_submachineState_submachine" memberEnd="_3ADC7B74022D3403125E03A2 _3ADC7B74022D3403125E03A3"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B8A552C03A1" name="A_entry_connectionPointReference" memberEnd="_3ADC7B74022D3B8A552D0276 _3ADC7B74022D3B8A552E00BF">
+ <ownedEnd xmi:id="_3ADC7B74022D3B8A552E00BF" type="_3ADC7B74022D3B8A548E03CC" association="_3ADC7B74022D3B8A552C03A1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shhkaRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shhkaBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B8A553A033D" name="A_state_connection" memberEnd="_3ADC7B74022D3B8A553B0186 _3ADC7B74022D3B8A553B019A"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9CACBE0360" name="A_redefinedState_state" memberEnd="_3ADC7B74022D3B9CACBF03D9 _3ADC7B74022D3B9CACBF03E3">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9CACBF03E3" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D3B9CACBE0360">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shhkgBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shhkfxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3B9CACD5034F" name="A_redefinedTransition_transition" memberEnd="_3ADC7B74022D3B9CACD701E9 _3ADC7B74022D3B9CACD701F3">
+ <ownedEnd xmi:id="_3ADC7B74022D3B9CACD701F3" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D3B9CACD5034F">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shrVZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shrVZRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BC3E1E00023" name="A_exit_connectionPointReference" memberEnd="_3ADC7B74022D3BC3E1E200DA _3ADC7B74022D3BC3E1E200E4">
+ <ownedEnd xmi:id="_3ADC7B74022D3BC3E1E200E4" type="_3ADC7B74022D3B8A548E03CC" association="_3ADC7B74022D3BC3E1E00023">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_shrVcBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_shrVbxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C610C570378" name="A_region_stateMachine" memberEnd="_3ADC7B74022D3C610C58024D _3ADC7B74022D3C610C580257"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C612AB50254" name="A_connectionPoint_stateMachine" memberEnd="_3ADC7B74022D3C612AB700EE _3ADC7B74022D3C612AB700F8"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C612B280078" name="A_region_state" memberEnd="_3ADC7B74022D3C612B29028D _3ADC7B74022D3C612B290297"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC52B600046" name="A_region_extendedRegion" memberEnd="_3ADC7B74022D3CC52B63019F _3ADC7B74022D3CC52B6301A9">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC52B63019F" type="_3ADC7B74022D3C610C150391" association="_3ADC7B74022D3CC52B600046">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh0fahTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh0faRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CC52E2702F1" name="A_stateMachine_extendedStateMachine" memberEnd="_3ADC7B74022D3CC52E290182 _3ADC7B74022D3CC52E2903A8">
+ <ownedEnd xmi:id="_3ADC7B74022D3CC52E290182" type="_3ADC7B74022D327D9E410186" association="_3ADC7B74022D3CC52E2702F1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh-QVxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh-QVhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CE2B46901C7" name="A_guard_transition" memberEnd="_3ADC7B74022D3CE2B46A02E0 _3ADC7B74022D3CE2B46A02FE">
+ <ownedEnd xmi:id="_3ADC7B74022D3CE2B46A02FE" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D3CE2B46901C7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sh-QZxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sh-QZhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D733F1F0252" name="A_redefinitionContext_region" memberEnd="_3ADC7B74022D3D733F2200E4 _3ADC7B74022D3D733F2200F8">
+ <ownedEnd xmi:id="_3ADC7B74022D3D733F2200F8" type="_3ADC7B74022D3C610C150391" association="_3ADC7B74022D3D733F1F0252">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siHaRhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siHaRRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D73412B0151" name="A_state_redefinitionContext" memberEnd="_3ADC7B74022D3D73412C02C5 _3ADC7B74022D3D73412C0329" isDerived="true">
+ <ownedEnd xmi:id="_3ADC7B74022D3D73412C02C5" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D3D73412B0151">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siHaShTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siHaSRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D734167014D" name="A_transition_redefinitionContext" memberEnd="_3ADC7B74022D3D73416A02F6 _3ADC7B74022D3D73416A0300">
+ <ownedEnd xmi:id="_3ADC7B74022D3D73416A02F6" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D3D734167014D">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_siRLQxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siRLQhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3DFF235701F7" name="A_stateInvariant_owningState" memberEnd="_3ADC7B74022D3DFF235A01E8 _3ADC7B74022D3DFF235A030A">
+ <ownedEnd xmi:id="_3ADC7B74022D3DFF235A030A" name="owningState" type="_3ADC7B74022D3287F81C0136" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3DFF235701F7">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8SBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8RxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410DA72C023B" name="A_effect_transition" memberEnd="_3ADC7B74022D410DA72D0200 _3ADC7B74022D410DA72D0214">
+ <ownedEnd xmi:id="_3ADC7B74022D410DA72D0214" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D410DA72C023B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8UhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8URTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410DA77F0006" name="A_entry_state" memberEnd="_3ADC7B74022D410DA7800057 _3ADC7B74022D410DA780006B">
+ <ownedEnd xmi:id="_3ADC7B74022D410DA780006B" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D410DA77F0006">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8XBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8WxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410DA7C801C1" name="A_exit_state" memberEnd="_3ADC7B74022D410DA7C90226 _3ADC7B74022D410DA7C9023A">
+ <ownedEnd xmi:id="_3ADC7B74022D410DA7C9023A" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D410DA7C801C1">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia8ZhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sia8ZRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D410DA80A0082" name="A_doActivity_state" memberEnd="_3ADC7B74022D410DA80B00FC _3ADC7B74022D410DA80B0110">
+ <ownedEnd xmi:id="_3ADC7B74022D410DA80B0110" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D410DA80A0082">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sikGORTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sikGOBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4113F0B802B3" name="A_connectionPoint_state" memberEnd="_3ADC7B74022D4113F0B90373 _3ADC7B74022D4113F0B9037D"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4162ADC70021" name="A_trigger_transition" memberEnd="_3ADC7B74022D4162ADCB0045 _3ADC7B74022D4162ADCB004F">
+ <ownedEnd xmi:id="_3ADC7B74022D4162ADCB004F" type="_3ADC7B74022D3288D70A0212" association="_3ADC7B74022D4162ADC70021">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sikGUBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sikGTxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D4162AE0E0361" name="A_deferrableTrigger_state" memberEnd="_3ADC7B74022D4162AE0F02CD _3ADC7B74022D4162AE0F02D7">
+ <ownedEnd xmi:id="_3ADC7B74022D4162AE0F02D7" type="_3ADC7B74022D3287F81C0136" association="_3ADC7B74022D4162AE0E0361">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sit3NhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sit3NRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D3D0266EE027C" name="ProtocolStateMachines">
+ <packageImport xmi:id="_3ADC7B74022D3D4DC7FB01D2" importedPackage="_3ADC7B74022D3C9FD9B900CF"/>
+ <packageMerge xmi:id="_HPusYRTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D334A99B00208"/>
+ <packageMerge xmi:id="_HPusYhTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3D0259DF00A8"/>
+ <packageMerge xmi:id="_HPusYxTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D3BAF164701DA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3BCAE87800C1" name="ProtocolConformance">
+ <ownedComment xmi:id="_sjAyKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCAE87800C1">
+ <body>Protocol state machines can be redefined into more specific protocol state machines, or into behavioral state machines. Protocol conformance declares that the specific protocol state machine specifies a protocol that conforms to the general state machine one, or that the specific behavioral state machine abide by the protocol of the general protocol state machine.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3E1D396902DC" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BCAE89F00AB" name="specificMachine" type="_3ADC7B74022D3D0267EC02A9" subsettedProperty="_3ADC7B74022D3CAAEEF70165 _3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3BCAE89E015B">
+ <ownedComment xmi:id="_sjdeJBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCAE89F00AB">
+ <body>Specifies the state machine which conforms to the general state machine.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPExTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPEhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BCAE8C40002" name="generalMachine" type="_3ADC7B74022D3D0267EC02A9" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3BCAE8C30137">
+ <ownedComment xmi:id="_sjnPNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCAE8C40002">
+ <body>Specifies the protocol state machine to which the specific state machine conforms.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjwZAxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjwZAhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC532AD03D3" name="Interface">
+ <ownedComment xmi:id="_sjAyLxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC532AD03D3">
+ <body>Since an interface specifies conformance characteristics, it does not own detailed behavior specifications. Instead, interfaces may own a protocol state machine that specifies event sequences and pre/post conditions for the operations and receptions described by the interface.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0DD2D01CA" general="_3ADC7B74022D3CAAECE80199"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD1D7440143" name="protocol" type="_3ADC7B74022D3D0267EC02A9" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3BD1D743017E">
+ <ownedComment xmi:id="_sjnPKhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD1D7440143">
+ <body>References a protocol state machine specifying the legal sequences of the invocation of the behavioral features described in the interface.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPLhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPLRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3CC5320802EF" name="Port">
+ <ownedComment xmi:id="_sjAyNBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CC5320802EF">
+ <body>A port has an associated protocol state machine.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BD1D6E602CE" name="protocol" type="_3ADC7B74022D3D0267EC02A9" association="_3ADC7B74022D3BD1D6E503DB">
+ <ownedComment xmi:id="_sjnPFhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BD1D6E602CE">
+ <body>References an optional protocol state machine which describes valid interactions at this interaction point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPGhTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPGRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3B208BE80384" name="ProtocolTransition">
+ <ownedComment xmi:id="_sjKjIRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3B208BE80384">
+ <body>A protocol transition specifies a legal transition for an operation. Transitions of protocol state machines have the following information: a pre condition (guard), on trigger, and a post condition. Every protocol transition is associated to zero or one operation (referred BehavioralFeature) that belongs to the context classifier of the protocol state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sjKjKhTaEdqZu-3Jy1-uYg" name="belongs_to_psm" constrainedElement="_3ADC7B74022D3B208BE80384">
+ <ownedComment xmi:id="_sjKjJhTaEdqZu-3Jy1-uYg" annotatedElement="_sjKjKhTaEdqZu-3Jy1-uYg">
+ <body>A protocol transition always belongs to a protocol state machine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjKjKxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>container.belongsToPSM()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sjKjMxTaEdqZu-3Jy1-uYg" name="associated_actions" constrainedElement="_3ADC7B74022D3B208BE80384">
+ <ownedComment xmi:id="_sjKjLxTaEdqZu-3Jy1-uYg" annotatedElement="_sjKjMxTaEdqZu-3Jy1-uYg">
+ <body>A protocol transition never has associated actions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjKjNBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>effect->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sjKjPBTaEdqZu-3Jy1-uYg" name="refers_to_operation" constrainedElement="_3ADC7B74022D3B208BE80384">
+ <ownedComment xmi:id="_sjKjOBTaEdqZu-3Jy1-uYg" annotatedElement="_sjKjPBTaEdqZu-3Jy1-uYg">
+ <body>If a protocol transition refers to an operation (i. e. has a call trigger corresponding to an operation), then that operation should apply to the context classifier of the state machine of the protocol transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjKjPRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E11ED8200A0" general="_3ADC7B74022D3288D70A0212"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3CE2B1F701C6" name="postCondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF5A9017E" association="_3ADC7B74022D3CE2B1F60356">
+ <ownedComment xmi:id="_sjnPIBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3CE2B1F701C6">
+ <body>Specifies the post condition of the transition which is the condition that should be obtained once the transition is triggered. This post condition is part of the post condition of the operation connected to the transition.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPJBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPIxTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D07F16101E5" name="referred" type="_3ADC7B74022D3CAB1D710164" isReadOnly="true" isDerived="true" association="_3ADC7B74022D3D07F161000E">
+ <ownedComment xmi:id="_sjwZCRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D07F16101E5">
+ <body>This association refers to the associated operation. It is derived from the operation of the call trigger when applicable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjwZDRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjwZDBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D07F1EE03D3" name="preCondition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CE2B46A02E0" association="_3ADC7B74022D3D07F1EE024C">
+ <ownedComment xmi:id="_sjwZFRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D07F1EE03D3">
+ <body>Specifies the precondition of the transition. It specifies the condition that should be verified before triggering the transition. This guard condition added to the source state will be evaluated as part of the precondition of the operation referred by the transition if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjwZGRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjwZGBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D0267EC02A9" name="ProtocolStateMachine">
+ <ownedComment xmi:id="_sjTtERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D0267EC02A9">
+ <body>A protocol state machine is always defined in the context of a classifier. It specifies which operations of the classifier can be called in which state and under which condition, thus specifying the allowed call sequences on the classifier's operations. A protocol state machine presents the possible and permitted transitions on the instances of its context classifier, together with the operations which carry the transitions. In this manner, an instance lifecycle can be created for a classifier, by specifying the order in which the operations can be activated and the states through which an instance progresses during its existence.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sjTtGhTaEdqZu-3Jy1-uYg" name="classifier_context" constrainedElement="_3ADC7B74022D3D0267EC02A9">
+ <ownedComment xmi:id="_sjTtFhTaEdqZu-3Jy1-uYg" annotatedElement="_sjTtGhTaEdqZu-3Jy1-uYg">
+ <body>A protocol state machine must only have a classifier context, not a behavioral feature context.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjTtGxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>(not context->isEmpty( )) and specification->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sjTtIxTaEdqZu-3Jy1-uYg" name="protocol_transitions" constrainedElement="_3ADC7B74022D3D0267EC02A9">
+ <ownedComment xmi:id="_sjTtHxTaEdqZu-3Jy1-uYg" annotatedElement="_sjTtIxTaEdqZu-3Jy1-uYg">
+ <body>All transitions of a protocol state machine must be protocol transitions. (transitions as extended by the ProtocolStateMachines package)</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjTtJBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sjTtLBTaEdqZu-3Jy1-uYg" name="entry_exit_do" constrainedElement="_3ADC7B74022D3D0267EC02A9">
+ <ownedComment xmi:id="_sjTtKBTaEdqZu-3Jy1-uYg" annotatedElement="_sjTtLBTaEdqZu-3Jy1-uYg">
+ <body>The states of a protocol state machine cannot have entry, exit, or do activity actions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjTtLRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty())))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sjTtNRTaEdqZu-3Jy1-uYg" name="deep_or_shallow_history" constrainedElement="_3ADC7B74022D3D0267EC02A9">
+ <ownedComment xmi:id="_sjTtMRTaEdqZu-3Jy1-uYg" annotatedElement="_sjTtNRTaEdqZu-3Jy1-uYg">
+ <body>Protocol state machines cannot have deep or shallow history pseudostates.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjTtNhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies&#xA;((v.kind &lt;> #deepHistory) and (v.kind &lt;> #shallowHistory)))))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sjdeExTaEdqZu-3Jy1-uYg" name="ports_connected" constrainedElement="_3ADC7B74022D3D0267EC02A9">
+ <ownedComment xmi:id="_sjTtOhTaEdqZu-3Jy1-uYg" annotatedElement="_sjdeExTaEdqZu-3Jy1-uYg">
+ <body>If two ports are connected, then the protocol state machine of the required interface (if defined) must be conformant to the protocol state machine of the provided interface (if defined).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjdeFBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3E1D4A0201C3" general="_3ADC7B74022D327D9E410186"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3BCAE89F00A9" name="conformance" type="_3ADC7B74022D3BCAE87800C1" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3BCAE89E015B">
+ <ownedComment xmi:id="_sjdeHhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3BCAE89F00A9">
+ <body>Conformance between protocol state machines.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjdeIhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjdeIRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D041705032D" name="State">
+ <ownedComment xmi:id="_sjdeGBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D041705032D">
+ <body>The states of protocol state machines are exposed to the users of their context classifiers. A protocol state represents an exposed stable situation of its context classifier: when an instance of the classifier is not processing any operation, users of this instance can always know its state configuration.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0DD0B03DE" general="_3ADC7B74022D3CAAECC502DA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_bqc5EWapEdqWbfyV2nwYyg" name="Region">
+ <ownedOperation xmi:id="_3ADC7B74022D4300FBA7000F" name="belongsToPSM" isQuery="true" bodyCondition="_sjKjRRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sjKjQRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4300FBA7000F">
+ <body>The operation belongsToPSM () checks if the region belongs to a protocol state machine</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sjKjRRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4300FBA7000F">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sjKjRhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = if not stateMachine->isEmpty() then&#xA;oclIsTypeOf(ProtocolStateMachine)&#xA;else if not state->isEmpty() then&#xA;state.container.belongsToPSM ()&#xA;else false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sjKjRBTaEdqZu-3Jy1-uYg" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Infrastructure.uml#_3ADC7B74022D3CA010AC0090"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BCAE89E015B" name="A_conformance_specificMachine" memberEnd="_3ADC7B74022D3BCAE89F00A9 _3ADC7B74022D3BCAE89F00AB"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD1D6E503DB" name="A_protocol_port" memberEnd="_3ADC7B74022D3BD1D6E602CE _3ADC7B74022D3BD1D6E602F6">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD1D6E602F6" type="_3ADC7B74022D3CC5320802EF" association="_3ADC7B74022D3BD1D6E503DB">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPHRTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPHBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3CE2B1F60356" name="A_postCondition_owningTransition" memberEnd="_3ADC7B74022D3CE2B1F701C6 _3ADC7B74022D3CE2B1F701DA">
+ <ownedEnd xmi:id="_3ADC7B74022D3CE2B1F701DA" name="owningTransition" type="_3ADC7B74022D3B208BE80384" subsettedProperty="_3ADC7B74022D3CAAEEA60189" association="_3ADC7B74022D3CE2B1F60356">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPJxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPJhTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BD1D743017E" name="A_protocol_interface" memberEnd="_3ADC7B74022D3BD1D7440143 _3ADC7B74022D3BD1D744016B">
+ <ownedEnd xmi:id="_3ADC7B74022D3BD1D744016B" name="interface" type="_3ADC7B74022D3CC532AD03D3" subsettedProperty="_3ADC7B74022D3CAAF0B00232" association="_3ADC7B74022D3BD1D743017E">
+ <ownedComment xmi:id="_qTiHoDasEdqq1tCaRkgBQQ" annotatedElement="_3ADC7B74022D3BD1D744016B">
+ <body>Specifies the namespace in which the protocol state machine is defined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjnPMRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjnPMBTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3BCAE8C30137" name="A_generalMachine_protocolConformance" memberEnd="_3ADC7B74022D3BCAE8C40002 _3ADC7B74022D3BCAE8C40016">
+ <ownedEnd xmi:id="_3ADC7B74022D3BCAE8C40016" type="_3ADC7B74022D3BCAE87800C1" association="_3ADC7B74022D3BCAE8C30137">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjwZBhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjwZBRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D07F161000E" name="A_referred_protocolTransition" memberEnd="_3ADC7B74022D3D07F16101E5 _3ADC7B74022D3D07F16101EF">
+ <ownedEnd xmi:id="_3ADC7B74022D3D07F16101EF" type="_3ADC7B74022D3B208BE80384" association="_3ADC7B74022D3D07F161000E">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjwZEhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjwZERTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D07F1EE024C" name="A_preCondition_protocolTransition" memberEnd="_3ADC7B74022D3D07F1EE03D3 _3ADC7B74022D3D07F1EF0013">
+ <ownedEnd xmi:id="_3ADC7B74022D3D07F1EF0013" type="_3ADC7B74022D3B208BE80384" association="_3ADC7B74022D3D07F1EE024C">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sjwZHBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sjwZGxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3ADC7B74022D336185C00118" name="UseCases">
+ <packageMerge xmi:id="_HISAkBTbEdqZu-3Jy1-uYg" mergedPackage="_3ADC7B74022D335C122001A4"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D33656C0B017C" name="Actor">
+ <ownedComment xmi:id="_sdDUGRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D33656C0B017C">
+ <body>An actor specifies a role played by a user or any other system that interacts with the subject.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sdDUIhTaEdqZu-3Jy1-uYg" name="associations" constrainedElement="_3ADC7B74022D33656C0B017C">
+ <ownedComment xmi:id="_sdDUHhTaEdqZu-3Jy1-uYg" annotatedElement="_sdDUIhTaEdqZu-3Jy1-uYg">
+ <body>An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdDUIxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.ownedAttribute->forAll ( a |&#xA;(a.association->notEmpty()) implies&#xA;((a.association.memberEnd.size() = 2) and&#xA;(a.opposite.class.oclIsKindOf(UseCase) or&#xA;(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sdNFFBTaEdqZu-3Jy1-uYg" name="must_have_name" constrainedElement="_3ADC7B74022D33656C0B017C">
+ <ownedComment xmi:id="_sdNFEBTaEdqZu-3Jy1-uYg" annotatedElement="_sdNFFBTaEdqZu-3Jy1-uYg">
+ <body>An actor must have a name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdNFFRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>name->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_n25d8DcsEdqq1tCaRkgBQQ" general="_3ADC7B74022D3CC0D5FF02D3"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D35FDD683021C" name="Extend">
+ <ownedComment xmi:id="_sdNFGRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D35FDD683021C">
+ <body>A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sdNFIxTaEdqZu-3Jy1-uYg" name="extension_points" constrainedElement="_3ADC7B74022D35FDD683021C">
+ <ownedComment xmi:id="_sdNFHxTaEdqZu-3Jy1-uYg" annotatedElement="_sdNFIxTaEdqZu-3Jy1-uYg">
+ <body>The extension points referenced by the extend relationship must belong to the use case that is being extended.&#xD;
+&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdNFJBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3634CF270366" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <generalization xmi:id="_3ADC7B74022D4011A9F50271" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C1F061F0023" name="extendedCase" type="_3ADC7B74022D3C1F02440042" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3C1F061E01EE">
+ <ownedComment xmi:id="_sdpxGxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F061F0023">
+ <body>References the use case that is being extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdpxHxTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdpxHhTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C1F0623025A" name="extension" type="_3ADC7B74022D3C1F02440042" subsettedProperty="_3ADC7B74022D3CAAEEF70165" association="_3ADC7B74022D3C1F06220370">
+ <ownedComment xmi:id="_sdy68hTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F0623025A">
+ <body>References the use case that represents the extension and owns the extend relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdy69hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdy69RTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C8C9F020006" name="condition" type="_3ADC7B74022D3CAAED67023C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAEEA60187" association="_3ADC7B74022D3C8C9F00027A">
+ <ownedComment xmi:id="_sdy7DBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C8C9F020006">
+ <body>References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8r8xTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8r8hTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D289638024F" name="extensionLocation" type="_3ADC7B74022D3C8C9E4B0284" isOrdered="true" association="_3ADC7B74022D3D289635029B">
+ <ownedComment xmi:id="_sd8r-RTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D289638024F">
+ <body>An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.)&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8r_RTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8r_BTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D35FDD6900154" name="Include">
+ <ownedComment xmi:id="_sdNFKBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D35FDD6900154">
+ <body>An include relationship defines that a use case contains the behavior defined in another use case.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D3634CF2B02C6" general="_3ADC7B74022D3CAAEC1902BE"/>
+ <generalization xmi:id="_3ADC7B74022D4011A9DD033F" general="_3ADC7B74022D3CAAECB901B0"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C1F05C9008D" name="includingCase" type="_3ADC7B74022D3C1F02440042" subsettedProperty="_3ADC7B74022D3CAAEEF70165" association="_3ADC7B74022D3C1F05C801AE">
+ <ownedComment xmi:id="_sdpxBBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F05C9008D">
+ <body>References the use case which will include the addition and owns the include relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdpxCBTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdpxBxTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C1F05E000EB" name="addition" type="_3ADC7B74022D3C1F02440042" subsettedProperty="_3ADC7B74022D3CAAEF470200" association="_3ADC7B74022D3C1F05DF0252">
+ <ownedComment xmi:id="_sdpxERTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F05E000EB">
+ <body>References the use case that is to be included.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdpxFRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdpxFBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C1F02440042" name="UseCase">
+ <ownedComment xmi:id="_sdNFLhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F02440042">
+ <body>A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sdWPCBTaEdqZu-3Jy1-uYg" name="must_have_name" constrainedElement="_3ADC7B74022D3C1F02440042">
+ <ownedComment xmi:id="_sdWPBBTaEdqZu-3Jy1-uYg" annotatedElement="_sdWPCBTaEdqZu-3Jy1-uYg">
+ <body>A UseCase must have a name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdWPCRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.name -> notEmpty ()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sdWPERTaEdqZu-3Jy1-uYg" name="binary_associations" constrainedElement="_3ADC7B74022D3C1F02440042">
+ <ownedComment xmi:id="_sdWPDRTaEdqZu-3Jy1-uYg" annotatedElement="_sdWPERTaEdqZu-3Jy1-uYg">
+ <body>UseCases can only be involved in binary Associations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdWPEhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sdWPGhTaEdqZu-3Jy1-uYg" name="no_association_to_use_case" constrainedElement="_3ADC7B74022D3C1F02440042">
+ <ownedComment xmi:id="_sdWPFhTaEdqZu-3Jy1-uYg" annotatedElement="_sdWPGhTaEdqZu-3Jy1-uYg">
+ <body>UseCases can not have Associations to UseCases specifying the same subject.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdWPGxTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_sdgABBTaEdqZu-3Jy1-uYg" name="cannot_include_self" constrainedElement="_3ADC7B74022D3C1F02440042">
+ <ownedComment xmi:id="_sdgAABTaEdqZu-3Jy1-uYg" annotatedElement="_sdgABBTaEdqZu-3Jy1-uYg">
+ <body>A use case cannot include use cases that directly or indirectly include it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdgABRTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>not self.allIncludedUseCases()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C1F026D004B" general="_3ADC7B74022D3CC0D5FF02D3"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C1F05C90097" name="include" type="_3ADC7B74022D35FDD6900154" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3C1F05C801AE">
+ <ownedComment xmi:id="_sdpxChTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F05C90097">
+ <body>References the Include relationships owned by this use case.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdpxDhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdpxDRTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C1F06230264" name="extend" type="_3ADC7B74022D35FDD683021C" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3C1F06220370">
+ <ownedComment xmi:id="_sdy6-BTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C1F06230264">
+ <body>References the Extend relationships owned by this use case.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdy6_BTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdy6-xTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C8C9EE102BC" name="extensionPoint" type="_3ADC7B74022D3C8C9E4B0284" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3C8C9EE0015C">
+ <ownedComment xmi:id="_sdy6_xTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C8C9EE102BC">
+ <body>References the ExtensionPoints owned by the use case.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdy7AxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdy7AhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D2898E60206" name="subject" type="_3ADC7B74022D3D2CCA7402DF" association="_3ADC7B74022D3D2898E403BB">
+ <ownedComment xmi:id="_sd8sDRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D2898E60206">
+ <body>References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8sERTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8sEBTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3ADC7B74022D4301E2AD038A" name="allIncludedUseCases" isQuery="true" bodyCondition="_sdgADRTaEdqZu-3Jy1-uYg">
+ <ownedComment xmi:id="_sdgACRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D4301E2AD038A">
+ <body>The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sdgADRTaEdqZu-3Jy1-uYg" name="spec" constrainedElement="_3ADC7B74022D4301E2AD038A">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdgADhTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>result = self.include->union(self.include->collect(in | in.allIncludedUseCases()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_sdgADBTaEdqZu-3Jy1-uYg" type="_3ADC7B74022D3C1F02440042" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HIusgRTbEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HIusgBTbEdqZu-3Jy1-uYg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3C8C9E4B0284" name="ExtensionPoint">
+ <ownedComment xmi:id="_sdgAEhTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C8C9E4B0284">
+ <body>An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_sdgAGxTaEdqZu-3Jy1-uYg" name="must_have_name" constrainedElement="_3ADC7B74022D3C8C9E4B0284">
+ <ownedComment xmi:id="_sdgAFxTaEdqZu-3Jy1-uYg" annotatedElement="_sdgAGxTaEdqZu-3Jy1-uYg">
+ <body>An ExtensionPoint must have a name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_sdgAHBTaEdqZu-3Jy1-uYg">
+ <language>OCL</language>
+ <body>self.name->notEmpty ()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_3ADC7B74022D3C8CA0D60140" general="_3ADC7B74022D3CAB007101D7"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3C8C9EE102C6" name="useCase" type="_3ADC7B74022D3C1F02440042" association="_3ADC7B74022D3C8C9EE0015C">
+ <ownedComment xmi:id="_sdy7BRTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3C8C9EE102C6">
+ <body>References the use case that owns this extension point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdy7CRTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdy7CBTaEdqZu-3Jy1-uYg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3ADC7B74022D3D2CCA7402DF" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_sdgAIBTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D2CCA7402DF">
+ <body>A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.</body>
+ </ownedComment>
+ <generalization xmi:id="_3ADC7B74022D41B0D55A002F" general="_3ADC7B74022D3CAAECC502DA"/>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D2897F5008D" name="ownedUseCase" type="_3ADC7B74022D3C1F02440042" aggregation="composite" subsettedProperty="_3ADC7B74022D3CAAF0B00228" association="_3ADC7B74022D3D2897F30256">
+ <ownedComment xmi:id="_sd8sAxTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D2897F5008D">
+ <body>References the use cases owned by this classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8sBxTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8sBhTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ADC7B74022D3D2898E602CE" name="useCase" type="_3ADC7B74022D3C1F02440042" association="_3ADC7B74022D3D2898E403BB">
+ <ownedComment xmi:id="_sd8sExTaEdqZu-3Jy1-uYg" annotatedElement="_3ADC7B74022D3D2898E602CE">
+ <body>The set of use cases for which this Classifier is the subject.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_seF14hTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_seF14RTaEdqZu-3Jy1-uYg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C1F05C801AE" name="A_includingCase_include" memberEnd="_3ADC7B74022D3C1F05C9008D _3ADC7B74022D3C1F05C90097"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C1F05DF0252" name="A_addition_include" memberEnd="_3ADC7B74022D3C1F05E000EB _3ADC7B74022D3C1F05E000F5">
+ <ownedEnd xmi:id="_3ADC7B74022D3C1F05E000F5" type="_3ADC7B74022D35FDD6900154" association="_3ADC7B74022D3C1F05DF0252">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdpxGBTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdpxFxTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C1F061E01EE" name="A_extendedCase_extend" memberEnd="_3ADC7B74022D3C1F061F0023 _3ADC7B74022D3C1F061F002D">
+ <ownedEnd xmi:id="_3ADC7B74022D3C1F061F002D" type="_3ADC7B74022D35FDD683021C" association="_3ADC7B74022D3C1F061E01EE">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sdpxIhTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sdpxIRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C1F06220370" name="A_extension_extend" memberEnd="_3ADC7B74022D3C1F0623025A _3ADC7B74022D3C1F06230264"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C8C9EE0015C" name="A_extensionPoint_useCase" memberEnd="_3ADC7B74022D3C8C9EE102BC _3ADC7B74022D3C8C9EE102C6"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3C8C9F00027A" name="A_condition_extend" memberEnd="_3ADC7B74022D3C8C9F020006 _3ADC7B74022D3C8C9F0201AB">
+ <ownedEnd xmi:id="_3ADC7B74022D3C8C9F0201AB" type="_3ADC7B74022D35FDD683021C" association="_3ADC7B74022D3C8C9F00027A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8r9hTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8r9RTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D289635029B" name="A_extensionLocation_extension" memberEnd="_3ADC7B74022D3D289638024F _3ADC7B74022D3D2896380259">
+ <ownedEnd xmi:id="_3ADC7B74022D3D2896380259" name="extension" type="_3ADC7B74022D35FDD683021C" association="_3ADC7B74022D3D289635029B">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8sABTaEdqZu-3Jy1-uYg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8r_xTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D2897F30256" name="A_ownedUseCase_classifier" memberEnd="_3ADC7B74022D3D2897F5008D _3ADC7B74022D3D2897F50097">
+ <ownedEnd xmi:id="_3ADC7B74022D3D2897F50097" type="_3ADC7B74022D3D2CCA7402DF" association="_3ADC7B74022D3D2897F30256">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sd8sChTaEdqZu-3Jy1-uYg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sd8sCRTaEdqZu-3Jy1-uYg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3ADC7B74022D3D2898E403BB" name="A_subject_useCase" memberEnd="_3ADC7B74022D3D2898E60206 _3ADC7B74022D3D2898E602CE"/>
+ </packagedElement>
+ <profileApplication xmi:id="_tiM68BjPEdqPB8O80Bm3OQ">
+ <eAnnotations xmi:id="_tiM68RjPEdqPB8O80Bm3OQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EAttribute xmi:id="_1_uC0MYcEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41AF6DCF011E"/>
+ <Ecore:EAttribute xmi:id="_1_uC0cYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41AF6E0300D3"/>
+ <Ecore:EReference xmi:id="_1_uC0sYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D716DC100E9"/>
+ <Ecore:EReference xmi:id="_1_uC08YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D716DF5031E"/>
+ <Ecore:EReference xmi:id="_1_uC1MYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DF3D8E90137"/>
+ <Ecore:EReference xmi:id="_1_uC1cYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C7C242F00F0"/>
+ <Ecore:EReference xmi:id="_1_uC1sYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C7C242F001E"/>
+ <Ecore:EReference xmi:id="_1_3z0MYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9A2B20315"/>
+ <Ecore:EReference xmi:id="_1_3z0cYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9A15A02F2"/>
+ <Ecore:EReference xmi:id="_1_3z0sYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9A15A02F4"/>
+ <Ecore:EReference xmi:id="_1_3z08YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41B9A2B2031F"/>
+ <Ecore:EAttribute xmi:id="_1_3z1MYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D4063FB930031"/>
+ <Ecore:EReference xmi:id="_1_3z1cYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BDACD90276"/>
+ <Ecore:EReference xmi:id="_2ABk0MYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BDACD9026C"/>
+ <Ecore:EReference xmi:id="_2ABk0cYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E441FC901D0"/>
+ <Ecore:EReference xmi:id="_2ABk0sYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BD7B8A008A"/>
+ <Ecore:EReference xmi:id="_2ABk08YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BD7B8A0094"/>
+ <Ecore:EReference xmi:id="_2ABk1MYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BDADE90317"/>
+ <Ecore:EReference xmi:id="_2ABk1cYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BDADE90322"/>
+ <Ecore:EReference xmi:id="_2AKuwMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D410D08ED01B7"/>
+ <Ecore:EReference xmi:id="_2AKuwcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D410D0A3403E6"/>
+ <Ecore:EReference xmi:id="_2AKuwsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D410D0A350008"/>
+ <Ecore:EReference xmi:id="_2AKuw8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D410D08ED01B5"/>
+ <Ecore:EAttribute xmi:id="_2AKuxMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_k3pScEfeEdq0rbStTpEubg"/>
+ <Ecore:EAttribute xmi:id="_2AKuxcYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3D2C32860188"/>
+ <Ecore:EReference xmi:id="_2AKuxsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D4127B15000BD"/>
+ <Ecore:EReference xmi:id="_2AUfwMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAEEA60187"/>
+ <Ecore:EReference xmi:id="_2AUfwcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAEEA60189"/>
+ <Ecore:EAttribute xmi:id="_2AUfwsYcEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D3CAC07D800D7"/>
+ <Ecore:EReference xmi:id="_2AUfw8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAEEF70165"/>
+ <Ecore:EReference xmi:id="_2AUfxMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAEF470200"/>
+ <Ecore:EAttribute xmi:id="_2AUfxcYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CAAF00E0351"/>
+ <Ecore:EAttribute xmi:id="_2AUfxsYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CAAF02203B4"/>
+ <Ecore:EAttribute xmi:id="_2AUfx8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAF0300219"/>
+ <Ecore:EReference xmi:id="_2AUfyMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAF0B00232"/>
+ <Ecore:EAttribute xmi:id="_2AUfycYcEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41AF34430265"/>
+ <Ecore:EAttribute xmi:id="_2AeQwMYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41AF3484006A"/>
+ <Ecore:EAttribute xmi:id="_2AeQwcYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CB5DEA0029E"/>
+ <Ecore:EAttribute xmi:id="_2AeQwsYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3CBBE2E9024C"/>
+ <Ecore:EAttribute xmi:id="_2AeQw8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFFB238029B"/>
+ <Ecore:EAttribute xmi:id="_2AeQxMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFFB2640028"/>
+ <Ecore:EOperation xmi:id="_2AeQxcYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300D208038A" operationName="getLower"/>
+ <Ecore:EOperation xmi:id="_2AeQxsYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300D20E00CB" operationName="getUpper"/>
+ <Ecore:EReference xmi:id="_2AeQx8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAB04790307"/>
+ <Ecore:EReference xmi:id="_2AeQyMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAB02DF02A3"/>
+ <Ecore:EReference xmi:id="_2AnasMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAB21AF0364"/>
+ <Ecore:EReference xmi:id="_2AnascYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E026F600201"/>
+ <Ecore:EOperation xmi:id="_2AnassYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300CD890196" operationName="getGenerals"/>
+ <Ecore:EOperation xmi:id="_2Anas8YcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300CDD6036B" operationName="getInheritedMembers"/>
+ <Ecore:EReference xmi:id="_2AnatMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAB047902F3"/>
+ <Ecore:EReference xmi:id="_2AnatcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E026DFA035B"/>
+ <Ecore:EReference xmi:id="_2AnatsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E026E2C0064"/>
+ <Ecore:EAttribute xmi:id="_2Anat8YcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3DF4FA43024F"/>
+ <Ecore:EAttribute xmi:id="_2AnauMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFFCC4902FB"/>
+ <Ecore:EReference xmi:id="_2AnaucYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0265FD0094"/>
+ <Ecore:EReference xmi:id="_2AnausYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E02674A0088"/>
+ <Ecore:EReference xmi:id="_2AxLsMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E02674A00A6"/>
+ <Ecore:EReference xmi:id="_2AxLscYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E027BEB00C8"/>
+ <Ecore:EAttribute xmi:id="_2AxLssYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFFC10401EE"/>
+ <Ecore:EAttribute xmi:id="_2AxLs8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFFC66A0368"/>
+ <Ecore:EReference xmi:id="_2AxLtMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DFFC0A002E5"/>
+ <Ecore:EOperation xmi:id="_2AxLtcYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300DA23034B" operationName="getOpposite"/>
+ <Ecore:EAttribute xmi:id="_2AxLtsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E04B1B500F0"/>
+ <Ecore:EAttribute xmi:id="_2AxLt8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E04B1BD0137"/>
+ <Ecore:EAttribute xmi:id="_2A6VoMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E04B1CF009D"/>
+ <Ecore:EAttribute xmi:id="_2A6VocYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E04B1C20171"/>
+ <Ecore:EReference xmi:id="_2A6VosYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0282460399"/>
+ <Ecore:EOperation xmi:id="_2A6Vo8YcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300D86401A5" operationName="lowerBound"/>
+ <Ecore:EOperation xmi:id="_2A6VpMYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300D86A03D8" operationName="upperBound"/>
+ <Ecore:EReference xmi:id="_2A6VpcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D51535A0358"/>
+ <Ecore:EOperation xmi:id="_2A6VpsYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300CCCA006D" operationName="getEndTypes"/>
+ <Ecore:EReference xmi:id="_2A6Vp8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAF0B00228"/>
+ <Ecore:EReference xmi:id="_2A6VqMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CAAF1D0036C"/>
+ <Ecore:EReference xmi:id="_2A6VqcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3DDD06680179"/>
+ <Ecore:EOperation xmi:id="_2A6VqsYcEduPJbEsMYXjUQ" base_Operation="_3ADC7B74022D4300D74101E4" operationName="getImportedMembers"/>
+ <Ecore:EReference xmi:id="_2A6Vq8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D514F6E0106"/>
+ <Ecore:EReference xmi:id="_2BEGoMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0265FD01CA"/>
+ <Ecore:EAttribute xmi:id="_2BEGocYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E5921F9017E"/>
+ <Ecore:EReference xmi:id="_2BEGosYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BD9B210224"/>
+ <Ecore:EReference xmi:id="_2BEGo8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BD9B210226"/>
+ <Ecore:EReference xmi:id="_2BN3oMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D40F9B6900288"/>
+ <Ecore:EReference xmi:id="_2BN3ocYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D06C90B02AF"/>
+ <Ecore:EAttribute xmi:id="_2BN3osYcEduPJbEsMYXjUQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_3ADC7B74022D41AF6EF40300"/>
+ <Ecore:EAttribute xmi:id="_2BN3o8YcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D41AF6F25017A"/>
+ <Ecore:EReference xmi:id="_2BN3pMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0257890057"/>
+ <Ecore:EReference xmi:id="_2BN3pcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0257B9029B"/>
+ <Ecore:EOperation xmi:id="_2BXBkMYcEduPJbEsMYXjUQ" base_Operation="_xc4UQDZ9Edqq1tCaRkgBQQ" operationName="getRequireds"/>
+ <Ecore:EOperation xmi:id="_2BXBkcYcEduPJbEsMYXjUQ" base_Operation="_2cFjwDZ-Edqq1tCaRkgBQQ" operationName="getProvideds"/>
+ <Ecore:EAttribute xmi:id="_2BXBksYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E0259E30107"/>
+ <Ecore:EReference xmi:id="_2BXBk8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3CCB579E00F4"/>
+ <Ecore:EReference xmi:id="_2BXBlMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D03D15C008B"/>
+ <Ecore:EReference xmi:id="_2BXBlcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D02623F03E2"/>
+ <Ecore:EReference xmi:id="_2BXBlsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E22160503E3"/>
+ <Ecore:EReference xmi:id="_2BXBl8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E0B98C901E2"/>
+ <Ecore:EReference xmi:id="_2BXBmMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E2212D701CF"/>
+ <Ecore:EReference xmi:id="_2BgykMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D41BDAA5A0141"/>
+ <Ecore:EAttribute xmi:id="_2BgykcYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E023C610263"/>
+ <Ecore:EAttribute xmi:id="_2BgyksYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E023C6802FA"/>
+ <Ecore:EReference xmi:id="_2Bgyk8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3E045F15011E"/>
+ <Ecore:EOperation xmi:id="_2BgylMYcEduPJbEsMYXjUQ" base_Operation="_xZVGsEb0Edq0rbStTpEubg" operationName="getDeployedElements"/>
+ <Ecore:EAttribute xmi:id="_2BgylcYcEduPJbEsMYXjUQ" isUnsettable="true" base_Property="_3ADC7B74022D3E0330D40211"/>
+ <Ecore:EAttribute xmi:id="_2BgylsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D05BC66015F"/>
+ <Ecore:EReference xmi:id="_2Bgyl8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C63983E02AE"/>
+ <Ecore:EAttribute xmi:id="_2BqjkMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C612C28022F"/>
+ <Ecore:EAttribute xmi:id="_2BqjkcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C6136B401B9"/>
+ <Ecore:EAttribute xmi:id="_2BqjksYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C613764000E"/>
+ <Ecore:EAttribute xmi:id="_2Bqjk8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3C678F5300CA"/>
+ <Ecore:EReference xmi:id="_2BztgMYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D73412C0329"/>
+ <Ecore:EReference xmi:id="_2BztgcYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D73416A0300"/>
+ <Ecore:EReference xmi:id="_2BztgsYcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D733F2200E4"/>
+ <Ecore:EReference xmi:id="_2Bztg8YcEduPJbEsMYXjUQ" isTransient="true" base_Property="_3ADC7B74022D3D07F16101E5"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/UML.ecore b/plugins/org.eclipse.emf.cdo.tests/uml2/UML.ecore
new file mode 100644
index 0000000000..a31a993392
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/UML.ecore
@@ -0,0 +1,15558 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="uml"
+ nsURI="http://www.eclipse.org/uml2/2.1.0/UML" nsPrefix="uml">
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An integer is a primitive type representing integer values."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Boolean type is used for logical expression, consisting of the predefined values true and false."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="int">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An unlimited natural is a primitive type representing unlimited natural values."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A comment is a textual annotation that can be attached to a set of elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
+ unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a string that is the comment."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
+ upperBound="-1" eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Element(s) being commented."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element is a constituent of a model. As such, it has the capability of owning other elements."/>
+ </eAnnotations>
+ <eOperations name="not_own_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element may not directly or indirectly own itself.&#xD;&#xA;not self.allOwnedElements()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="has_owner" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Elements that must be owned must have an owner.&#xD;&#xA;self.mustBeOwned() implies owner->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="destroy" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Destroys this element by removing all cross references to/from it and removing it from its containing resource or object."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="hasKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this element has the specified keyword."/>
+ </eAnnotations>
+ <eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The keyword in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getKeywords" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the keywords for this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="addKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Adds the specified keyword to this element."/>
+ </eAnnotations>
+ <eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The keyword to add."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="removeKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Removes the specified keyword from this element."/>
+ </eAnnotations>
+ <eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The keyword to remove."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getNearestPackage" ordered="false" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getModel" ordered="false" eType="#//Model">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the model that owns (either directly or indirectly) this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isStereotypeApplicable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified stereotype is applicable to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isStereotypeRequired" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified stereotype is required for this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isStereotypeApplied" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified stereotype is applied to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="applyStereotype" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Applies the specified stereotype to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype to apply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unapplyStereotype" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Unapplies the specified stereotype from this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype to unapply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getApplicableStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getApplicableStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applicable stereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getStereotypeApplications" ordered="false" upperBound="-1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype applications for this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getStereotypeApplication" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to retrieve an application."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getRequiredStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotypes that are required for this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getRequiredStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the required stereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotypes that are applied to this element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAppliedStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied stereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedSubstereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the substereotypes of the specified stereotype that are applied to this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The superstereotype of the applied substereotypes to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedSubstereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The superstereotype of the applied substereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied substereotype to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="hasValue" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to test the property."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the property in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getValue" ordered="false" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the value of the property with the specified name in the specified stereotype for this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to retrieve the value."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the property whose value to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the value of the property with the specified name in the specified stereotype for this element."/>
+ </eAnnotations>
+ <eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The stereotype for which to set the value."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the property whose value to set."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="newValue" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new value for the property."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createEAnnotation" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EAnnotation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an annotation with the specified source and this element as its model element."/>
+ </eAnnotations>
+ <eParameters name="source" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The source for the new annotation."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getRelationships" ordered="false" upperBound="-1" eType="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the relationships in which this element is involved."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getRelationships" ordered="false" upperBound="-1" eType="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the relationships of the specified type in which this element is involved."/>
+ </eAnnotations>
+ <eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The (meta)type of the relationships to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getSourceDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships for which this element is a source."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getSourceDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships of the specified type for which this element is a source."/>
+ </eAnnotations>
+ <eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The (meta)type of the directed relationships to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getTargetDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships for which this element is a target."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getTargetDirectedRelationships" ordered="false" upperBound="-1"
+ eType="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the directed relationships of the specified type for which this element is a target."/>
+ </eAnnotations>
+ <eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The (meta)type of the directed relationships to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="allOwnedElements" ordered="false" upperBound="-1" eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allOwnedElements() gives all of the direct and indirect owned elements of an element.&#xD;&#xA;result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="mustBeOwned" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedElement" ordered="false"
+ upperBound="-1" eType="#//Element" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Element/owner">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Elements owned by this element."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
+ eType="#//Element" changeable="false" volatile="true" transient="true" derived="true"
+ eOpposite="#//Element/ownedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Element that owns this element."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedComment" ordered="false"
+ upperBound="-1" eType="#//Comment" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Comments owned by this element."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package is used to group elements, and provides a namespace for the grouped elements.&#xD;&#xA;A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="mustBeOwned" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query mustBeOwned() indicates whether elements of this type must have an owner.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Element/mustBeOwned"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="elements_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If an element that is owned by a package has visibility, it is public or private.&#xD;&#xA;self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (abstract) class with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new class, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new class should be abstract."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedEnumeration" ordered="false" lowerBound="1" eType="#//Enumeration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a enumeration with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new enumeration, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedPrimitiveType" ordered="false" lowerBound="1" eType="#//PrimitiveType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a primitive type with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new primitive type, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedInterface" ordered="false" lowerBound="1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an interface with the specified name as an owned type of this package."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new interface, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isProfileApplied" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether the specified profile is applied to this package."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile in question."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="applyProfile" ordered="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name)."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile to apply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unapplyProfile" ordered="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile to unapply."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedProfiles" ordered="false" upperBound="-1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profiles that are applied to this package."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllAppliedProfiles" ordered="false" upperBound="-1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAppliedProfile" ordered="false" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied profile to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAppliedProfile" ordered="false" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualified name of the applied profile to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="recurse" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to look in nesting packages."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAllProfileApplications" ordered="false" upperBound="-1"
+ eType="#//ProfileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the profile applications for this package, including profile applications for its nesting package(s)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getProfileApplication" ordered="false" eType="#//ProfileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the application of the specified profile to this package, or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile whose application to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getProfileApplication" ordered="false" eType="#//ProfileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied."/>
+ </eAnnotations>
+ <eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The profile whose application to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="recurse" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to look in nesting packages."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isModelLibrary" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this package is a model library."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="visibleMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query visibleMembers() defines which members of a Package can be accessed outside it.&#xD;&#xA;result = member->select( m | self.makesVisible(m))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="makesVisible" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;self.member->includes(el)&#xD;&#xA;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())"/>
+ </eAnnotations>
+ <eParameters name="el" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedType" ordered="false"
+ upperBound="-1" eType="#//Type" volatile="true" transient="true" derived="true"
+ eOpposite="#//Type/package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the packaged elements that are Types."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Package/packagedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packageMerge" ordered="false"
+ upperBound="-1" eType="#//PackageMerge" containment="true" eOpposite="#//PackageMerge/receivingPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the PackageMerges that are owned by this Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the packageable elements that are owned by this Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedPackage" ordered="false"
+ upperBound="-1" eType="#//Package" volatile="true" transient="true" derived="true"
+ eOpposite="#//Package/nestingPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the packaged elements that are Packages."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Package/packagedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestingPackage" ordered="false"
+ eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/nestedPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Package that owns this Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="profileApplication" ordered="false"
+ upperBound="-1" eType="#//ProfileApplication" containment="true" eOpposite="#//ProfileApplication/applyingPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ProfileApplications that indicate which profiles have been applied to the Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
+ eSuperTypes="#//NamedElement #//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A packageable element indicates a named element that may be owned directly by a package.&#xD;&#xA;Packageable elements are able to serve as a template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EAttribute" name="visibility" ordered="false" eType="#//VisibilityKind"
+ defaultValueLiteral="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that packageable elements must always have a visibility, i.e., visibility is not optional."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//NamedElement/visibility"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A named element is an element in a model that may have a name.&#xD;&#xA;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)."/>
+ </eAnnotations>
+ <eOperations name="has_no_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If there is no name, or one of the containing namespaces has no name, there is no qualified name.&#xD;&#xA;(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="has_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;(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))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="visibility_needs_ownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a NamedElement is not owned by a Namespace, it does not have a visibility.&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createDependency" ordered="false" lowerBound="1" eType="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package."/>
+ </eAnnotations>
+ <eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The supplier for the new dependency."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getLabel" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves a localized label for this named element."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getLabel" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves a label for this named element, localized if indicated."/>
+ </eAnnotations>
+ <eParameters name="localize" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to localize the label."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createUsage" ordered="false" lowerBound="1" eType="#//Usage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a usage between this named element and the specified supplier, owned by this named element's nearest package."/>
+ </eAnnotations>
+ <eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The supplier for the new usage."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getQualifiedName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="allNamespaces" upperBound="-1" eType="#//Namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.&#xD;&#xA;result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isDistinguishableFrom" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;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"/>
+ </eAnnotations>
+ <eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ <eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
+ </eOperations>
+ <eOperations name="separator" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query separator() gives the string that is used to separate names when constructing a qualified name.&#xD;&#xA;result = '::'"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="allOwningPackages" ordered="false" upperBound="-1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allOwningPackages() returns all the directly or indirectly owning packages.&#xD;&#xA;result = self.namespace->select(p | p.oclIsKindOf(Package))->union(p.allOwningPackages())"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"
+ unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the NamedElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ eType="#//VisibilityKind" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
+ eType="#//String" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
+ upperBound="-1" eType="#//Dependency" eOpposite="#//Dependency/client">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the dependencies that reference the client."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"
+ eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true"
+ eOpposite="#//Namespace/ownedMember">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the namespace that owns the NamedElement."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"
+ eType="#//StringExpression" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The string expression used to define the name of this named element."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model."/>
+ </eAnnotations>
+ <eLiterals name="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A public element is visible to all elements that can access the contents of the namespace that owns it."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="private" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A private element is only visible inside the namespace that owns it."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="protected" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protected element is visible to elements that have a generalization relationship to the namespace that owns it."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="package" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s)."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement" eOpposite="#//NamedElement/clientDependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"
+ eSuperTypes="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the sources of the DirectedRelationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the targets of the DirectedRelationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Relationship is an abstract concept that specifies some kind of relationship between elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the elements related by the Relationship."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A namespace is an element in a model that contains a set of named elements that can be identified by name."/>
+ </eAnnotations>
+ <eOperations name="members_distinguishable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All the members of a Namespace are distinguishable within it.&#xD;&#xA;membersAreDistinguishable()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createElementImport" ordered="false" lowerBound="1" eType="#//ElementImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an import of the specified element into this namespace with the specified visibility."/>
+ </eAnnotations>
+ <eParameters name="element" ordered="false" lowerBound="1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element to import."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="visibility" ordered="false" lowerBound="1" eType="#//VisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility for the new element import."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createPackageImport" ordered="false" lowerBound="1" eType="#//PackageImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an import of the specified package into this namespace with the specified visibility."/>
+ </eAnnotations>
+ <eParameters name="package_" ordered="false" lowerBound="1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The package to import."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="visibility" ordered="false" lowerBound="1" eType="#//VisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility for the new package import."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getImportedElements" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the elements imported by this namespace."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getImportedPackages" ordered="false" upperBound="-1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the packages imported by this namespace."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getImportedMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = self.importMembers(self.elementImport.importedElement.asSet()-&#xA;>union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.&#xD;&#xA;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.&#xD;&#xA;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"/>
+ </eAnnotations>
+ <eParameters name="element" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ </eOperations>
+ <eOperations name="membersAreDistinguishable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.&#xD;&#xA;result = self.member->forAll( memb |&#xA;self.member->excluding(memb)->forAll(other |&#xA;memb.isDistinguishableFrom(other, self)))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem |&#xA;mem.imp.isDistinguishableFrom(mem, self)))"/>
+ </eAnnotations>
+ <eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
+ </eOperations>
+ <eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.&#xD;&#xA;result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))"/>
+ </eAnnotations>
+ <eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
+ upperBound="-1" eType="#//ElementImport" containment="true" eOpposite="#//ElementImport/importingNamespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ElementImports owned by the Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
+ upperBound="-1" eType="#//PackageImport" containment="true" eOpposite="#//PackageImport/importingNamespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the PackageImports owned by the Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true" eOpposite="#//Constraint/context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a set of Constraints owned by this Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
+ upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
+ upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//NamedElement/namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collection of NamedElements owned by the Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member #//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ElementImport" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier."/>
+ </eAnnotations>
+ <eOperations name="visibility_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of an ElementImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="imported_element_is_public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An importedElement has either public visibility or no visibility at all.&#xD;&#xA;self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getName" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.&#xD;&#xA;result = if self.alias->notEmpty() then&#xA; self.alias&#xA;else&#xA; self.importedElement.name&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
+ lowerBound="1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the PackageableElement whose name is to be added to a Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
+ lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/elementImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Namespace that imports a PackageableElement from another Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageImport" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces."/>
+ </eAnnotations>
+ <eOperations name="public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of a PackageImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+ lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" ordered="false"
+ lowerBound="1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Package whose members are imported into a Namespace."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
+ lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/packageImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Namespace that imports the members from a Package."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="not_apply_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="value_specification_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;self.specification().booleanValue().isOclKindOf(Boolean)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="boolean_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Evaluating the value specification for a constraint must not have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_applied_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
+ eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of Elements referenced by this Constraint."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+ eType="#//Namespace" eOpposite="#//Namespace/ownedRule">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the namespace that owns the NamedElement."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValueSpecification" abstract="true"
+ eSuperTypes="#//PackageableElement #//TypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="isComputable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="integerValue" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query integerValue() gives a single Integer value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="booleanValue" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query booleanValue() gives a single Boolean value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="stringValue" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query stringValue() gives a single String value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="unlimitedValue" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.&#xD;&#xA;result = Set{}"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isNull" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNull() returns true when it can be computed that the value is null.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A typed element is a kind of named element that represents an element with a type.&#xD;&#xA;A typed element has a type."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;The type of the TypedElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A type is a named element that is used as the type for a typed element. A type can be contained in a package.&#xD;&#xA;A type constrains the values represented by a typed element."/>
+ </eAnnotations>
+ <eOperations name="createAssociation" ordered="false" lowerBound="1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package."/>
+ </eAnnotations>
+ <eParameters name="end1IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigability for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end1Type" ordered="false" lowerBound="1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the first end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigability for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="end2Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the second end of the new association."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAssociations" ordered="false" upperBound="-1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the associations in which this type is involved."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ <eParameters name="other" ordered="false" lowerBound="1" eType="#//Type"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
+ eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/ownedType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the owning package of this classifier, if any."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//Classifier #//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link."/>
+ </eAnnotations>
+ <eOperations name="specialized_end_number" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An association specializing another association has the same number of ends as the other association.&#xD;&#xA;self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="specialized_end_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only binary associations can be aggregations.&#xD;&#xA;self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Association ends of associations with more than two ends must be owned by the association.&#xD;&#xA;if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isBinary" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this association is a binary association, i.e. whether it has exactly two member ends."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getEndTypes" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="endType is derived from the types of the member ends.&#xD;&#xA;result = self.memberEnd->collect(e | e.type)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/owningAssociation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ends that are owned by the association itself."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Association/memberEnd #//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="memberEnd" lowerBound="2"
+ upperBound="-1" eType="#//Property" eOpposite="#//Property/association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Each end represents participation of instances of the classifier connected to the end in links of the association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether the association is derived from other model elements such as other associations or constraints."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="endType" lowerBound="1"
+ upperBound="-1" eType="#//Type" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifiers that are used as types of the ends of the association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="navigableOwnedEnd" ordered="false"
+ upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The navigable ends that are owned by the association itself."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Association/ownedEnd"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//RedefinableElement #//Type #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.&#xD;&#xA;A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isTemplate" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isTemplate() returns whether this templateable element is actually a template.&#xD;&#xA;result = oclAsType(TemplatableElement).isTemplate() or general->exists(g | g.isTemplate())"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateableElement/isTemplate"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="ownedTemplateSignature" ordered="false"
+ eType="#//TemplateSignature" containment="true" eOpposite="#//RedefinableTemplateSignature/classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional template signature specifying the formal template parameters."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateableElement/ownedTemplateSignature"/>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//ClassifierTemplateParameter/%duplicates%/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="no_cycles_in_generalization" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="generalization_hierarchies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="specialize_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier may only specialize classifiers of a valid type.&#xD;&#xA;self.parents()->forAll(c | self.maySpecializeType(c))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getAllAttributes" ordered="false" upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the attributes of this classifier, including those inherited from its parents."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOperations" ordered="false" upperBound="-1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the operations of this classifier."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllOperations" ordered="false" upperBound="-1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the operations of this classifier, including those inherited from its parents."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOperation" ordered="false" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getOperation" ordered="false" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types of the operation to retrieve, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="ignoreCase" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to ignore case in String comparisons."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the interfaces on which this classifier has a usage dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getGenerals" ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The general classifiers are the classifiers referenced by the generalization relationships.&#xD;&#xA;result = self.parents()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getInheritedMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inheritedMember association is derived by inheriting the inheritable members of the parents.&#xD;&#xA;result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = member->select(oclIsKindOf(Feature))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="parents" ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query parents() gives all of the immediate ancestors of a generalized Classifier.&#xD;&#xA;result = generalization.general"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="inheritableMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;c.allParents()->includes(self)&#xD;&#xA;result = member->select(m | c.hasVisibilityOf(m))"/>
+ </eAnnotations>
+ <eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="hasVisibilityOf" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;self.allParents()->collect(c | c.member)->includes(n)&#xD;&#xA;result = if (self.inheritedMember->includes(n)) then (n.visibility &lt;> #private) else true"/>
+ </eAnnotations>
+ <eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ </eOperations>
+ <eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = (self=other) or (self.allParents()->includes(other))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Type/conformsTo"/>
+ <eParameters name="other" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="inherit" ordered="false" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;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.&#xD;&#xA;result = inhs"/>
+ </eAnnotations>
+ <eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
+ </eOperations>
+ <eOperations name="maySpecializeType" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = self.oclIsKindOf(c.oclType)"/>
+ </eAnnotations>
+ <eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="allParents" ordered="false" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.&#xD;&#xA;result = self.parents()->union(self.parents()->collect(p | p.allParents())"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
+ upperBound="-1" eType="#//Generalization" containment="true" eOpposite="#//Generalization/specific">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
+ upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the GeneralizationSet of which the associated Classifier is a power type."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="feature" ordered="false"
+ upperBound="-1" eType="#//Feature" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Feature/featuringClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.&#xD;&#xA;Specifies each feature defined in the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inheritedMember" ordered="false"
+ upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies all elements inherited by this classifier from the general classifiers."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Classifiers that are redefined by this Classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
+ upperBound="-1" eType="#//Classifier" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the general classifier in the Generalization relationship.&#xD;&#xA;Specifies the general Classifiers for this Classifier."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="substitution" ordered="false"
+ upperBound="-1" eType="#//Substitution" containment="true" eOpposite="#//Substitution/substitutingClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the substitutions that are owned by this Classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attribute" ordered="false"
+ upperBound="-1" eType="#//Property" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="representation" ordered="false"
+ eType="#//CollaborationUse">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a collaboration use which indicates the collaboration that represents this classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/collaborationUse"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="collaborationUse" ordered="false"
+ upperBound="-1" eType="#//CollaborationUse" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the collaboration uses owned by the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedUseCase" ordered="false"
+ upperBound="-1" eType="#//UseCase" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use cases owned by this classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
+ upperBound="-1" eType="#//UseCase" eOpposite="#//UseCase/subject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of use cases for which this Classifier is the subject."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RedefinableElement" abstract="true"
+ eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="redefinition_context_valid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefinition_consistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefining element must be consistent with each redefined element.&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isConsistentWith" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))"/>
+ </eAnnotations>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
+ upperBound="-1" eType="#//RedefinableElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinable element that is being redefined by this element."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the contexts that this element may be redefined from."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateableElement" abstract="true"
+ eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A templateable element is an element that can optionally be defined as a template and bound to other templates."/>
+ </eAnnotations>
+ <eOperations name="parameterableElements" ordered="false" upperBound="-1" eType="#//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = allOwnedElements->select(oclIsKindOf(ParameterableElement))"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isTemplate" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isTemplate() returns whether this templateable element is actually a template.&#xD;&#xA;result = ownedTemplateSignature->notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
+ upperBound="-1" eType="#//TemplateBinding" containment="true" eOpposite="#//TemplateBinding/boundElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional bindings from this element to templates."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTemplateSignature"
+ ordered="false" eType="#//TemplateSignature" containment="true" eOpposite="#//TemplateSignature/template">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional template signature specifying the formal template parameters."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateBinding" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="parameter_substitution_formal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Each parameter substitution must refer to a formal template parameter of the target template signature.&#xD;&#xA;parameterSubstitution->forAll(b | template.parameter->includes(b.formal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_parameter_substitution" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A binding contains at most one parameter substitution for each formal template parameter of the target template signature.&#xD;&#xA;template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+ lowerBound="1" eType="#//TemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template signature for the template that is the target of the binding."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
+ ordered="false" upperBound="-1" eType="#//TemplateParameterSubstitution" containment="true"
+ eOpposite="#//TemplateParameterSubstitution/templateBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter substitutions owned by this template binding."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="boundElement" ordered="false"
+ lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/templateBinding">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is bound by this binding."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner #//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template signature bundles the set of formal template parameters for a templated element."/>
+ </eAnnotations>
+ <eOperations name="own_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Parameters must own the elements they parameter or those elements must be owned by the element being templated.&#xD;&#xA;templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
+ upperBound="-1" eType="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of all formal template parameters for this template signature."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//TemplateParameter" containment="true" eOpposite="#//TemplateParameter/signature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameters that are owned by this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateSignature/parameter"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="template" ordered="false"
+ lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/ownedTemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that owns this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateParameter" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template parameter exposes a parameterable element as a formal template parameter of a template."/>
+ </eAnnotations>
+ <eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The default must be compatible with the formal template parameter.&#xD;&#xA;default->notEmpty() implies default->isCompatibleWith(parameteredElement)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+ lowerBound="1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/ownedParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template signature that owns this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ParameterableElement/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element exposed by this template parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameteredElement"
+ ordered="false" eType="#//ParameterableElement" containment="true" eOpposite="#//ParameterableElement/owningTemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is owned by this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateParameter/parameteredElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="default" ordered="false"
+ eType="#//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is the default for this formal template parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedDefault" ordered="false"
+ eType="#//ParameterableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The element that is owned by this template parameter for the purpose of providing a default."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//TemplateParameter/default #//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParameterableElement" abstract="true"
+ eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="isCompatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = p->oclIsKindOf(self.oclType)"/>
+ </eAnnotations>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
+ </eOperations>
+ <eOperations name="isTemplateParameter" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isTemplateParameter() determines if this parameterable element is exposed as a formal template parameter.&#xD;&#xA;result = templateParameter->notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningTemplateParameter"
+ ordered="false" eType="#//TemplateParameter" eOpposite="#//TemplateParameter/ownedParameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameter that owns this element."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner #//ParameterableElement/templateParameter"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//TemplateParameter/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TemplateParameterSubstitution" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A template parameter substitution relates the actual parameter(s) to a formal template parameter as part of a template binding."/>
+ </eAnnotations>
+ <eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
+ lowerBound="1" eType="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameter that is associated with this substitution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actual" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The elements that are the actual parameters for this substitution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedActual" ordered="false"
+ upperBound="-1" eType="#//ParameterableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual parameters that are owned by this substitution."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//TemplateParameterSubstitution/actual #//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
+ lowerBound="1" eType="#//TemplateBinding" eOpposite="#//TemplateBinding/parameterSubstitution">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The optional bindings from this element to templates."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Generalization" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;A generalization relates a specific classifier to a more general classifier, and is owned by the specific classifier."/>
+ </eAnnotations>
+ <eOperations name="generalization_same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Every Generalization associated with a given GeneralizationSet must have the same general Classifier. That is, all Generalizations for a particular GeneralizationSet must have the same superclass.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" ordered="false"
+ eType="#//Boolean" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the general classifier in the Generalization relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalizationSet" ordered="false"
+ upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/generalization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates a set in which instances of Generalization is considered members."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specific" ordered="false"
+ lowerBound="1" eType="#//Classifier" eOpposite="#//Classifier/generalization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the specializing classifier in the Generalization relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A generalization set is a packageable element whose instances define collections of subsets of generalization relationships."/>
+ </eAnnotations>
+ <eOperations name="generalization_same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.&#xD;&#xA;generalization->collect(g | g.general)->asSet()->size() &lt;= 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty. For example, Person could have two Generalization relationships, each with the different specific Classifier: Manager or Staff. This would be disjoint because every instance of Person must either be a Manager or Staff. In contrast, Person could have two Generalization relationships involving two specific (and non-covering) Classifiers: Sales Person and Manager. This GeneralizationSet would not be disjoint because there are instances of Person which can be a Sales Person and a Manager."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"
+ eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the Classifier that is defined as the power type for the associated GeneralizationSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
+ upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the instances of Generalization which are members of a given GeneralizationSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A feature declares a behavioral or structural characteristic of instances of classifiers."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="featuringClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Classifier/feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Classifiers that have this Feature as a feature."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Substitution" eSuperTypes="#//Realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A substitution is a relationship between two classifiers signifies that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The contract with which the substituting classifier complies."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="substitutingClassifier"
+ ordered="false" lowerBound="1" eType="#//Classifier" eOpposite="#//Classifier/substitution">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/client"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Realization" eSuperTypes="#//Abstraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Abstraction" eSuperTypes="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false"
+ eType="#//OpaqueExpression" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueExpression" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.&#xD;&#xA;Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="language_body_size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the language attribute is not empty, then the size of the body and language arrays must be the same.&#xD;&#xA;language->notEmpty() implies (body->size() = language->size())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="only_return_result_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The behavior may only have return result parameters.&#xD;&#xA;self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameters->select(p | p.direction&lt;>#return)->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_return_result_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The behavior must have exactly one return result parameter.&#xD;&#xA;self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getResult" ordered="false" eType="#//Parameter"/>
+ <eOperations name="value" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query value() gives an integer value for an expression intended to produce one.&#xD;&#xA;self.isIntegral()&#xD;&#xA;true"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isIntegral" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isIntegral() tells whether an expression is intended to produce an integer.&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isPositive" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isPositive() tells whether an integer expression has a positive value.&#xD;&#xA;self.isIntegral()&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isNonNegative" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNonNegative() tells whether an integer expression has a non-negative value.&#xD;&#xA;self.isIntegral()&#xD;&#xA;result = false"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The text of the expression, possibly in multiple languages."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the behavior of the opaque expression."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.&#xD;&#xA;Parameters are allowed to be treated as connectable elements.&#xD;&#xA;Parameters have support for streaming, exceptions, and parameter sets."/>
+ </eAnnotations>
+ <eOperations name="connector_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter may only be associated with a connector end within the context of a collaboration.&#xD;&#xA;self.end.notEmpty() implies self.collaboration.notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="stream_and_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter cannot be a stream and exception at the same time.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An input parameter cannot be an exception.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="reentrant_behaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Reentrant behaviors cannot have stream parameters.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="in_and_out" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only in and inout parameters may have a delete effect. Only out, inout, and return parameters may have a create effect.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefault" ordered="false" eType="#//String"/>
+ <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ <eOperations name="setDefault" ordered="false" lowerBound="1">
+ <eParameters name="newDefault" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="unsetDefault" ordered="false" lowerBound="1"/>
+ <eOperations name="setBooleanDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified Boolean value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setIntegerDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified integer value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setStringDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified string value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setUnlimitedNaturalDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the specified unlimited natural value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setNullDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this parameter to the null value."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSet" ordered="false"
+ upperBound="-1" eType="#//ParameterSet" eOpposite="#//ParameterSet/parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter sets containing the parameter. See ParameterSet."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ eType="#//Operation" changeable="false" volatile="true" transient="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Operation owning this parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" ordered="false"
+ lowerBound="1" eType="#//ParameterDirectionKind" defaultValueLiteral="in">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether a parameter is being sent into or out of a behavioral element."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
+ eType="#//String" volatile="true" transient="true" unsettable="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a String that represents a value to be used when no argument is supplied for the Parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isException" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether an output parameter may emit a value to the exclusion of the other outputs."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStream" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" ordered="false"
+ eType="#//ParameterEffectKind" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the effect that the owner of the parameter has on values passed in or out of the parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MultiplicityElement" abstract="true"
+ eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="upper_gt_0" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A multiplicity must define at least one valid cardinality that is greater than zero.&#xD;&#xA;upperBound()->notEmpty() implies upperBound() > 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="lower_ge_0" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound must be a non-negative integer literal.&#xD;&#xA;lowerBound()->notEmpty() implies lowerBound() >= 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="upper_ge_lower" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound must be greater than or equal to the lower bound.&#xD;&#xA;(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="value_specification_no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="value_specification_constant" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setLower" ordered="false" lowerBound="1">
+ <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eOperations name="setUpper" ordered="false" lowerBound="1">
+ <eParameters name="newUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
+ </eOperations>
+ <eOperations name="getLower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The derived lower attribute must equal the lowerBound.&#xD;&#xA;result = lowerBound()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The derived upper attribute must equal the upperBound.&#xD;&#xA;result = upperBound()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isMultivalued" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.&#xD;&#xA;upperBound()->notEmpty()&#xD;&#xA;result = upperBound() > 1"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="includesCardinality" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.&#xD;&#xA;upperBound()->notEmpty() and lowerBound()->notEmpty()&#xD;&#xA;result = (lowerBound() &lt;= C) and (upperBound() >= C)"/>
+ </eAnnotations>
+ <eParameters name="C" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eOperations name="includesMultiplicity" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.&#xD;&#xA;self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()&#xD;&#xA;result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())"/>
+ </eAnnotations>
+ <eParameters name="M" ordered="false" lowerBound="1" eType="#//MultiplicityElement"/>
+ </eOperations>
+ <eOperations name="lowerBound" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query lowerBound() returns the lower bound of the multiplicity as an integer.&#xD;&#xA;result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="upperBound" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.&#xD;&#xA;result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="compatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.&#xD;&#xA;result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))"/>
+ </eAnnotations>
+ <eParameters name="other" ordered="false" lowerBound="1" eType="#//MultiplicityElement"/>
+ </eOperations>
+ <eOperations name="is" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation is determines if the upper and lower bound of the ranges are the ones given.&#xD;&#xA;result = (lowerbound = self.lowerbound and upperbound = self.upperbound)"/>
+ </eAnnotations>
+ <eParameters name="lowerbound" ordered="false" lowerBound="1" eType="#//Integer"/>
+ <eParameters name="upperbound" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
+ eType="#//UnlimitedNatural" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the upper bound of the multiplicity interval."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
+ eType="#//Integer" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the lower bound of the multiplicity interval."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="upperValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of the upper bound for this multiplicity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lowerValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of the lower bound for this multiplicity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
+ eSuperTypes="#//TypedElement #//ParameterableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ConnectableElement is an abstract metaclass representing a set of instances that play roles of a classifier. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier.&#xD;&#xA;A connectable element may be exposed as a connectable element template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//ConnectableElementTemplateParameter/%duplicates%/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ConnectableElementTemplateParameter for this ConnectableElement parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="getEnds" ordered="false" upperBound="-1" eType="#//ConnectorEnd"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" upperBound="-1" eType="#//ConnectorEnd"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Denotes a connector that attaches to this connectable element."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"
+ eSuperTypes="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connectable element template parameter exposes a connectable element as a formal parameter for a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ConnectableElement/%duplicates%/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ConnectableElement for this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector."/>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the connector end may not be more general than the multiplicity of the association typing the owning connector.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="part_with_port_empty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a connector end is attached to a port of the containing classifier, partWithPort will be empty.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="role_and_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a connector end references both a role and a partWithPort, then the role must be a port that is defined by the type of the partWithPort.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="self_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The property held in self.partWithPort must not be a Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefiningEnd" ordered="false" lowerBound="1" eType="#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
+ eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the role of the internal structure of a classifier with the port to which the connector end is attached."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" lowerBound="1"
+ eType="#//ConnectableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//StructuralFeature #//ConnectableElement #//DeploymentTarget #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;A property represents a set of instances that are owned by a containing classifier instance.&#xD;&#xA;A property has the capability of being a deployment target in a deployment relationship. This enables modeling the deployment to hierarchical nodes that have properties functioning as internal parts.&#xD;&#xA;Property represents a declared state of one or more instances in terms of a named relationship to a value or values. When a property is an attribute of a classifier, the value or values are related to the instance of the classifier by being held in slots of the instance. When a property is an association end, the value or values are related to the instance or instances at the other end(s) of the association. The range of valid values represented by the property can be controlled by setting the property's type.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;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))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false" lowerBound="1"
+ eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isReadOnly is true, the attribute may not be written to after initialization.&#xD;&#xA;If true, the attribute may only be read, and not written."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuralFeature/isReadOnly"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="multiplicity_of_composite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A multiplicity of a composite aggregation must not have an upper bound greater than 1.&#xD;&#xA;A multiplicity on an aggregate end of a composite aggregation must not have an upper bound greater than 1.&#xD;&#xA;isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subsetting_context_conforms" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.&#xD;&#xA;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)))))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefined_property_inherited" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefined property must be inherited from a more general classifier containing the redefining property.&#xD;&#xA;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))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subsetting_rules" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.&#xD;&#xA;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() ))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="navigable_readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only a navigable property can be marked as readOnly.&#xD;&#xA;isReadOnly implies isNavigable()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="derived_union_is_derived" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A derived union is derived.&#xD;&#xA;isDerivedUnion implies isDerived"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="derived_union_is_read_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A derived union is read only.&#xD;&#xA;isDerivedUnion implies isReadOnly"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subsetted_property_names" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A property may not subset a property with the same name.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="binding_to_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A binding of a property template parameter representing an attribute must be to an attribute.&#xD;&#xA;(isAttribute(self) and (templateParameterSubstitution->notEmpty())&#xD;&#xA; implies (templateParameterSubstitution->forAll(ts | isAttribute(ts.formal)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefault" ordered="false" eType="#//String"/>
+ <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ <eOperations name="setDefault" ordered="false" lowerBound="1">
+ <eParameters name="newDefault" ordered="false" lowerBound="1" eType="#//String"/>
+ </eOperations>
+ <eOperations name="setIsComposite" ordered="false" lowerBound="1">
+ <eParameters name="newIsComposite" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ </eOperations>
+ <eOperations name="setOpposite" ordered="false" lowerBound="1">
+ <eParameters name="newOpposite" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="unsetDefault" ordered="false" lowerBound="1"/>
+ <eOperations name="setIsNavigable" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the navigability of this property as indicated."/>
+ </eAnnotations>
+ <eParameters name="isNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new navigability."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getOtherEnd" ordered="false" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the other end of the (binary) association in which this property is a member end."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setBooleanDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified Boolean value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setIntegerDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified integer value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setStringDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified string value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setUnlimitedNaturalDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the specified unlimited natural value."/>
+ </eAnnotations>
+ <eParameters name="value" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The new default value."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="setNullDefaultValue" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Sets the default value for this property to the null value."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isAttribute" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isAttribute() is true if the Property is defined as an attribute of some classifier.&#xD;&#xA;result = Classifier.allInstances->exists(c | c.attribute->includes(p))"/>
+ </eAnnotations>
+ <eParameters name="p" ordered="false" lowerBound="1" eType="#//Property"/>
+ </eOperations>
+ <eOperations name="getOpposite" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;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"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of isComposite is true only if aggregation is composite.&#xD;&#xA;result = (self.aggregation = #composite)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="subsettingContext" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;result = if association->notEmpty()&#xA;then association.endType-type&#xA;else if classifier->notEmpty() then Set{classifier} else Set{} endif&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNavigable() indicates whether it is possible to navigate across the property.&#xD;&#xA;result = not classifier->isEmpty() or association.owningAssociation.navigableOwnedEnd->includes(self)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="class" ordered="false"
+ eType="#//Class" changeable="false" volatile="true" transient="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Class that owns the Property."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
+ eType="#//DataType" eOpposite="#//DataType/ownedAttribute">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DataType that owns this Property."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isDerived is true, the value of the attribute is derived from information elsewhere.&#xD;&#xA;Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerivedUnion" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether the property is derived as the union of all of the properties that are constrained to subset it."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
+ eType="#//String" volatile="true" transient="true" unsettable="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a String that represents a value to be used when no argument is supplied for the Property.&#xD;&#xA;A String that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="aggregation" ordered="false"
+ lowerBound="1" eType="#//AggregationKind" defaultValueLiteral="none">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the kind of aggregation that applies to the Property."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
+ lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="false"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.&#xD;&#xA;This is a derived value, indicating whether the aggregation of the Property is composite or not."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedProperty" ordered="false"
+ upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties that are redefined by this property."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningAssociation" ordered="false"
+ eType="#//Association" eOpposite="#//Association/ownedEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the owning association of this property, if any."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Property/association #//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" ordered="false"
+ eType="#//Property" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subsettedProperty" ordered="false"
+ upperBound="-1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties of which this property is constrained to be a subset."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false"
+ eType="#//Association" eOpposite="#//Association/memberEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the association of which this property is a member, if any."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/associationEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional list of ordered qualifier attributes for the end. If the list is empty, then the Association is not qualified."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="associationEnd" ordered="false"
+ eType="#//Property" eOpposite="#//Property/qualifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the optional association end that owns a qualifier attribute."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeploymentTarget" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployment target is the location for a deployed artifact."/>
+ </eAnnotations>
+ <eOperations name="getDeployedElements" ordered="false" upperBound="-1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = ((self.deployment->collect(deployedArtifact))->collect(manifestation))->collect(utilizedElement)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
+ upperBound="-1" eType="#//Deployment" containment="true" eOpposite="#//Deployment/location">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of Deployments for a DeploymentTarget."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployedElement" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployment is the allocation of an artifact or artifact instance to a deployment target.&#xD;&#xA;A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployedArtifact" ordered="false"
+ upperBound="-1" eType="#//DeployedArtifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Artifacts that are deployed onto a Node. This association specializes the supplier association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"
+ upperBound="-1" eType="#//DeploymentSpecification" containment="true" eOpposite="#//DeploymentSpecification/deployment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of properties that parameterize the deployment and execution of one or more Artifacts."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="location" ordered="false"
+ lowerBound="1" eType="#//DeploymentTarget" eOpposite="#//DeploymentTarget/deployment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DeployedTarget which is the target of a Deployment."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/client"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeployedArtifact" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor."/>
+ </eAnnotations>
+ <eOperations name="deployed_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e. the configured components).&#xD;&#xA;self.deployment->forAll (d | d.location.deployedElements->forAll (de |&#xD;&#xA; de.oclIsKindOf(Component)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.&#xD;&#xA;result = self.deployment->forAll (d | d.location..oclIsKindOf(ExecutionEnvironment))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address'."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="executionLocation" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The location where a component Artifact executes. This may be a local or remote location."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
+ eType="#//Deployment" eOpposite="#//Deployment/configuration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The deployment with which the DeploymentSpecification is associated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Classifier #//DeployedArtifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.&#xD;&#xA;An artifact is the source of a deployment to a node."/>
+ </eAnnotations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedArtifact" ordered="false"
+ upperBound="-1" eType="#//Artifact" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Artifacts that are defined (nested) within the Artifact.&#xD;&#xA;The association is a specialization of the ownedMember association from Namespace to NamedElement.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="manifestation" ordered="false"
+ upperBound="-1" eType="#//Manifestation" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/clientDependency #//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Operations defined for the Artifact. The association is a specialization of the ownedMember association."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes or association ends defined for the Artifact.&#xD;&#xA;The association is a specialization of the ownedMember association.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Manifestation" eSuperTypes="#//Abstraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A manifestation is the concrete physical rendering of one or more model elements by an artifact."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" ordered="false"
+ lowerBound="1" eType="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The model element that is utilized in the manifestation in an Artifact."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//BehavioralFeature #//ParameterableElement #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior.&#xD;&#xA;An operation may invoke both the execution of method behaviors as well as other behavioral responses.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.&#xD;&#xA;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. &#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;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;)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//Parameter" containment="true" eOpposite="#//Parameter/operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the ordered set of formal parameters of this BehavioralFeature.&#xD;&#xA;Specifies the parameters owned by this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//BehavioralFeature/ownedParameter"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="raisedException" ordered="false"
+ upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Types representing exceptions that may be raised during an invocation of this operation."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//BehavioralFeature/raisedException"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
+ eType="#//TemplateParameter" eOpposite="#//OperationTemplateParameter/%duplicates%/parameteredElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="at_most_one_return" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'&#xD;&#xA;self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="only_body_for_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A bodyCondition can only be specified for a query operation.&#xD;&#xA;bodyCondition->notEmpty() implies isQuery"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ <eOperations name="getUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
+ <eOperations name="setIsOrdered" ordered="false" lowerBound="1">
+ <eParameters name="newIsOrdered" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ </eOperations>
+ <eOperations name="setIsUnique" ordered="false" lowerBound="1">
+ <eParameters name="newIsUnique" ordered="false" lowerBound="1" eType="#//Boolean"/>
+ </eOperations>
+ <eOperations name="setLower" ordered="false" lowerBound="1">
+ <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </eOperations>
+ <eOperations name="setType" ordered="false" lowerBound="1">
+ <eParameters name="newType" ordered="false" lowerBound="1" eType="#//Type"/>
+ </eOperations>
+ <eOperations name="setUpper" ordered="false" lowerBound="1">
+ <eParameters name="newUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
+ </eOperations>
+ <eOperations name="getReturnResult" ordered="false" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the (only) return result parameter for this operation."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isOrdered" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().isOrdered else false endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isUnique" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().isUnique else true endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="lowerBound" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().lower else Set{} endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="upperBound" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().upper else Set{} endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getType" ordered="false" lowerBound="1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined.&#xD;&#xA;result = if returnResult()->notEmpty() then returnResult()->any().type else Set{} endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="returnResult" ordered="false" upperBound="-1" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set&#xD;&#xA;result = ownedParameter->select (par | par.direction = #return)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interface" ordered="false"
+ eType="#//Interface" eOpposite="#//Interface/ownedOperation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Interface that owns this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="class" ordered="false"
+ eType="#//Class" eOpposite="#//Class/ownedOperation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The class that owns the operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext #//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuery" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
+ lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="false"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies whether the return parameter is ordered or not, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
+ lowerBound="1" eType="#//Boolean" volatile="true" transient="true" defaultValueLiteral="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies whether the return parameter is unique or not, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
+ eType="#//Integer" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies the lower multiplicity of the return parameter, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
+ eType="#//UnlimitedNatural" volatile="true" transient="true" defaultValueLiteral="1"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies the upper multiplicity of the return parameter, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints on the state of the system when the Operation is invoked."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints specifying the state of the system when the Operation is completed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedOperation" ordered="false"
+ upperBound="-1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Operations that are redefined by this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
+ eType="#//DataType" eOpposite="#//DataType/ownedOperation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The DataType that owns this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext #//NamedElement/namespace #//Feature/featuringClassifier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyCondition" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional Constraint on the result values of an invocation of this Operation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type"
+ volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;Specifies the return result of the operation, if present."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BehavioralFeature" abstract="true" eSuperTypes="#//Namespace #//Feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.&#xD;&#xA;A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method.&#xD;&#xA;A behavioral feature owns zero or more parameter sets."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isDistinguishableFrom" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.&#xD;&#xA;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"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//NamedElement/isDistinguishableFrom"/>
+ <eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
+ <eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="createReturnResult" ordered="false" lowerBound="1" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a return result parameter with the specified name and type."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new return result, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new return result, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//Parameter" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the ordered set of formal parameters of this BehavioralFeature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, then the behavioral feature does not have an implementation, and one must be supplied by a more specific element. If false, the behavioral feature must have an implementation in the classifier or one must be inherited from a more general element."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="method" ordered="false"
+ upperBound="-1" eType="#//Behavior" eOpposite="#//Behavior/specification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="concurrency" ordered="false"
+ lowerBound="1" eType="#//CallConcurrencyKind" defaultValueLiteral="sequential">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a class with isActive being false). Active instances control access to their own behavioral features."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="raisedException" ordered="false"
+ upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Types representing exceptions that may be raised during an invocation of this feature.&#xD;&#xA;The signals that the behavioral feature raises as exceptions."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
+ upperBound="-1" eType="#//ParameterSet" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ParameterSets owned by this BehavioralFeature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Behavior" abstract="true" eSuperTypes="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Behavior is a specification of how its context classifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.&#xD;&#xA;A behavior owns zero or more parameter sets."/>
+ </eAnnotations>
+ <eOperations name="parameters_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameters of the behavior must match the parameters of the implemented behavioral feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="feature_of_context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The implemented behavioral feature must be a feature (possibly inherited) of the context classifier of the behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="must_realize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the implemented behavioral feature has been redefined in the ancestors of the owner of the behavior, then the behavior must realize the latest redefining behavioral feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="most_one_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="There may be at most one behavior for a given pairing of classifier (as owner of the behavior) and behavioral feature (as specification of the behavior).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getContext" ordered="false" eType="#//BehavioredClassifier"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the behavior can be invoked while it is still executing from a previous invocation."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedBehavior" ordered="false"
+ upperBound="-1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
+ eType="#//Parameter" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+ eType="#//BehavioredClassifier" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints specifying what must be fulfilled when the behavior is invoked."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
+ upperBound="-1" eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
+ upperBound="-1" eType="#//ParameterSet" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ParameterSets owned by this Behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
+ eType="#//BehavioralFeature" eOpposite="#//BehavioralFeature/method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. If a behavior does not have a specification, it is directly associated with a classifier (i.e., it is the behavior of the classifier as a whole)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//EncapsulatedClassifier #//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A class describes a set of objects that share the same specifications of features, constraints, and semantics.&#xD;&#xA;A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle.&#xD;&#xA;A class has the capability to have an internal structure and ports.&#xD;&#xA;Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="inherit" ordered="false" upperBound="-1"
+ eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/inherit"/>
+ <eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
+ </contents>
+ <contents xsi:type="ecore:EAttribute" name="isAbstract" ordered="false" lowerBound="1"
+ eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="True when a class is abstract.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/isAbstract"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes (i.e. the properties) owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuredClassifier/ownedAttribute"/>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="passive_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A passive class may not own receptions.&#xD;&#xA;not self.isActive implies self.ownedReception.isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getExtensions" ordered="false" upperBound="-1" eType="#//Extension"/>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isMetaclass" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this class is a metaclass."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
+ eType="#//Classifier" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References all the Classifiers that are defined (nested) within the Class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true" eOpposite="#//Operation/class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operations owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superClass" ordered="false"
+ upperBound="-1" eType="#//Class" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This gives the superclasses of a class."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/general"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isActive" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether an object specified by this class is active or not. If true, then the owning class is referred to as an active class. If false, then such a class is referred to as a passive class."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
+ upperBound="-1" eType="#//Reception" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Receptions that objects of this class are willing to accept."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember #//Classifier/feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
+ upperBound="-1" eType="#//Extension" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Extension/metaclass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BehavioredClassifier" abstract="true"
+ eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behaviored classifier may have an interface realization.&#xD;&#xA;A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself."/>
+ </eAnnotations>
+ <eOperations name="class_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a behavior is classifier behavior, it does not have a specification.&#xD;&#xA;self.classifierBehavior.notEmpty() implies self.specification.isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getImplementedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the interfaces on which this behaviored classifier has an interface realization dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllImplementedInterfaces" ordered="false" upperBound="-1"
+ eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedBehavior" ordered="false"
+ upperBound="-1" eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References behavior specifications owned by a classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifierBehavior" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavior specification that specifies the behavior of the classifier itself."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//BehavioredClassifier/ownedBehavior"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interfaceRealization" ordered="false"
+ upperBound="-1" eType="#//InterfaceRealization" containment="true" eOpposite="#//InterfaceRealization/implementingClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTrigger" ordered="false"
+ upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References Trigger descriptions owned by a Classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterfaceRealization" eSuperTypes="#//Realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+ lowerBound="1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Interface specifying the conformance contract."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="implementingClassifier"
+ ordered="false" lowerBound="1" eType="#//BehavioredClassifier" eOpposite="#//BehavioredClassifier/interfaceRealization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the BehavioredClassifier that owns this Interfacerealization (i.e., the classifier that realizes the Interface to which it points)."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/client"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;Interfaces may include receptions (in addition to operations).&#xD;&#xA;Since an interface specifies conformance characteristics, it does not own detailed behavior specifications. Instead, interfaces may own a protocol state machine that specifies event sequences and pre/post conditions for the operations and receptions described by the interface."/>
+ </eAnnotations>
+ <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of all features owned by an interface must be public.&#xD;&#xA;self.feature->forAll(f | f.visibility = #public)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes (i.e. the properties) owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true" eOpposite="#//Operation/interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operations owned by the class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
+ eType="#//Classifier" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References all the Classifiers that are defined (nested) within the Class."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedInterface" ordered="false"
+ upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References all the Interfaces redefined by this Interface."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
+ upperBound="-1" eType="#//Reception" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Receptions that objects providing this interface are willing to accept."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
+ eType="#//ProtocolStateMachine" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a protocol state machine specifying the legal sequences of the invocation of the behavioral features described in the interface."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself."/>
+ </eAnnotations>
+ <eOperations name="not_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Reception can not be a query.&#xD;&#xA;not self.isQuery"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signal that this reception handles."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence."/>
+ </eAnnotations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attributes owned by the signal."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolStateMachine" eSuperTypes="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol state machine is always defined in the context of a classifier. It specifies which operations of the classifier can be called in which state and under which condition, thus specifying the allowed call sequences on the classifier's operations. A protocol state machine presents the possible and permitted transitions on the instances of its context classifier, together with the operations which carry the transitions. In this manner, an instance lifecycle can be created for a classifier, by specifying the order in which the operations can be activated and the states through which an instance progresses during its existence."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="classifier_context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol state machine must only have a classifier context, not a behavioral feature context.&#xD;&#xA;(not context->isEmpty( )) and specification->isEmpty()"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StateMachine/classifier_context"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="protocol_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All transitions of a protocol state machine must be protocol transitions. (transitions as extended by the ProtocolStateMachines package)&#xD;&#xA;region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="entry_exit_do" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The states of a protocol state machine cannot have entry, exit, or do activity actions.&#xD;&#xA;region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty())))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deep_or_shallow_history" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Protocol state machines cannot have deep or shallow history pseudostates.&#xD;&#xA;region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies&#xA;((v.kind &lt;> #deepHistory) and (v.kind &lt;> #shallowHistory)))))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="ports_connected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If two ports are connected, then the protocol state machine of the required interface (if defined) must be conformant to the protocol state machine of the provided interface (if defined).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"
+ upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Conformance between protocol state machines."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="State machines can be used to express the behavior of part of a system. Behavior is modeled as a traversal of a graph of state nodes interconnected by one or more joined transition arcs that are triggered by the dispatching of series of (event) occurrences. During this traversal, the state machine executes a series of activities associated with various elements of the state machine."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="classifier_context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier context of a state machine cannot be an interface.&#xD;&#xA;context->notEmpty() implies not context.oclIsKindOf(Interface)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.&#xD;&#xA;specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="connection_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connection points of a state machine are pseudostates of kind entry point or exit point.&#xD;&#xA;conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="method" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state machine as the method for a behavioral feature cannot have entry/exit connection points.&#xD;&#xA;specification->notEmpty() implies connectionPoint->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="LCA" ordered="false" lowerBound="1" eType="#//Namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="s1" ordered="false" lowerBound="1" eType="#//State"/>
+ <eParameters name="s2" ordered="false" lowerBound="1" eType="#//State"/>
+ </eOperations>
+ <eOperations name="ancestor" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query ancestor(s1, s2) checks whether s2 is an ancestor state of state s1. context StateMachine::ancestor (s1 : State, s2 : State) : Boolean&#xD;&#xA;&#xD;&#xA;result = if (s2 = s1) then&#xA;true&#xA;else if (s1.container->isEmpty) then&#xA;true&#xA;else if (s2.container->isEmpty) then&#xA;false&#xA;else (ancestor (s1, s2.container))"/>
+ </eAnnotations>
+ <eParameters name="s1" ordered="false" lowerBound="1" eType="#//State"/>
+ <eParameters name="s2" ordered="false" lowerBound="1" eType="#//State"/>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a statemachine are properly related to the redefinition contexts of the specified statemachine to allow this element to redefine the other. The containing classifier of a redefining statemachine must redefine the containing classifier of the redefined statemachine.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//StateMachine"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/stateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The regions owned directly by the state machine."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="submachineState" ordered="false"
+ upperBound="-1" eType="#//State" eOpposite="#//State/submachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
+ upperBound="-1" eType="#//Pseudostate" containment="true" eOpposite="#//Pseudostate/stateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedStateMachine" ordered="false"
+ upperBound="-1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The state machines of which this is an extension."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="#//Namespace #//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region is an orthogonal part of either a composite state or a state machine. It contains states and transitions."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining region is consistent with a redefined region provided that the redefining region is an extension of the redefined region, i.e. it adds vertices and transitions and it redefines states and transitions of the redefined region.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifier in which context this element may be redefined."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="initial_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region can have at most one initial vertex&#xD;&#xA;self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #initial)->size() &lt;= 1&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deep_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region can have at most one deep history vertex&#xD;&#xA;self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #deepHistory)->size() &lt;= 1&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="shallow_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A region can have at most one shallow history vertex&#xD;&#xA;self.subvertex->select(v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #shallowHistory)->size() &lt;= 1&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.&#xD;&#xA;(stateMachine->notEmpty() implies state->isEmpty()) and (state->notEmpty() implies stateMachine->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinition context of a region is the nearest containing statemachine&#xD;&#xA;result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a region are properly related to the redefinition contexts of the specified region to allow this element to redefine the other. The containing statemachine/state of a redefining region must redefine the containing statemachine/state of the redefined region.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//Region"/>
+ </eOperations>
+ <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation containingStateMachine() returns the sate machine in which this Region is defined&#xD;&#xA;result = if stateMachine->isEmpty() &#xA;then&#xA;state.containingStateMachine()&#xA;else&#xA;stateMachine&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="belongsToPSM" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation belongsToPSM () checks if the region belongs to a protocol state machine&#xD;&#xA;result = if not stateMachine->isEmpty() then&#xA;oclIsTypeOf(ProtocolStateMachine)&#xA;else if not state->isEmpty() then&#xA;state.container.belongsToPSM ()&#xA;else false"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subvertex" ordered="false"
+ upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/container">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of vertices that are owned by this region."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transition" ordered="false"
+ upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/container">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of transitions owned by the region. Note that internal transitions are owned by a region, but applies to the source state."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+ eType="#//State" eOpposite="#//State/region">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedRegion" ordered="false"
+ eType="#//Region">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The region of which this region is an extension."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" ordered="false"
+ eType="#//StateMachine" eOpposite="#//StateMachine/region">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A vertex is an abstraction of a node in a state machine graph. In general, it can be the source or destination of any number of transitions."/>
+ </eAnnotations>
+ <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation containingStateMachine() returns the state machine in which this Vertex is defined&#xD;&#xA;result = if not container->isEmpty()&#xA;then&#xA;-- the container is a region&#xA;container.containingStateMachine()&#xA;else if (oclIsKindOf(Pseudostate)) then&#xA;-- entry or exit point?&#xA;if (kind = #entryPoint) or (kind = #exitPoint) then&#xA;stateMachine&#xA;else if (oclIsKindOf(ConnectionPointReference)) then&#xA;state.containingStateMachine() -- no other valid cases possible&#xA;endif&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getIncomings" ordered="false" upperBound="-1" eType="#//Transition"/>
+ <eOperations name="getOutgoings" ordered="false" upperBound="-1" eType="#//Transition"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
+ upperBound="-1" eType="#//Transition" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the transitions entering this vertex."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
+ upperBound="-1" eType="#//Transition" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the transitions departing from this vertex."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
+ eType="#//Region" eOpposite="#//Region/subvertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The region that contains this vertex."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//Namespace #//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A transition is a directed relationship between a source vertex and a target vertex. It may be part of a compound transition, which takes the state machine from one state configuration to another, representing the complete response of the state machine to an occurrence of an event of a particular type."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining transition is consistent with a redefined transition provided that the redefining transition has the following relation to the redefined transition: A redefining transition redefines all properties of the corresponding redefined transition, except the source state and the trigger.&#xD;&#xA;result = (redefinee.oclIsKindOf(Transition) and&#xD;&#xA; let trans: Transition = redefinee.oclAsType(Transition) in&#xD;&#xA; (source() = trans.source() and trigger() = tran.trigger())&#xD;&#xA;redefinee.isRedefinitionContextValid(self)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifier in which context this element may be redefined."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="fork_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork segment must not have guards or triggers.&#xD;&#xA;(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (guard->isEmpty() and trigger->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="join_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join segment must not have guards or triggers.&#xD;&#xA;(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (guard->isEmpty() and trigger->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="fork_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork segment must always target a state.&#xD;&#xA;(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (target.oclIsKindOf(State))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="join_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join segment must always originate from a state.&#xD;&#xA;(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (source.oclIsKindOf(State))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="outgoing_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Transitions outgoing pseudostates may not have a trigger.&#xD;&#xA;source.oclIsKindOf(Pseudostate) and&#xA;((source.kind &lt;> #junction) and (source.kind &lt;> #join) and (source.kind &lt;> #initial)) implies trigger->isEmpty()&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="initial_transition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial transition at the topmost level (region of a statemachine) either has no trigger or it has a trigger with the stereotype &lt;&lt;create>>.&#xD;&#xA;self.source.oclIsKindOf(Pseudostate) implies&#xA;(self.source.oclAsType(Pseudostate).kind = #initial) implies&#xA;(self.source.container = self.stateMachine.top) implies&#xA;((self.trigger->isEmpty) or&#xA;(self.trigger.stereotype.name = 'create'))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signatures_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In case of more than one trigger, the signatures of these must be compatible in case the parameters of the signal are assigned to local variables/attributes.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinition context of a transition is the nearest containing statemachine.&#xD;&#xA;result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query containingStateMachine() returns the state machine that contains the transition either directly or transitively.&#xD;&#xA;result = container.containingStateMachine()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
+ eType="#//TransitionKind" defaultValueLiteral="external">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the precise type of the transition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
+ lowerBound="1" eType="#//Region" eOpposite="#//Region/transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the region that owns this transition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" ordered="false"
+ eType="#//Transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The transition that is redefined by this transition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A guard is a constraint that provides a fine-grained control over the firing of the transition. The guard is evaluated when an event occurrence is dispatched by the state machine. If the guard is true at that time, the transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="effect" ordered="false"
+ eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies an optional behavior to be performed when the transition fires."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
+ upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the triggers that may fire the transition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the target vertex that is reached when the transition is taken."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" eType="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the originating vertex (state or pseudostate) of the transition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TransitionKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="TransitionKind is an enumeration type.&#xD;&#xA;kind=#local implies owner.source.isComposite&#xD;&#xA;kind=#external implies owner.source.isComposite"/>
+ </eAnnotations>
+ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
+ <details key="constraints" value="state_is_local state_is_external"/>
+ </eAnnotations>
+ <eLiterals name="internal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Implies that the transition, if triggered, occurs without exiting or entering the source state. Thus, it does not cause a state change. This means that the entry or exit condition of the source state will not be invoked. An internal transition can be taken even if the state machine is in one or more regions nested within this state."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="local" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Implies that the transition, if triggered, will not exit the composite (source) state, but it will apply to any state within the composite state, and these will be exited and entered."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="external" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Implies that the transition, if triggered, will exit the composite (source) state."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Trigger" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A trigger relates an event to a behavior that may affect an instance of the classifier.&#xD;&#xA;A trigger specification may be qualified by the port on which the event occurred."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" eType="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The event that causes the trigger."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
+ eType="#//Port">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A optional port of the receiver object on which the behavioral feature is invoked."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An event is the specification of some occurrence that may potentially trigger effects by an object."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A port is a property of a classifier that specifies a distinct interaction point between that classifier and its environment or between the (behavior of the) classifier and its internal parts. Ports are connected to properties of the classifier by connectors through which requests can be made to invoke the behavioral features of a classifier. A Port may specify the services a classifier provides (offers) to its environment as well as the services that a classifier expects (requires) of its environment.&#xD;&#xA;A port has an associated protocol state machine."/>
+ </eAnnotations>
+ <eOperations name="required_interfaces" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The required interfaces of a port must be provided by elements to which the port is connected.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="port_aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Port.aggregation must be composite.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="port_destroyed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="When a port is destroyed, all connectors attached to this port will be destroyed also.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="default_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A defaultValue for port cannot be specified when the type of the Port is an Interface&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getProvideds" ordered="false" upperBound="-1" eType="#//Interface"/>
+ <eOperations name="getRequireds" ordered="false" upperBound="-1" eType="#//Interface"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether requests arriving at this port are sent to the classifier behavior of this classifier. Such ports are referred to as behavior port. Any invocation of a behavioral feature targeted at a behavior port will be handled by the instance of the owning classifier itself, rather than by any instances that this classifier may contain."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true indicates that this port is used to provide the published functionality of a classifier; if false, this port is used to implement the classifier but is not part of the essential externally-visible functionality of the classifier and can, therefore, be altered or deleted along with the internal implementation of the classifier and other properties that are considered part of its implementation."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the interfaces specifying the set of operations and receptions which the classifier expects its environment to handle. This association is derived as the set of interfaces required by the type of the port or its supertypes."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"
+ upperBound="-1" eType="#//Port">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the interfaces specifying the set of operations and receptions which the classifier offers to its environment, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived from the interfaces realized by the type of the port or by the type of the port, if the port was typed by an interface.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
+ eType="#//ProtocolStateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References an optional protocol state machine which describes valid interactions at this interaction point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Namespace #//RedefinableElement #//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state models a situation during which some (usually implicit) invariant condition holds.&#xD;&#xA;The states of protocol state machines are exposed to the users of their context classifiers. A protocol state represents an exposed stable situation of its context classifier: when an instance of the classifier is not processing any operation, users of this instance can always know its state configuration."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isConsistentWith() specifies that a redefining state is consistent with a redefined state provided that the redefining state is an extension of the redefined state: A simple state can be redefined (extended) to become a composite state (by adding a region) and a composite state can be redefined (extended) by adding regions and by adding vertices, states, and transitions to inherited regions. All states may add or replace entry, exit, and 'doActivity' actions.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="containingStateMachine" ordered="false"
+ lowerBound="1" eType="#//StateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query containingStateMachine() returns the state machine that contains the state either directly or transitively.&#xD;&#xA;result = container.containingStateMachine()"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Vertex/containingStateMachine"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+ upperBound="-1" eType="#//Classifier" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the classifier in which context this element may be redefined."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="submachine_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only submachine states can have connection point references.&#xD;&#xA;isSubmachineState implies connection->notEmpty ( )"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="destinations_or_sources_of_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connection point references used as destinations/sources of transitions associated with a submachine state must be defined as entry/exit points in the submachine state machine.&#xD;&#xA;self.isSubmachineState implies (self.connection->forAll (cp |&#xD;&#xA;cp.entry->forAll (p | p.statemachine = self.submachine) and&#xD;&#xA;cp.exit->forAll (p | p.statemachine = self.submachine)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="submachine_or_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state is not allowed to have both a submachine and regions.&#xD;&#xA;isComposite implies not isSubmachineState"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="composite_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only composite states can have entry or exit pseudostates defined.&#xD;&#xA;connectionPoint->notEmpty() implies isComoposite"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="entry_or_exit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only entry or exit pseudostates can serve as connection points.&#xD;&#xA;connectionPoint->forAll(cp|cp.kind = #entry or cp.kind = #exit)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isSimple" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A simple state is a state without any regions.&#xD;&#xA;result = region.isEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A composite state is a state with at least one region.&#xD;&#xA;result = region.notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isOrthogonal" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An orthogonal state is a composite state with at least 2 regions&#xD;&#xA;result = (region->size () > 1)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isSubmachineState" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only submachine states can have a reference statemachine.&#xD;&#xA;result = submachine.notEmpty()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The redefinition context of a state is the nearest containing statemachine.&#xD;&#xA;result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of a state are properly related to the redefinition contexts of the specified state to allow this element to redefine the other. The containing region of a redefining state must redefine the containing region of the redefined state.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isRedefinitionContextValid"/>
+ <eParameters name="redefined" ordered="false" lowerBound="1" eType="#//State"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isComposite=true is said to be a composite state. A composite state is a state that contains at least one region."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isOrthogonal=true is said to be an orthogonal composite state. An orthogonal composite state contains two or more regions."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isSimple=true is said to be a simple state. A simple state does not have any regions and it does not refer to any submachine state machine."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state with isSubmachineState=true is said to be a submachine state. Such a state refers to a state machine (submachine)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="submachine" ordered="false"
+ eType="#//StateMachine" eOpposite="#//StateMachine/submachineState">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The state machine that is to be inserted in place of the (submachine) state."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"
+ upperBound="-1" eType="#//ConnectionPointReference" containment="true" eOpposite="#//ConnectionPointReference/state">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entry and exit connection points used in conjunction with this (submachine) state, i.e. as targets and sources, respectively, in the region with the submachine state. A connection point reference references the corresponding definition of a connection point pseudostate in the statemachine referenced by the submachinestate."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
+ upperBound="-1" eType="#//Pseudostate" containment="true" eOpposite="#//Pseudostate/state">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entry and exit pseudostates of a composite state. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite states."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedState" ordered="false"
+ eType="#//State">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The state of which this state is a redefinition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" ordered="false"
+ eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies conditions that are always true when this state is the current state. In protocol state machines, state invariants are additional conditions to the preconditions of the outgoing transitions, and to the postcondition of the incoming transitions.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
+ eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional behavior that is executed whenever this state is entered regardless of the transition taken to reach the state. If defined, entry actions are always executed to completion prior to any internal behavior or transitions performed within the state.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" eType="#//Behavior"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional behavior that is executed whenever this state is exited regardless of which transition was taken out of the state. If defined, exit actions are always executed to completion only after all internal activities and transition actions have completed execution."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" ordered="false"
+ eType="#//Behavior" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional behavior that is executed while being in the state. The execution starts when this state is entered, and stops either by itself, or when the state is exited, whichever comes first."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deferrableTrigger" ordered="false"
+ upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of triggers that are candidates to be retained by the state machine if they trigger no transitions out of the state (not consumed). A deferred trigger is retained until the state machine reaches a state configuration where it is no longer deferred.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
+ upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/state">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The regions owned directly by the state."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connection point reference represents a usage (as part of a submachine state) of an entry/exit point defined in the statemachine reference by the submachine state."/>
+ </eAnnotations>
+ <eOperations name="entry_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entry Pseudostates must be Pseudostates with kind entryPoint.&#xD;&#xA;entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="exit_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The exit Pseudostates must be Pseudostates with kind exitPoint.&#xD;&#xA;exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
+ upperBound="-1" eType="#//Pseudostate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The entryPoint kind pseudo states corresponding to this connection point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" upperBound="-1"
+ eType="#//Pseudostate">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The exitPoints kind pseudo states corresponding to this connection point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+ eType="#//State" eOpposite="#//State/connection">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The State in which the connection point refreshens are defined."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A pseudostate is an abstraction that encompasses different types of transient vertices in the state machine graph."/>
+ </eAnnotations>
+ <eOperations name="initial_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial vertex can have at most one outgoing transition.&#xD;&#xA;(self.kind = #initial) implies (self.outgoing->size &lt;= 1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="history_vertices" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="History vertices can have at most one outgoing transition.&#xD;&#xA;((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies&#xA;(self.outgoing->size &lt;= 1)&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="join_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a join vertex must have at least two incoming transitions and exactly one outgoing transition.&#xD;&#xA;(self.kind = #join) implies&#xA;((self.outgoing->size = 1) and (self.incoming->size >= 2))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="transitions_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All transitions incoming a join vertex must originate in different regions of an orthogonal state.&#xD;&#xA;(self.kind = #join) implies&#xA; self.incoming->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="fork_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a fork vertex must have at least two outgoing transitions and exactly one incoming transition.&#xD;&#xA;(self.kind = #fork) implies&#xA;((self.incoming->size = 1) and (self.outgoing->size >= 2))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="transitions_outgoing" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.&#xD;&#xA;(self.kind = #fork) implies&#xA; self.outgoing->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="junction_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a junction vertex must have at least one incoming and one outgoing transition.&#xD;&#xA;(self.kind = #junction) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="choice_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete statemachine, a choice vertex must have at least one incoming and one outgoing transition.&#xD;&#xA;(self.kind = #choice) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="outgoing_from_initial" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The outgoing transition from and initial vertex may have a behavior, but not a trigger or a guard.&#xD;&#xA;(self.kind = #initial) implies (self.outgoing.guard->isEmpty()&#xD;&#xA; and self.outgoing.trigger->isEmpty())"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
+ eType="#//PseudostateKind" defaultValueLiteral="initial">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" ordered="false"
+ eType="#//StateMachine" eOpposite="#//StateMachine/connectionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="state" ordered="false"
+ eType="#//State" eOpposite="#//State/connectionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The State that owns this pseudostate and in which it appears."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PseudostateKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="PseudostateKind is an enumeration type."/>
+ </eAnnotations>
+ <eLiterals name="initial">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="deepHistory" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="shallowHistory" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="join" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="fork" value="4">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices&#xD;&#xA;(i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="junction" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below)."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="choice" value="6">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above)."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="entryPoint" value="7">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="exitPoint" value="8">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="terminate" value="9">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolConformance" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Protocol state machines can be redefined into more specific protocol state machines, or into behavioral state machines. Protocol conformance declares that the specific protocol state machine specifies a protocol that conforms to the general state machine one, or that the specific behavioral state machine abide by the protocol of the general protocol state machine."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalMachine" ordered="false"
+ lowerBound="1" eType="#//ProtocolStateMachine">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the protocol state machine to which the specific state machine conforms."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" ordered="false"
+ lowerBound="1" eType="#//ProtocolStateMachine" eOpposite="#//ProtocolStateMachine/conformance">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the state machine which conforms to the general state machine."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"
+ eSuperTypes="#//StructuredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier has the ability to own ports as specific and type checked interaction points."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"
+ upperBound="-1" eType="#//Port" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a set of ports that an encapsulated classifier owns."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//StructuredClassifier/ownedAttribute"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"
+ eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances."/>
+ </eAnnotations>
+ <eOperations name="multiplicities" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicities on connected elements must be consistent.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties owned by the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//StructuredClassifier/role #//Namespace/ownedMember #//Classifier/attribute"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"
+ eType="#//Property" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"
+ eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the roles that instances may play in this classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/member"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"
+ upperBound="-1" eType="#//Connector" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the connectors owned by the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.&#xD;&#xA;A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the internal realization of that behavior by the component's parts. It represents the forwarding of signals (operation requests and events): a signal that arrives at a port that has a delegation connector to a part or to another port will be passed on to that target for handling.&#xD;&#xA;An assembly connector is a connector between two components that defines that one component provides the services that another component requires. An assembly connector is a connector that is defined from a required interface or port to a provided interface or port."/>
+ </eAnnotations>
+ <eOperations name="types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connectable elements attached to the ends of a connector must be compatible.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="roles" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="between_interfaces_ports" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A delegation connector must only be defined between used Interfaces or Ports of the same kind, e.g. between two provided Ports or between two required Ports.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="between_interface_port_implements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a delegation connector is defined between a used Interface or Port and an internal Part Classifier, then that Classifier must have an 'implements' relationship to the Interface type of that Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="between_interface_port_signature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a delegation connector is defined between a source Interface or Port and a target Interface or Port, then the target Interface must support a signature compatible subset of Operations of the source Interface or Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="union_signature_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In a complete model, if a source Port has delegation connectors to a set of delegated target Ports, then the union of the Interfaces of these target Ports must be signature compatible with the Interface that types the source Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="assembly_connector" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An assembly connector must only be defined from a required Interface or Ports to a provided Interface or Port.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An optional association that specifies the link corresponding to this connector."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
+ upperBound="-1" eType="#//Connector">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"
+ eType="#//ConnectorEnd" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//ConnectorKind"
+ unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates the kind of connector."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+ upperBound="-1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of Behaviors that specify the valid interaction patterns across the connector."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ConnectorKind is an enumeration type."/>
+ </eAnnotations>
+ <eLiterals name="assembly">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the connector is an assembly connector."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="delegation" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the connector is a delegation connector."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1" eType="#//ExtensionEnd"
+ containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the end of the extension that is typed by a Stereotype."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Association/ownedEnd"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="non_owned_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The non-owned end of an Extension is typed by a Class.&#xD;&#xA;metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="is_binary" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An Extension is binary, i.e., it has only two memberEnds.&#xD;&#xA;memberEnd->size() = 2"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getStereotypeEnd" ordered="false" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass)."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getStereotype" ordered="false" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the stereotype that extends a metaclass through this extension."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="metaclassEnd" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).&#xD;&#xA;result = memberEnd->reject(ownedEnd)"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMetaclass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).&#xD;&#xA;result = metaclassEnd().type"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isRequired" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.&#xD;&#xA;result = (ownedEnd->lowerBound() = 1)"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRequired" ordered="false"
+ lowerBound="1" eType="#//Boolean" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="false" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metaclass" ordered="false"
+ lowerBound="1" eType="#//Class" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//Class/extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExtensionEnd" eSuperTypes="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An extension end is used to tie an extension to a stereotype when extending a metaclass.&#xD;&#xA;The default multiplicity of an extension end is 0..1."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="getLower" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="redefines" references="#//MultiplicityElement/getLower"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="setLower" ordered="false" lowerBound="1">
+ <eAnnotations source="redefines" references="#//MultiplicityElement/setLower"/>
+ <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="lowerBound" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default&#xD;&#xA;lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.&#xD;&#xA;result = lowerBound = if lowerValue->isEmpty() then 0 else lowerValue->IntegerValue() endif"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//MultiplicityElement/lowerBound"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TypedElement/type"/>
+ </contents>
+ <contents xsi:type="ecore:EAttribute" name="lower" ordered="false" eType="#//Integer"
+ volatile="true" transient="true" defaultValueLiteral="0" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//MultiplicityElement/lower"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of ExtensionEnd is 0..1 or 1.&#xD;&#xA;(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The aggregation of an ExtensionEnd is composite.&#xD;&#xA;self.aggregation = #composite"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass."/>
+ </eAnnotations>
+ <eOperations name="name_not_clash" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Stereotype names should not clash with keyword names for the extended model element.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="generalize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Stereotype may only generalize or specialize another Stereotype.&#xD;&#xA;generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) "/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createExtension" ordered="false" lowerBound="1" eType="#//Extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (required) extension of the specified metaclass with this stereotype."/>
+ </eAnnotations>
+ <eParameters name="metaclass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The metaclass for the new extension."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isRequired" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new extension should be required."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getProfile" ordered="false" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the profile that owns this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getKeyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the localized keyword for this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getKeyword" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the keyword for this stereotype, localized if indicated."/>
+ </eAnnotations>
+ <eParameters name="localize" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to localize the keyword."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getExtendedMetaclasses" ordered="false" upperBound="-1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the metaclasses extended by this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAllExtendedMetaclasses" ordered="false" upperBound="-1"
+ eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the current definition (Ecore representation) of this stereotype."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="createIcon" ordered="false" lowerBound="1" eType="#//Image">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an icon with the specified location for this stereotype."/>
+ </eAnnotations>
+ <eParameters name="location" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The location for the new icon."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createIcon" ordered="false" lowerBound="1" eType="#//Image">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an icon with the specified format and content for this stereotype."/>
+ </eAnnotations>
+ <eParameters name="format" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The format for the new icon."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="content" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The content for the new icon."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="icon" ordered="false" upperBound="-1"
+ eType="#//Image" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Image" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Physical definition of a graphical image."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="content" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="format" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP.&#xD;&#xA;&#xD;&#xA;In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Profile" eSuperTypes="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain."/>
+ </eAnnotations>
+ <eOperations name="metaclass_reference_not_specialized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element imported as a metaclassReference is not specialized or generalized in a Profile.&#xD;&#xA;self.metaclassReference.importedElement->&#xD;&#xA; select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA; (c.generalization.namespace = self or&#xD;&#xA; (c.specialization.namespace = self) )->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="references_same_metamodel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.&#xD;&#xA;self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA; union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="create" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile."/>
+ </eAnnotations>
+ <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier of which to create an instance."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedStereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new stereotype, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new stereotype should be abstract."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isDefined" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this profile is defined."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="define" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines this profile by (re)creating Ecore representations of its current contents."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="define" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context."/>
+ </eAnnotations>
+ <eParameters name="options" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The options to use."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
+ <eTypeArguments eClassifier="#//String"/>
+ <eTypeArguments eClassifier="#//String"/>
+ </eGenericType>
+ </eParameters>
+ <eParameters name="diagnostics" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context" ordered="false" lowerBound="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the current definition (Ecore representation) of this profile."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the current definition (Ecore representation) of the specified named element in this profile."/>
+ </eAnnotations>
+ <eParameters name="namedElement" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The named element whose definition to retrieve."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getReferencedMetaclasses" ordered="false" upperBound="-1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the metaclasses referenced by this profile."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getReferencedMetamodels" ordered="false" upperBound="-1" eType="#//Model">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the metamodels referenced by this profile."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOwnedExtensions" ordered="false" upperBound="-1" eType="#//Extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the extensions owned by this profile, excluding non-required extensions if indicated."/>
+ </eAnnotations>
+ <eParameters name="requiredOnly" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether to retrieve only required extensions."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedStereotype" ordered="false"
+ upperBound="-1" eType="#//Stereotype" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Stereotypes that are owned by the Profile."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Package/packagedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metaclassReference" ordered="false"
+ upperBound="-1" eType="#//ElementImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a metaclass that may be extended."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/elementImport"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metamodelReference" ordered="false"
+ upperBound="-1" eType="#//PackageImport">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a package containing (directly or indirectly) metaclasses that may be extended."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/packageImport"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="isMetamodel" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines whether this model is a metamodel."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name of the viewpoint that is expressed by a model (This name may refer to a profile definition)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A parameter set is an element that provides alternative sets of inputs or outputs that a behavior may use."/>
+ </eAnnotations>
+ <eOperations name="same_parameterized_entity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="two_parameter_sets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Two parameter sets cannot have exactly the same set of parameters.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Parameters in the parameter set."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="CallConcurrencyKind is an enumeration type."/>
+ </eAnnotations>
+ <eLiterals name="sequential">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No concurrency management mechanism is associated with the operation and, therefore, concurrency conflicts may occur. Instances that invoke a behavioral feature need to coordinate so that only one invocation to a target on any behavioral feature occurs at once."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="guarded" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Multiple invocations of a behavioral feature may occur simultaneously to one instance, but only one is allowed to commence. The others are blocked until the performance of the first behavioral feature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocks."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="concurrent" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataType" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="inherit" ordered="false" upperBound="-1"
+ eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Classifier/inherit"/>
+ <eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter names for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter types for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="returnType" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The return type for the new operation, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="type" ordered="false" eType="#//Type">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type for the new attribute, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="lower" ordered="false" lowerBound="1" eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The lower bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The upper bound for the new attribute."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+ eType="#//Property" containment="true" eOpposite="#//Property/datatype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Attributes owned by the DataType."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/attribute #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
+ eType="#//Operation" containment="true" eOpposite="#//Operation/datatype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Operations owned by the DataType."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Classifier/feature #//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperationTemplateParameter" eSuperTypes="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An operation template parameter exposes an operation as a formal parameter for a template."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//Operation/%duplicates%/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation for this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuralFeature" abstract="true" eSuperTypes="#//Feature #//TypedElement #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="States whether the feature's value may be modified by a client."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="AggregationKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property."/>
+ </eAnnotations>
+ <eLiterals name="none">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the property has no aggregation."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="shared" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the property has a shared aggregation."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="composite" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts)."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ParameterDirectionKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters."/>
+ </eAnnotations>
+ <eLiterals name="in">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed into the behavioral element by the caller."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="inout" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="out" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed from a behavioral element out to the caller."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="return" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that parameter values are passed as return values from a behavioral element back to the caller."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The datatype ParameterEffectKind is an enumeration that indicates the effect of a behavior on values passed in or out of its parameters."/>
+ </eAnnotations>
+ <eLiterals name="create">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior creates values."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="read" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior reads values."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="update" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior updates values."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="delete" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that the behavior deletes values."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CollaborationUse" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collaboration use represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration use shows how the pattern described by a collaboration is applied in a given context, by binding specific entities from that context to the roles of the collaboration. Depending on the context, these entities could be structural features of a classifier, instance specifications, or even roles in some containing collaboration. There may be multiple occurrences of a given collaboration within a classifier, each involving a different set of roles and connectors. A given role or connector may be involved in multiple occurrences of the same or different collaborations.&#xD;&#xA;Associated dependencies map features of the collaboration type to features in the classifier. These dependencies indicate which role in the classifier plays which role in the collaboration."/>
+ </eAnnotations>
+ <eOperations name="client_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All the client elements of a roleBinding are in one classifier and all supplier elements of a roleBinding are in one collaboration and they are compatible.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="every_role" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Every role in the collaboration is bound within the collaboration use to a connectable element within the classifier or operation.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="connectors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The connectors in the classifier connect according to the connectors in the collaboration&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+ eType="#//Collaboration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="roleBinding" ordered="false"
+ upperBound="-1" eType="#//Dependency" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles).&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Collaboration" eSuperTypes="#//BehavioredClassifier #//StructuredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A collaboration use represents the application of the pattern described by a collaboration to a specific situation involving specific classes or instances playing the roles of the collaboration."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="collaborationRole" ordered="false"
+ upperBound="-1" eType="#//ConnectableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//StructuredClassifier/role"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system."/>
+ </eAnnotations>
+ <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A UseCase must have a name.&#xD;&#xA;self.name -> notEmpty ()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="UseCases can only be involved in binary Associations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_association_to_use_case" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="UseCases can not have Associations to UseCases specifying the same subject.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="cannot_include_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A use case cannot include use cases that directly or indirectly include it.&#xD;&#xA;not self.allIncludedUseCases()->includes(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="allIncludedUseCases" ordered="false" upperBound="-1" eType="#//UseCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.&#xD;&#xA;result = self.include->union(self.include->collect(in | in.allIncludedUseCases()))"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="include" ordered="false"
+ upperBound="-1" eType="#//Include" containment="true" eOpposite="#//Include/includingCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Include relationships owned by this use case."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extend" ordered="false"
+ upperBound="-1" eType="#//Extend" containment="true" eOpposite="#//Extend/extension">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Extend relationships owned by this use case."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extensionPoint" ordered="false"
+ upperBound="-1" eType="#//ExtensionPoint" containment="true" eOpposite="#//ExtensionPoint/useCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ExtensionPoints owned by the use case."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subject" ordered="false"
+ upperBound="-1" eType="#//Classifier" eOpposite="#//Classifier/useCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Include" eSuperTypes="#//NamedElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An include relationship defines that a use case contains the behavior defined in another use case."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="addition" ordered="false"
+ lowerBound="1" eType="#//UseCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that is to be included.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="includingCase" ordered="false"
+ lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/include">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case which will include the addition and owns the include relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case."/>
+ </eAnnotations>
+ <eOperations name="extension_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The extension points referenced by the extend relationship must belong to the use case that is being extended.&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" ordered="false"
+ lowerBound="1" eType="#//UseCase">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that is being extended."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
+ eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extensionLocation" lowerBound="1"
+ upperBound="-1" eType="#//ExtensionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.)&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
+ lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extend">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that represents the extension and owns the extend relationship."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExtensionPoint" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship."/>
+ </eAnnotations>
+ <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ExtensionPoint must have a name.&#xD;&#xA;self.name->notEmpty ()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
+ lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extensionPoint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the use case that owns this extension point."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RedefinableTemplateSignature" eSuperTypes="#//RedefinableElement #//TemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A redefinable template signature supports the addition of formal template parameters in a specialization of a template classifier."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isConsistentWith" ordered="false"
+ lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = redefinee.oclIsKindOf(RedefineableTemplateSignature)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//RedefinableElement/isConsistentWith"/>
+ <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="inherited_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The inherited parameters are the parameters of the extended template signature.&#xD;&#xA;if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getInheritedParameters" ordered="false" upperBound="-1" eType="#//TemplateParameter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="extendedSignature" ordered="false"
+ upperBound="-1" eType="#//RedefinableTemplateSignature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template signature that is extended by this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inheritedParameter" ordered="false"
+ upperBound="-1" eType="#//TemplateParameter" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The formal template parameters of the extendedSignature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//TemplateSignature/parameter"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier" changeable="false" volatile="true" transient="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier that owns this template signature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinitionContext"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassifierTemplateParameter" eSuperTypes="#//TemplateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier template parameter exposes a classifier as a formal template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
+ lowerBound="1" eType="#//ParameterableElement" eOpposite="#//Classifier/%duplicates%/templateParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameterable classifier for this template parameter."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//TemplateParameter/parameteredElement"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="has_constraining_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If &quot;allowSubstitutable&quot; is true, then there must be a constrainingClassifier.&#xD;&#xA;allowSubstitutable implies constrainingClassifier->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultClassifier" ordered="false"
+ eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="constrainingClassifier"
+ ordered="false" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringExpression" eSuperTypes="#//Expression #//TemplateableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;result = if subExpression->notEmpty()&#xA;then subExpression->iterate(se; stringValue = ‘| stringValue.concat(se.stringValue()))&#xA;else operand->iterate()(op; stringValue = ‘ | stringValue.concat(op.value))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="operands" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All the operands of a StringExpression must be LiteralStrings&#xD;&#xA;operand->forAll (op | op.oclIsKindOf (LiteralString))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="subexpressions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a StringExpression has sub-expressions, it cannot have operands and vice versa (this avoids the problem of having to&#xA;define a collating sequence between operands and subexpressions).&#xA;&#xD;&#xA;if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subExpression" ordered="false"
+ upperBound="-1" eType="#//StringExpression" containment="true" eOpposite="#//StringExpression/owningExpression">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The StringExpressions that constitute this StringExpression."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningExpression" ordered="false"
+ eType="#//StringExpression" eOpposite="#//StringExpression/subExpression">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The string expression of which this expression is a substring."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The symbol associated with the node in the expression tree."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operand" upperBound="-1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies a sequence of operands."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Usage" eSuperTypes="#//Dependency">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageMerge" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A package merge defines how the contents of one package are extended by the contents of another package."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mergedPackage" ordered="false"
+ lowerBound="1" eType="#//Package">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Package that is to be merged with the receiving package of the PackageMerge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="receivingPackage" ordered="false"
+ lowerBound="1" eType="#//Package" eOpposite="#//Package/packageMerge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Package that is being extended with the contents of the merged package of the PackageMerge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProfileApplication" eSuperTypes="#//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A profile application is used to show which profiles have been applied to a package."/>
+ </eAnnotations>
+ <eOperations name="getAppliedDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the definition (Ecore representation) of the profile associated with this profile application."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getAppliedDefinition" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ENamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application."/>
+ </eAnnotations>
+ <eParameters name="namedElement" ordered="false" lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The named element for which to retrieve the applied definition."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="appliedProfile" ordered="false"
+ lowerBound="1" eType="#//Profile">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Profiles that are applied to a Package through this ProfileApplication."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStrict" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="applyingPackage" ordered="false"
+ lowerBound="1" eType="#//Package" eOpposite="#//Package/profileApplication">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The package that owns the profile application."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//DataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An enumeration is a data type whose values are enumerated in the model as enumeration literals."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedLiteral" upperBound="-1"
+ eType="#//EnumerationLiteral" containment="true" eOpposite="#//EnumerationLiteral/enumeration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of literals for this Enumeration."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumerationLiteral" eSuperTypes="#//InstanceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An enumeration literal is a user-defined data value for an enumeration."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enumeration" ordered="false"
+ eType="#//Enumeration" eOpposite="#//Enumeration/ownedLiteral">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Enumeration that this EnumerationLiteral is a member of."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//DeploymentTarget #//PackageableElement #//DeployedArtifact">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An instance specification is a model element that represents an instance in a modeled system.&#xD;&#xA;An instance specification has the capability of being a deployment target in a deployment relationship, in the case that it is an instance of a node. It is also has the capability of being a deployed artifact, if it is an instance of an artifact."/>
+ </eAnnotations>
+ <eOperations name="defining_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.&#xD;&#xA;slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.&#xD;&#xA;classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An InstanceSpecification can be a DeploymentTarget if it is the instance specification of a Node and functions as a part in the internal structure of an encompassing Node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="deployment_artifact" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An InstanceSpecification can be a DeployedArtifact if it is the instance specification of an Artifact.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="slot" ordered="false" upperBound="-1"
+ eType="#//Slot" containment="true" eOpposite="#//Slot/owningInstance">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A specification of how to compute, derive, or construct the instance."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Slot" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="definingFeature" ordered="false"
+ lowerBound="1" eType="#//StructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The structural feature that specifies the values that may be held by the slot."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" upperBound="-1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value or values corresponding to the defining feature for the owning instance specification."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owningInstance" ordered="false"
+ lowerBound="1" eType="#//InstanceSpecification" eOpposite="#//InstanceSpecification/slot">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The instance specification that owns this slot."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralSpecification" abstract="true"
+ eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal specification identifies a literal constant being modeled."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralInteger" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal integer is a specification of an integer value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="integerValue" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query integerValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/integerValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//Integer" defaultValueLiteral="0">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified Integer value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralString" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal string is a specification of a string value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="integerValue" ordered="false" lowerBound="1"
+ eType="#//Integer">
+ <eAnnotations source="redefines" references="#//ValueSpecification/integerValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="unlimitedValue" ordered="false"
+ lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="redefines" references="#//ValueSpecification/unlimitedValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query stringValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified String value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralBoolean" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal Boolean is a specification of a Boolean value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="booleanValue" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query booleanValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/booleanValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified Boolean value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralNull" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal null specifies the lack of a value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isNull" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isNull() returns true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isNull"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceValue" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An instance value is a value specification that identifies an instance."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="instance" ordered="false"
+ lowerBound="1" eType="#//InstanceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The instance that is the specified value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralUnlimitedNatural" eSuperTypes="#//LiteralSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A literal unlimited natural is a specification of an unlimited natural number."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="isComputable" ordered="false" lowerBound="1"
+ eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query isComputable() is redefined to be true.&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/isComputable"/>
+ </contents>
+ <contents xsi:type="ecore:EOperation" name="unlimitedValue" ordered="false"
+ lowerBound="1" eType="#//UnlimitedNatural">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The query unlimitedValue() gives the value.&#xD;&#xA;result = value"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ValueSpecification/unlimitedValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="#//UnlimitedNatural" defaultValueLiteral="0">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specified UnlimitedNatural value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueBehavior" eSuperTypes="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An behavior with implementation-specific semantics."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the behavior in one or more languages."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Languages the body strings use in the same order as the body strings."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionBehavior" eSuperTypes="#//OpaqueBehavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A function behavior is an opaque behavior that does not access or modify any objects or other external data."/>
+ </eAnnotations>
+ <eOperations name="one_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A function behavior has at least one output parameter.&#xD;&#xA;self.ownedParameters->&#xD;&#xA; select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="types_of_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The types of parameters are all data types, which may not nest anything but other datatypes.&#xD;&#xA;def: hasAllDataTypeAttributes(d : DataType) : Boolean =&#xD;&#xA; d.ownedAttribute->forAll(a |&#xD;&#xA; a.type.oclIsTypeOf(DataType) and&#xD;&#xA; hasAllDataTypeAttributes(a.type))&#xD;&#xA;self.ownedParameters->forAll(p | p.type.notEmpty() and&#xD;&#xA; p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action with implementation-specific semantics."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" unique="false" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the action in one or more languages."/>
+ </eAnnotations>
+ <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+ <details key="kind" value="element"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" upperBound="-1"
+ eType="#//String" unsettable="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Languages the body strings use, in the same order as the body strings"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputValue" ordered="false"
+ upperBound="-1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Provides input to the action."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputValue" ordered="false"
+ upperBound="-1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Takes output from the action."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Action" abstract="true" eSuperTypes="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;An action represents a single step within an activity, that is, one that is not further decomposed within the activity.&#xD;&#xA;An action has pre- and post-conditions."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="output" upperBound="-1"
+ eType="#//OutputPin" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of output pins connected to the Action. The action places its results onto pins in this set."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
+ eType="#//InputPin" changeable="false" volatile="true" transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of input pins connected to the Action. These are among the total set of inputs."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+ eType="#//Classifier" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier that owns the behavior of which this action is a part."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="localPrecondition" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint that must be satisfied when execution is started."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="localPostcondition" ordered="false"
+ upperBound="-1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint that must be satisfied when executed is completed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutableNode" abstract="true" eSuperTypes="#//ActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An executable node is an abstract class for activity nodes that may be executed. It is used as an attachment point for exception handlers."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="handler" ordered="false"
+ upperBound="-1" eType="#//ExceptionHandler" containment="true" eOpposite="#//ExceptionHandler/protectedNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of exception handlers that are examined if an uncaught exception propagates to the outer level of the executable node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ActivityNode is an abstract class for points in the flow of an activity connected by edges."/>
+ </eAnnotations>
+ <eOperations name="owned_structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity nodes may be owned by at most one structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity nodes can only be owned by activities or groups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
+ eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Structured activity node containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/source">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges that have the node as source."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/target">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges that have the node as target."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partitions containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inInterruptibleRegion"
+ ordered="false" upperBound="-1" eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Interruptible regions containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityNode/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityGroup/containedNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedNode" ordered="false"
+ upperBound="-1" eType="#//ActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Inherited nodes replaced by this node in a specialization of the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="activity" ordered="false" eType="#//Activity"
+ volatile="true" derived="true" eOpposite="#//Activity/structuredNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity immediately containing the node."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/inActivity"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges owned by a structured node must have source and target nodes in the structured node, and vice versa.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A variable defined in the scope of the structured activity node. It has no value and may not be accessed"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
+ eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges immediately contained in the structured node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedEdge"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, then the actions in the node execute in isolation from actions outside the node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ActivityGroup is an abstract class for defining sets of nodes and edges in an activity."/>
+ </eAnnotations>
+ <eOperations name="nodes_and_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All nodes and edges of the group must be in the same activity as the group.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No node or edge in a group may be contained by its subgroups or its containing groups, transitively.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="group_owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups may only be owned by activities or groups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityGroup/superGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" ordered="false"
+ eType="#//ActivityGroup" changeable="false" volatile="true" transient="true"
+ derived="true" eOpposite="#//ActivityGroup/subgroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Group immediately containing the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inActivity" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/group">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity containing the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityEdge/inGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
+ upperBound="-1" eType="#//ActivityNode" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityNode/inGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity is the specification of parameterized behavior as the coordinated sequencing of subordinate units whose individual elements are actions."/>
+ </eAnnotations>
+ <eOperations name="no_supergroups" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The groups of an activity have no supergroups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="activity_parameter_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The nodes of the activity must include one ActivityParameterNode for each parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="autonomous" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity cannot be autonomous and have a classifier or behavioral feature context at the same time.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="structuredNode" ordered="false"
+ upperBound="-1" eType="#//StructuredActivityNode" changeable="false" volatile="true"
+ transient="true" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level structured nodes in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Activity/node #//Activity/group"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/activityScope">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level variables in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/activity">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes coordinated by the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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)."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
+ eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/activity">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges expressing flow between nodes of the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="partition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level partitions in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Activity/group"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSingleExecution" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, all invocations of the activity are handled by the same execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="group" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" containment="true" eOpposite="#//ActivityGroup/inActivity">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Top-level groups in the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;A variable is considered a connectable element."/>
+ </eAnnotations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A variable is owned by a StructuredNode or Activity, but not both.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="isAccessibleBy" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The isAccessibleBy() operation is not defined in standard UML. Implementations should define it to specify which actions can access a variable.&#xD;&#xA;&#xD;&#xA;result = true"/>
+ </eAnnotations>
+ <eParameters name="a" ordered="false" lowerBound="1" eType="#//Action"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"
+ eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/variable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structured activity node that owns the variable."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="activityScope" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/variable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity that owns the variable."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity edge is an abstract class for directed connections between two activity nodes.&#xD;&#xA;Activity edges can be contained in interruptible regions."/>
+ </eAnnotations>
+ <eOperations name="source_and_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The source and target of an edge must be in the same activity as the edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity edges may be owned only by activities or groups.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity edges may be owned by at most one structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Node from which tokens are taken when they traverse the edge."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/incoming">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Node to which tokens are put when they traverse the edge."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedEdge" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Inherited edges replaced by this edge in a specialization of the activity."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/edge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partitions containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityEdge/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specification evaluated at runtime to determine if the edge can be traversed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Number of tokens consumed from the source node on each traversal."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interrupts" ordered="false"
+ eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/interruptingEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Region that the edge can interrupt."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
+ eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/edge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Structured activity node containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityEdge/inGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
+ upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+ transient="true" derived="true" eOpposite="#//ActivityGroup/containedEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Groups containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="union"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
+ eType="#//Activity" eOpposite="#//Activity/edge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity containing the edge."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity partition is a kind of activity group for identifying actions that have some characteristic in common."/>
+ </eAnnotations>
+ <eOperations name="dimension_not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A partition with isDimension = true may not be contained by another partition.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="represents_part" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="represents_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="represents_part_and_is_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the partition groups other partitions along a dimension."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the partition represents an entity to which the partitioning structure does not apply."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subpartition" ordered="false"
+ upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partitions immediately contained in the partition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/subgroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"
+ eType="#//ActivityPartition" eOpposite="#//ActivityPartition/subpartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Partition immediately containing the partition."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/superGroup"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
+ eType="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An element constraining behaviors invoked by nodes in the partition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
+ eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Edges immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedEdge"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interruptible activity region is an activity group that supports termination of tokens flowing in the portions of an activity."/>
+ </eAnnotations>
+ <eOperations name="interrupting_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
+ eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Nodes immediately contained in the group."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//ActivityGroup/containedNode"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"
+ upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges leaving the region that will abort other tokens flowing in the region."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="exception_body" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The exception handler and its input object node are not the source or target of any edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result pins of the exception handler body must correspond in number and types to the result pins of the protected node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The handler body has one input, and that input is the same as the exception input.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edge_source_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An edge that has a source in an exception handler structured node must have its target in the handler also, and vice versa.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"
+ lowerBound="1" eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A node that is executed if the handler satisfies an uncaught exception."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" ordered="false"
+ lowerBound="1" eType="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionType" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" ordered="false"
+ lowerBound="1" eType="#//ExecutableNode" eOpposite="#//ExecutableNode/handler">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The node protected by the handler. The handler is examined if an exception propagates to the outside of the node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object node is an abstract activity node that is part of defining object flow in an activity.&#xD;&#xA;Object nodes have support for token selection, limitation on the number of tokens, specifying the state required for tokens, and carrying control values."/>
+ </eAnnotations>
+ <eOperations name="object_flow_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="All edges coming into or going out of object nodes must be object flow edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object nodes are not unique typed elements&#xD;&#xA;isUnique = false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="selection_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If an object node has a selection behavior, then the ordering of the object node is ordered, and vice versa.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
+ lowerBound="1" eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether and how the tokens in the object node are ordered for selection to traverse edges outgoing from the object node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isControlType" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the type of the object node is to be treated as control."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The maximum number of tokens allowed in the node. Objects cannot flow into the node if the upper bound is reached."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inState" ordered="false"
+ upperBound="-1" eType="#//State">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The required states of the object available at this point in the activity."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Selects tokens for outgoing edges."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ObjectNodeOrderingKind is an enumeration indicating queuing order within a node."/>
+ </eAnnotations>
+ <eLiterals name="unordered">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are unordered."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="ordered" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are ordered."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="LIFO" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are queued in a last in, first out manner."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="FIFO" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates that object node tokens are queued in a first in, first out manner."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An output pin is a pin that holds output values produced by an action."/>
+ </eAnnotations>
+ <eOperations name="incoming_edges_structured_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Pin" eSuperTypes="#//ObjectNode #//MultiplicityElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A pin is a typed element and multiplicity element that provides values to actions and accept result values from them.&#xD;&#xA;A pin is an object node for inputs and outputs to actions."/>
+ </eAnnotations>
+ <eOperations name="control_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Control pins have a control type&#xD;&#xA;isControl implies isControlType"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isControl" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the pins provide data to the actions, or just controls when it executes it."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An input pin is a pin that holds input values to be consumed by an action."/>
+ </eAnnotations>
+ <eOperations name="outgoing_edges_structured_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallAction" abstract="true" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="CallAction is an abstract class for actions that invoke behavior and receive return values."/>
+ </eAnnotations>
+ <eOperations name="synchronous_call" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only synchronous call actions can have result pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the call is synchronous and the caller waits for completion of the invoked behavior.&#xD;&#xA;If false, the call is asynchronous and the caller proceeds immediately and does not expect a return values.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins where the results of performing the invocation are placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InvocationAction" abstract="true" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="InvocationAction is an abstract class for the various actions that invoke behavior.&#xD;&#xA;In addition to targeting an object, invocation actions can also invoke behavioral features on ports from where the invocation requests are routed onwards on links deriving from attached connectors. Invocation actions may also be sent to a target via a given port, either on the sending object or on another object."/>
+ </eAnnotations>
+ <eOperations name="on_port_receiver" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The onPort must be a port on the receiver object.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specification of the ordered set of argument values that appears during execution."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="onPort" ordered="false"
+ eType="#//Port">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A optional port of the receiver object on which the behavioral feature is invoked."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendSignalAction" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="number_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of argument pins must be the same as the number and order of attributes in the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The target object to which the signal is sent."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of signal transmitted to the target object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallOperationAction" eSuperTypes="#//CallAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding owned parameter of the operation.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_target_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the target pin must be the same as the type that owns the operation.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation to be invoked by the action execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallBehaviorAction" eSuperTypes="#//CallAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument or result pin is derived from the corresponding parameter of the behavior.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+ lowerBound="1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The invoked behavior. It must be capable of accepting and returning control."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SequenceNode" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A sequence node is a structured activity node that executes its actions in order."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="executableNode" upperBound="-1"
+ eType="#//ExecutableNode" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ordered set of executable nodes."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuredActivityNode/node"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ControlNode" abstract="true" eSuperTypes="#//ActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A control node is an abstract activity node that coordinates flows in an activity."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A control flow is an edge that starts an activity node after the previous one is finished."/>
+ </eAnnotations>
+ <eOperations name="object_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Control flows may not have object nodes at either end, except for object nodes with control type.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial node is a control node at which flow starts when the activity is invoked."/>
+ </eAnnotations>
+ <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An initial node has no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="control_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Only control edges can have initial nodes as source.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity parameter node is an object node for inputs and outputs to activities."/>
+ </eAnnotations>
+ <eOperations name="has_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity parameter nodes must have parameters from the containing activity.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of an activity parameter node is the same as the type of its parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity parameter node may have all incoming edges or all outgoing edges, but it must not have both incoming and outgoing edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Activity parameter object nodes with no incoming edges and one or more outgoing edges must have a parameter with in or inout direction.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+ lowerBound="1" eType="#//Parameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The parameter the object node will be accepting or providing values for."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A value pin is an input pin that provides a value by evaluating a value specification."/>
+ </eAnnotations>
+ <eOperations name="compatible_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of value specification must be compatible with the type of the value pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value pins have no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value that the pin will provide."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A message defines a particular communication between lifelines of an interaction."/>
+ </eAnnotations>
+ <eOperations name="sending_receiving_message_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the sending MessageEvent and the receiving MessageEvent of the same Message are on the same Lifeline, the sending MessageEvent must be ordered before the receiving MessageEvent.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signature_refer_to" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signature_is_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="signature_is_signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Arguments of a Message must only be:&#xA;i) attributes of the sending lifeline&#xA;ii) constants&#xA;iii) symbolic values (which are wildcard values representing any legal value)&#xA;iv) explicit parameters of the enclosing Interaction&#xA;v) attributes of the class owning the Interaction&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="cannot_cross_boundaries" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Messages cannot cross bounderies of CombinedFragments or their operands.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="occurrence_specifications" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getMessageKind" ordered="false" lowerBound="1" eType="#//MessageKind"/>
+ <eOperations name="getSignature" ordered="false" eType="#//NamedElement"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" ordered="false"
+ lowerBound="1" eType="#//MessageKind" changeable="false" volatile="true" transient="true"
+ defaultValueLiteral="unknown" derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The derived kind of the Message (complete, lost, found or unknown)"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" ordered="false"
+ lowerBound="1" eType="#//MessageSort" defaultValueLiteral="synchCall">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The sort of communication reflected by the Message"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" ordered="false"
+ eType="#//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Receiving of the Message"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" ordered="false"
+ eType="#//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Sending of the Message."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
+ eType="#//Connector">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Connector on which this Message is sent."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
+ lowerBound="1" eType="#//Interaction" eOpposite="#//Interaction/message">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The enclosing Interaction owning the Message"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The arguments of the Message"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+ eType="#//NamedElement" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="MessageKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This is an enumerated type that identifies the type of message."/>
+ </eAnnotations>
+ <eLiterals name="complete">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent and receiveEvent are present"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="lost" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent present and receiveEvent absent"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="found" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent absent and receiveEvent present"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="unknown" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="sendEvent and receiveEvent absent (should not appear)"/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="MessageSort">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This is an enumerated type that identifies the type of communication action that was used to generate the message."/>
+ </eAnnotations>
+ <eLiterals name="synchCall">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message was generated by a synchronous call to an operation."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="asynchCall" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous&#xD;&#xA;= false.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="asynchSignal" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message was generated by an asynchronous send action."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="createMessage" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message designating the creation of another lifeline object."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="deleteMessage" value="4">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message designating the termination of another lifeline."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="reply" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message is a reply message to an operation call."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageEnd" abstract="true" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ eType="#//Message">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a Message."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lifeline" ordered="false"
+ upperBound="-1" eType="#//Lifeline" containment="true" eOpposite="#//Lifeline/interaction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the participants in this Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
+ eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingInteraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ordered set of fragments in the Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
+ upperBound="-1" eType="#//Action" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actions owned by the Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="formalGate" ordered="false"
+ upperBound="-1" eType="#//Gate" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ upperBound="-1" eType="#//Message" containment="true" eOpposite="#//Message/interaction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Messages contained in this Interaction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionFragment" abstract="true"
+ eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="covered" ordered="false"
+ upperBound="-1" eType="#//Lifeline" eOpposite="#//Lifeline/coveredBy">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Lifelines that the InteractionFragment involves."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalOrdering" ordered="false"
+ upperBound="-1" eType="#//GeneralOrdering" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The general ordering relationships contained in this fragment."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingInteraction" ordered="false"
+ eType="#//Interaction" eOpposite="#//Interaction/fragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Interaction enclosing this InteractionFragment."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" ordered="false"
+ eType="#//InteractionOperand" eOpposite="#//InteractionOperand/fragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operand enclosing this InteractionFragment (they may nest recursively)"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Lifeline" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A lifeline represents an individual participant in the interaction. While parts and structural features may have multiplicity greater than 1, lifelines represent only one interacting entity."/>
+ </eAnnotations>
+ <eOperations name="interaction_uses_share_lifeline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="selector_specified" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The selector for a Lifeline must only be specified if the referenced Part is multivalued.&#xD;&#xA;(self.selector->isEmpty() implies not self.represents.isMultivalued()) or&#xA;(not self.selector->isEmpty() implies self.represents.isMultivalued())&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.&#xD;&#xA;if (represents->notEmpty()) then&#xA;(if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued())&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
+ eType="#//ConnectableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the ConnectableElement within the classifier that contains the enclosing interaction."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
+ lowerBound="1" eType="#//Interaction" eOpposite="#//Interaction/lifeline">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Interaction enclosing this Lifeline."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//NamedElement/namespace"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selector" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" ordered="false"
+ eType="#//PartDecomposition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Interaction that represents the decomposition."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="coveredBy" ordered="false"
+ upperBound="-1" eType="#//InteractionFragment" eOpposite="#//InteractionFragment/covered">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the InteractionFragments in which this Lifeline takes part."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionUse">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A part decomposition is a description of the internal interactions of one lifeline relative to an interaction."/>
+ </eAnnotations>
+ <eOperations name="parts_of_internal_structures" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="assume" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order.&#xD;&#xA;&#xD;&#xA;i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D&#xD;&#xA;ii) An InteractionUse covering L are matched with a global (i.e. covering all Lifelines) InteractionUse in D.&#xD;&#xA;iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="commutativity_of_decomposition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an&#xD;&#xA;InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition)&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionUse" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction use refers to an interaction. The interaction use is a shorthand for copying the contents of the referenced interaction where the interaction use is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal gates with the actual ones."/>
+ </eAnnotations>
+ <eOperations name="gates_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="all_lifelines" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The InteractionUse must cover all Lifelines of the enclosing Interaction which appear within the referred Interaction.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="arguments_correspond_to_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The arguments of the InteractionUse must correspond to parameters of the referred Interaction&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="arguments_are_constants" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
+ lowerBound="1" eType="#//Interaction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the Interaction that defines its meaning"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actualGate" ordered="false"
+ upperBound="-1" eType="#//Gate" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual gates of the InteractionUse"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
+ eType="#//Action" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The actual arguments of the Interaction"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Gate" eSuperTypes="#//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A gate is a connection point for relating a message outside an interaction fragment with a message inside the interaction fragment."/>
+ </eAnnotations>
+ <eOperations name="messages_actual_gate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message leading to/from an actualGate of an InteractionUse must correspond to the message leading from/to the formalGate with the same name of the Interaction referenced by the InteractionUse.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="messages_combined_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The message leading to/from an (expression) Gate within a CombinedFragment must correspond to the message leading from/to the CombinedFragment on its outside.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="before" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification" eOpposite="#//OccurrenceSpecification/toAfter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="after" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification" eOpposite="#//OccurrenceSpecification/toBefore">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OccurrenceSpecification" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="covered" ordered="false" upperBound="-1"
+ eType="#//Lifeline">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Lifeline on which the OccurrenceSpecification appears."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//InteractionFragment/covered"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="toBefore" ordered="false"
+ upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/after">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" eType="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References a specification of the occurring event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="toAfter" ordered="false"
+ upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/before">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionOperand" eSuperTypes="#//Namespace #//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction operand is contained in a combined fragment. An interaction operand represents one operand of the expression given by the enclosing combined fragment."/>
+ </eAnnotations>
+ <eOperations name="guard_directly_prior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="guard_contain_references" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+ eType="#//InteractionConstraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Constraint of the operand."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
+ eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingOperand">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fragments of the operand."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interaction constraint is a Boolean expression that guards an operand in a combined fragment."/>
+ </eAnnotations>
+ <eOperations name="dynamic_variables" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="global_data" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The constraint may contain references to global data or write-once data.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="minint_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="minint_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If minint is specified, then the expression must evaluate to a non-negative integer.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maxint_positive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If maxint is specified, then the expression must evaluate to a positive integer.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="maxint_greater_equal_minint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The minimum number of iterations of a loop"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="maxint" ordered="false"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The maximum number of iterations of a loop"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionSpecification" abstract="true"
+ eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification."/>
+ </eAnnotations>
+ <eOperations name="same_lifeline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The startEvent and the finishEvent must be on the same Lifeline&#xD;&#xA;start.lifeline = finish.lifeline"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the OccurrenceSpecification that designates the start of the Action or Behavior"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="finish" ordered="false"
+ lowerBound="1" eType="#//OccurrenceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the OccurrenceSpecification that designates the finish of the Action or Behavior."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A state invariant is a runtime constraint on the participants of the interaction. It may be used to specify a variety of different kinds of constraints, such as values of attributes or variables, internal or external states, and so on. A state invariant is an interaction fragment and it is placed on a lifeline."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="covered" ordered="false" upperBound="-1"
+ eType="#//Lifeline">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the Lifeline on which the StateInvariant appears."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//InteractionFragment/covered"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="invariant" ordered="false"
+ lowerBound="1" eType="#//Constraint" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Constraint that should hold at runtime for this StateInvariant"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActionExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action execution specification is a kind of execution specification representing the execution of an action."/>
+ </eAnnotations>
+ <eOperations name="action_referenced" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
+ lowerBound="1" eType="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Action whose execution is occurring."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BehaviorExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A behavior execution specification is a kind of execution specification representing the execution of a behavior."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Behavior whose execution is occurring."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution event models the start or finish of an execution occurrence."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreationEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A creation event models the creation of an object."/>
+ </eAnnotations>
+ <eOperations name="no_occurrence_above" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No othet OccurrenceSpecification may appear above an OccurrenceSpecification which references a CreationEvent on a given Lifeline in an InteractionOperand.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DestructionEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A destruction event models the destruction of an object."/>
+ </eAnnotations>
+ <eOperations name="no_occurrence_specifications_below" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="No other OccurrenceSpecifications may appear below an OccurrenceSpecification which references a DestructionEvent on a given Lifeline in an InteractionOperand.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendOperationEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A send operation event models the invocation of an operation call."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageEvent" abstract="true" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A message event specifies the receipt by an object of either a call or a signal."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendSignalEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A send signal event models the sending of a signal."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signal associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MessageOccurrenceSpecification" eSuperTypes="#//OccurrenceSpecification #//MessageEnd">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionOccurrenceSpecification" eSuperTypes="#//OccurrenceSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution occurrence specification represents moments in time at which actions or behaviors start or finish."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="event" ordered="false" lowerBound="1"
+ eType="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The event referenced is restricted to an execution event."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//OccurrenceSpecification/event"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="execution" ordered="false"
+ lowerBound="1" eType="#//ExecutionSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="References the execution specification describing the execution that is started or finished at this execution event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReceiveOperationEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A receive operation event specifies the event of receiving an operation invocation for a particular operation by the target entity."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReceiveSignalEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A receive signal event specifies the event of receiving a signal by the target entity."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The signal associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//BehavioredClassifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An actor specifies a role played by a user or any other system that interacts with the subject."/>
+ </eAnnotations>
+ <eOperations name="associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.&#xD;&#xA;self.ownedAttribute->forAll ( a |&#xA;(a.association->notEmpty()) implies&#xA;((a.association.memberEnd.size() = 2) and&#xA;(a.opposite.class.oclIsKindOf(UseCase) or&#xA;(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An actor must have a name.&#xD;&#xA;name->notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A call event models the receipt by an object of a message invoking a call of an operation."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+ lowerBound="1" eType="#//Operation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Designates the operation whose invocation raised the call event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ChangeEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A change event models a change in the system configuration that makes a condition true."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A Boolean-valued expression that will result in a change event whenever its value changes from false to true."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SignalEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specific signal that is associated with this event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnyReceiveEvent" eSuperTypes="#//MessageEvent">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A transition trigger associated with an any receive event specifies that the transition is to be triggered by the receipt of any message that is not explicitly referenced in another transition from the same vertex."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork node is a control node that splits a flow into multiple concurrent flows."/>
+ </eAnnotations>
+ <eOperations name="one_incoming_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A fork node has one incoming edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges coming into and out of a fork node must be either all object flows or all control flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A flow final node is a final node that terminates a flow."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final node is an abstract control node at which a flow in an activity stops."/>
+ </eAnnotations>
+ <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final node has no outgoing edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A central buffer node is an object node for managing flows from multiple sources and destinations."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="one_outgoing_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A merge node has one outgoing edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges coming into and out of a merge node must be either all object flows or all control flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A decision node is a control node that chooses between outgoing flows."/>
+ </eAnnotations>
+ <eOperations name="one_incoming_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A decision node has one incoming edge.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The edges coming into and out of a decision node must be either all object flows or all control flows.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Provides input to guard specifications on edges outgoing from the decision node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActivityFinalNode" eSuperTypes="#//FinalNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An activity final node is a final node that stops all flows in an activity."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ComponentRealization" eSuperTypes="#//Realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The realization concept is specialized to (optionally) define the classifiers that realize the contract offered by a component in terms of its provided and required interfaces. The component forms an abstraction from these various classifiers."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" ordered="false"
+ eType="#//Component" eOpposite="#//Component/realization">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Component that owns this ComponentRealization and which is implemented by its realizing classifiers."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/owner #//Dependency/client"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingClassifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A classifier that is involved in the implementation of the Component that owns this ComponentRealization."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Dependency/supplier"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class #//Namespace">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.&#xD;&#xA;In the namespace of a component, all model elements that are involved in or related to its definition are either owned or imported explicitly. This may include, for example, use cases and dependencies (e.g. mappings), packages, components, and artifacts."/>
+ </eAnnotations>
+ <eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a(n) (abstract) class with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new class, or null."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Whether the new class should be abstract."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedEnumeration" ordered="false" lowerBound="1" eType="#//Enumeration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a enumeration with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new enumeration, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedPrimitiveType" ordered="false" lowerBound="1" eType="#//PrimitiveType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates a primitive type with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new primitive type, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="createOwnedInterface" ordered="false" lowerBound="1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Creates an interface with the specified name as a packaged element of this component."/>
+ </eAnnotations>
+ <eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The name for the new interface, or null."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="realizedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Utility returning the set of realized interfaces of a component:&#xD;&#xA;result = (classifier.clientDependency->&#xA;select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface)))->&#xA;collect(dependency|dependency.client)"/>
+ </eAnnotations>
+ <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="usedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Utility returning the set of used interfaces of a component:&#xD;&#xA;result = (classifier.supplierDependency->&#xA;select(dependency|dependency.oclIsKindOf(Usage) and dependency.supplier.oclIsKindOf(interface)))->&#xA;collect(dependency|dependency.supplier)"/>
+ </eAnnotations>
+ <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier"/>
+ </eOperations>
+ <eOperations name="getRequireds" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = let usedInterfaces = UsedInterfaces(self) and&#xD;&#xA; let realizingClassifierUsedInterfaces = UsedInterfaces(self.realizingClassifier) and&#xD;&#xA; let typesOfUsedPorts = self.ownedPort.required in&#xD;&#xA; ((usedInterfaces->union(realizingClassifierUsedInterfaces))->&#xD;&#xA; union(typesOfUsedPorts))->asSet()"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getProvideds" ordered="false" upperBound="-1" eType="#//Interface">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="result = let implementedInterfaces = self.implementation->collect(impl|impl.contract) and&#xD;&#xA; let realizedInterfaces = RealizedInterfaces(self) and&#xD;&#xA; let realizingClassifierInterfaces = RealizedInterfaces(self.realizingClassifier) and&#xD;&#xA; let typesOfRequiredPorts = self.ownedPort.provided in&#xD;&#xA; (((implementedInterfaces->union(realizedInterfaces)->union(realizingClassifierInterfaces))->&#xD;&#xA; union(typesOfRequiredPorts))->asSet()"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
+ ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The kind of instantiation that applies to a Component. If false, the component is instantiated as an addressable object. If true, the Component is defined at design-time, but at runtime (or execution-time) an object specified by the Component does not exist, that is, the component is instantiated indirectly, through the instantiation of its realizing classifiers or parts. Several standard stereotypes use this meta attribute, e.g. &lt;&lt;specification>>, &lt;&lt;focus>>, &lt;&lt;subsystem>>."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interfaces that the component requires from other components in its environment in order to be able to offer its full set of provided functionality. These interfaces may be Used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
+ upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interfaces that the component exposes to its environment. These interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
+ upperBound="-1" eType="#//PackageableElement" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
+ upperBound="-1" eType="#//ComponentRealization" containment="true" eOpposite="#//ComponentRealization/abstraction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A node is computational resource upon which artifacts may be deployed for execution.&#xD;&#xA;Nodes can be interconnected through communication paths to define network structures."/>
+ </eAnnotations>
+ <eOperations name="internal_structure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The internal structure of a Node (if defined) consists solely of parts of type Node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"
+ upperBound="-1" eType="#//Node" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The Nodes that are defined (nested) within the Node."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices)."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A communication path is an association between two deployment targets, through which they are able to exchange signals and messages."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association ends of a CommunicationPath are typed by DeploymentTargets.&#xD;&#xA;result = self.endType->forAll (t | t.oclIsKindOf(DeploymentTarget))"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Association/association_ends"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A combined fragment defines an expression of interaction fragments. A combined fragment is defined by an interaction operator and corresponding interaction operands. Through the use of combined fragments the user will be able to describe a number of traces in a compact and concise manner."/>
+ </eAnnotations>
+ <eOperations name="opt_loop_break_neg" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the interactionOperator is opt, loop, break, or neg there must be exactly one operand&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="minint_and_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The InteractionConstraint with minint and maxint only apply when attached to an InteractionOperand where the interactionOperator is loop.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="break" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines within the enclosing InteractionFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="consider_and_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interaction operators 'consider' and 'ignore' can only be used for the CombineIgnoreFragment subtype of CombinedFragment&#xD;&#xA;((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
+ lowerBound="1" eType="#//InteractionOperatorKind" defaultValueLiteral="seq">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the operation which defines the semantics of this combination of InteractionFragments."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operand" lowerBound="1"
+ upperBound="-1" eType="#//InteractionOperand" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of operands of the combined fragment."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="cfragmentGate" ordered="false"
+ upperBound="-1" eType="#//Gate" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the gates that form the interface between this CombinedFragment and its surroundings"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InteractionOperatorKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="InteractionOperatorKind is an enumeration designating the different kinds of operators of combined fragments. The interaction operand defines the type of operator of a combined fragment."/>
+ </eAnnotations>
+ <eLiterals name="seq">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="alt" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="opt" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="break" value="3">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="par" value="4">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="strict" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="loop" value="6">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="critical" value="7">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as e.g. with par-operator, this is prevented by defining a region."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="neg" value="8">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator neg designates that the CombinedFragment represents traces that are defined to be invalid."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="assert" value="9">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="ignore" value="10">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interacionOperator ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="consider" value="11">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interactionOperator consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A continuation is a syntactic way to define continuations of different branches of an alternative combined fragment. Continuations is intuitively similar to labels representing intermediate points in a flow of control."/>
+ </eAnnotations>
+ <eOperations name="same_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Continuations with the same name may only cover the same set of Lifelines (within one Classifier).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="global" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Continuations are always global in the enclosing InteractionFragment e.g. it always covers all Lifelines covered by the enclosing InteractionFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="first_or_last_interaction_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionFragment.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConsiderIgnoreFragment" eSuperTypes="#//CombinedFragment">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A consider ignore fragment is a kind of combined fragment that is used for the consider and ignore cases, which require lists of pertinent messages to be specified."/>
+ </eAnnotations>
+ <eOperations name="consider_or_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.&#xD;&#xA;(interactionOperator = #consider) or (interactionOperator = #ignore)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The NamedElements must be of a type of element that identifies a message (e.g., an Operation, Reception, or a Signal).&#xD;&#xA;message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+ upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of messages that apply to this fragment"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="classifier_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier cannot be abstract.&#xD;&#xA;not (self.classifier.isAbstract = #true)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="classifier_not_association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier cannot be an association class&#xD;&#xA;not self.classifier.oclIsKindOf(AssociationClass)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result pin must be the same as the classifier of the action.&#xD;&#xA;self.result.type = self.classifier"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Classifier to be instantiated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DestroyObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A destroy object action is an action that destroys objects."/>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.target.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.target.type->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyLinks" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether links in which the object participates are destroyed along with the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyOwnedObjects"
+ ordered="false" lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether objects owned by the object are destroyed along with the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin providing the object to be destroyed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TestIdentityAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A test identity action is an action that tests if two values are identical objects."/>
+ </eAnnotations>
+ <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pins have no type.&#xD;&#xA;self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pins is 1..1.&#xD;&#xA;self.first.multiplicity.is(1,1)&#xA;and self.second.multiplicity.is(1,1)&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_is_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result is Boolean.&#xD;&#xA;self.result.type.oclIsTypeOf(Boolean)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="first" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the pin on which an object is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="second" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the pin on which an object is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the two input objects are identical."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadSelfAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read self action is an action that retrieves the host object of an action."/>
+ </eAnnotations>
+ <eOperations name="contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The action must be contained in an behavior that has a host classifier.&#xD;&#xA;self.context->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the host classifier.&#xD;&#xA;self.result.type = self.context"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the hosting object is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuralFeatureAction" abstract="true"
+ eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="StructuralFeatureAction is an abstract class for all structural feature actions."/>
+ </eAnnotations>
+ <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The structural feature must not be static.&#xD;&#xA;self.structuralFeature.isStatic = #false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin is the same as the classifier of the object passed on this pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin must be 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Visibility of structural feature must allow access to the object performing the action.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="one_featuring_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A structural feature has exactly one featuringClassifier.&#xD;&#xA;self.structuralFeature.featuringClassifier->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" ordered="false"
+ lowerBound="1" eType="#//StructuralFeature">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Structural feature to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which the object whose structural feature is to be read or written is obtained.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read structural feature action is a structural feature action that retrieves the values of a structural feature."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the structural feature must be compatible with the multiplicity of the output pin.&#xD;&#xA;self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of the result output pin are the same as the type and ordering of the structural feature.&#xD;&#xA;self.result.type = self.structuralFeature.type&#xA;and self.result.ordering = self.structuralFeature.ordering&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WriteStructuralFeatureAction" abstract="true"
+ eSuperTypes="#//StructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </contents>
+ </eAnnotations>
+ <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type input pin is the same as the classifier of the structural feature.&#xD;&#xA;self.value.type = self.structuralFeature.featuringClassifier"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value to be added or removed from the structural feature."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClearStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clear structural feature action is a structural feature action that removes all values of a structural feature."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RemoveStructuralFeatureValueAction"
+ eSuperTypes="#//WriteStructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A remove structural feature value action is a write structural feature action that removes values from structural features."/>
+ </eAnnotations>
+ <eOperations name="non_unique_removal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether to remove duplicates of the value in nonunique structural features."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="removeAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AddStructuralFeatureValueAction" eSuperTypes="#//WriteStructuralFeatureAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An add structural feature value action is a write structural feature action for adding values to a structural feature."/>
+ </eAnnotations>
+ <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether existing values of the structural feature of the object should be removed before adding the new value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkAction" abstract="true" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="same_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;self.endData->collect(end) = self.association()->collect(connection))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association ends of the link end data must not be static.&#xD;&#xA;self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pins of the action are the same as the pins of the link end data and insertion pins.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association" ordered="false" lowerBound="1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association operates on LinkAction. It returns the association of the action.&#xD;&#xA;result = self.endData->asSequence().first().end.association"/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="endData" ordered="false"
+ lowerBound="2" upperBound="-1" eType="#//LinkEndData" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Data identifying one end of a link by the objects on its ends and qualifiers."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputValue" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pins taking end objects and qualifier values as input."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkEndData" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="property_is_association_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The property must be an association end.&#xD;&#xA;self.end.association->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the end object input pin is the same as the type of the association end.&#xD;&#xA;self.value.type = self.end.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the end object input pin must be 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="qualifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualifiers include all and only the qualifiers of the association end.&#xD;&#xA;self.qualifier->collect(qualifier) = self.end.qualifier"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="end_object_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The end object input pin is not also a qualifier value input pin.&#xD;&#xA;self.value->excludesAll(self.qualifier.value)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Association end for which this link-end data specifies values."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ upperBound="-1" eType="#//QualifierValue" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of qualifier values"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="QualifierValue" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="qualifier_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualifier attribute must be a qualifier of the association end of the link-end data.&#xD;&#xA;self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the qualifier value input pin is the same as the type of the qualifier attribute.&#xD;&#xA;self.value.type = self.qualifier.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the qualifier value input pin is &quot;1..1&quot;.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Attribute representing the qualifier for which the value is to be specified."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Input pin from which the specified value for the qualifier is taken."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadLinkAction" eSuperTypes="#//LinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read link action is a link action that navigates across associations to retrieve objects on one end."/>
+ </eAnnotations>
+ <eOperations name="one_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Exactly one link-end data specification (the 'open' end) must not have an end object input pin.&#xD;&#xA;self.endData->select(ed | ed.value->size() = 0)->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of the result output pin are same as the type and ordering of the open association end.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the open association end must be compatible with the multiplicity of the result output pin.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.multiplicity.compatibleWith(self.result.multiplicity)&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="navigable_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The open end must be navigable.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.isNavigable()&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Visibility of the open end must allow access to the object performing the action.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The pin on which are put the objects participating in the association at the end not specified by the inputs.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkEndCreationData" eSuperTypes="#//LinkEndData">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="create_link_action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.&#xD;&#xA;self.LinkAction.oclIsKindOf(CreateLinkAction)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
+ eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateLinkAction" eSuperTypes="#//WriteLinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A create link action is a write link action for creating links."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="endData" ordered="false" lowerBound="2"
+ upperBound="-1" eType="#//LinkEndCreationData" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies ends of association and inputs."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//LinkAction/endData"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="association_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association cannot be an abstract classifier.&#xD;&#xA;self.association().isAbstract = #false"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WriteLinkAction" abstract="true" eSuperTypes="#//LinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="WriteLinkAction is an abstract class for link actions that create and destroy links."/>
+ </eAnnotations>
+ <eOperations name="allow_access" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The visibility of at least one end must allow access to the class using the action.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DestroyLinkAction" eSuperTypes="#//WriteLinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A destroy link action is a write link action that destroys links and link objects."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="endData" ordered="false" lowerBound="2"
+ upperBound="-1" eType="#//LinkEndDestructionData" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies ends of association and inputs."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//LinkAction/endData"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LinkEndDestructionData" eSuperTypes="#//LinkEndData">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="destroy_link_action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyDuplicates" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether to destroy duplicates of the value in nonunique association ends."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="destroyAt" ordered="false"
+ eType="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClearAssociationAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clear association action is an action that destroys all links of an association in which a particular object participates."/>
+ </eAnnotations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the input pin must be the same as the type of at least one of the association ends of the association.&#xD;&#xA;self.association->exists(end.type = self.object.type)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which is obtained the object whose participation in the association is to be cleared."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false"
+ lowerBound="1" eType="#//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Association to be cleared."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BroadcastSignalAction" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number and order of argument pins must be the same as the number and order of attributes in the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+ lowerBound="1" eType="#//Signal">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The specification of signal object transmitted to the target objects."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SendObjectAction" eSuperTypes="#//InvocationAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The target object to which the object is sent."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="request" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//InvocationAction/argument"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ValueSpecificationAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A value specification action is an action that evaluates a value specification."/>
+ </eAnnotations>
+ <eOperations name="compatible_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of value specification must be compatible with the type of the result pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result pin is 1..1&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value specification to be evaluated."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeExpression" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time expression defines a value specification that represents a time value."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expr" ordered="false" eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of the time expression."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="observation" ordered="false"
+ upperBound="-1" eType="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the time and duration observations that are involved in expr."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Observation" abstract="true" eSuperTypes="#//PackageableElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Observation is a superclass of TimeObservation and DurationObservation in order for TimeExpression and Duration to refer to either in a simple way."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Duration" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Duration defines a value specification that specifies the temporal distance between two time instants."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EOperation" name="stringValue" ordered="false" lowerBound="1"
+ eType="#//String">
+ <eAnnotations source="redefines" references="#//ValueSpecification/stringValue"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expr" ordered="false" eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of the Duration."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="observation" ordered="false"
+ upperBound="-1" eType="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the time and duration observations that are involved in expr."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationInterval" eSuperTypes="#//Interval">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A duration interval defines the range between two durations."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the Duration denoting the minimum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/min"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the Duration denoting the maximum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/max"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interval defines the range between two value specifications."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the ValueSpecification denoting the minimum value of the range."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the ValueSpecification denoting the maximum value of the range."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeConstraint" eSuperTypes="#//IntervalConstraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time constraint is a constraint that refers to a time interval."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//IntervalConstraint/%duplicates%/specification #//Constraint/specification"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent is related to constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within constrainedElement."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntervalConstraint" eSuperTypes="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An interval constraint is a constraint that refers to an interval."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Constraint/specification"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeInterval" eSuperTypes="#//Interval">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time interval defines the range between two time expressions."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="max" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the TimeExpression denoting the maximum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/max"/>
+ </contents>
+ <contents xsi:type="ecore:EReference" name="min" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Refers to the TimeExpression denoting the minimum value of the range."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//Interval/min"/>
+ </contents>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationConstraint" eSuperTypes="#//IntervalConstraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A duration constraint is a constraint that refers to a duration interval."/>
+ </eAnnotations>
+ <eAnnotations source="duplicates">
+ <contents xsi:type="ecore:EReference" name="specification" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The interval constraining the duration."/>
+ </eAnnotations>
+ <eAnnotations source="redefines" references="#//IntervalConstraint/%duplicates%/specification #//Constraint/specification"/>
+ </contents>
+ </eAnnotations>
+ <eOperations name="first_event_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.&#xD;&#xA;if (constrainedElement->size() =2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ upperBound="2" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i]. Default value is true applied when constrainedElement[i] refers an element that represents only one time instant."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeObservation" eSuperTypes="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time observation is a reference to a time instant during an execution. It points out the element in the model to observe and whether the observation is when this model element is entered or when it is exited."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The observation is determined by the entering or exiting of the event element during execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent is related to event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters event. If firstEvent is false, then the corresponding observation event is the time instant the execution exits event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DurationObservation" eSuperTypes="#//Observation">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A duration observation is a reference to a duration during an execution. It points out the element(s) in the model to observe and whether the observations are when this model element is entered or when it is exited."/>
+ </eAnnotations>
+ <eOperations name="first_event_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.&#xD;&#xA;if (event->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
+ lowerBound="1" upperBound="2" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The observation is determined by the entering or exiting of the event element during execution."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
+ upperBound="2" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i]. Default value is true applied when event[i] refers an element that represents only one time instant."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A special kind of state signifying that the enclosing region is completed. If the enclosing region is directly contained in a state machine and all other regions in the state machine also are completed, then it means that the entire state machine is completed."/>
+ </eAnnotations>
+ <eOperations name="no_outgoing_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state cannot have any outgoing transitions.&#xD;&#xA;self.outgoing->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state cannot have regions.&#xD;&#xA;self.region->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="cannot_reference_submachine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state cannot reference a submachine.&#xD;&#xA;self.submachine->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_entry_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state has no entry behavior.&#xD;&#xA;self.entry->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_exit_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state has no exit behavior.&#xD;&#xA;self.exit->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_state_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A final state has no state (doActivity) behavior.&#xD;&#xA;self.doActivity->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TimeEvent" eSuperTypes="#//Event">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A time event specifies a point in time. At the specified time, the event occurs.&#xD;&#xA;A time event can be defined relative to entering the current state of the executing state machine."/>
+ </eAnnotations>
+ <eOperations name="when_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ValueSpecification when must return a non-negative Integer.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="starting_time" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The starting time for a relative time event may only be omitted for a time event that is the trigger of a state machine.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether it is relative or absolute time."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"
+ eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the corresponding time deadline."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableAction" abstract="true" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="VariableAction is an abstract class for actions that operate on a statically specified variable."/>
+ </eAnnotations>
+ <eOperations name="scope_of_variable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The action must be in the scope of the variable.&#xD;&#xA;self.variable.isAccessibleBy(self)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+ lowerBound="1" eType="#//Variable">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Variable to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadVariableAction" eSuperTypes="#//VariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read variable action is a variable action that retrieves the values of a variable."/>
+ </eAnnotations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;self.result.type =self.variable.type&#xA;and self.result.ordering = self.variable.ordering&#xA;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the variable must be compatible with the multiplicity of the output pin.&#xD;&#xA;self.variable.multiplicity.compatibleWith(self.result.multiplicity)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WriteVariableAction" abstract="true"
+ eSuperTypes="#//VariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="WriteVariableAction is an abstract class for variable actions that change variable values."/>
+ </eAnnotations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type input pin is the same as the type of the variable.&#xD;&#xA;self.value.type = self.variable.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Value to be added or removed from the variable."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClearVariableAction" eSuperTypes="#//VariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A clear variable action is a variable action that removes all values of a variable."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AddVariableValueAction" eSuperTypes="#//WriteVariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An add variable value action is a write variable action for adding values to a variable."/>
+ </eAnnotations>
+ <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;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;"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether existing values of the variable should be removed before adding the new value."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RemoveVariableValueAction" eSuperTypes="#//WriteVariableAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A remove variable value action is a write variable action that removes values from variables."/>
+ </eAnnotations>
+ <eOperations name="unlimited_natural" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether to remove duplicates of the value in nonunique variables."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="removeAt" ordered="false"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RaiseExceptionAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A raise exception action is an action that causes an exception to occur. The input value becomes the exception object."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="exception" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An input pin whose value becomes an exception object."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActionInputPin" eSuperTypes="#//InputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An action input pin is a kind of pin that executes an action to determine the values to input to another."/>
+ </eAnnotations>
+ <eOperations name="one_output_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fromAction of an action input pin must have exactly one output pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fromAction of an action input pin must only have action input pins as input pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_control_or_data_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The fromAction of an action input pin cannot have control or data flows coming into or out of it or its pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fromAction" ordered="false"
+ lowerBound="1" eType="#//Action" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The action used to provide values."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="sources_and_targets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;(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)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="has_no" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An informationItem has no feature, no generalization, and no associations.&#xD;&#xA;self.generalization->isEmpty() and self.feature->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="not_instantiable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="It is not instantiable.&#xD;&#xA;isAbstract"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//PackageableElement #//DirectedRelationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="sources_and_targets_kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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).&#xD;&#xA;(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)))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="must_conform" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="convey_classifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An information flow can only convey classifiers that are allowed to represent an information item.&#xD;&#xA;&#xD;&#xA;self.conveyed.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;&#xA; or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
+ upperBound="-1" eType="#//Relationship">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which Relationship will realize the specified flow"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the information items that may circulate on this information flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="informationSource" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines from which source the conveyed InformationItems are initiated."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="informationTarget" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//NamedElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Defines to which target the conveyed InformationItems are directed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingActivityEdge"
+ ordered="false" upperBound="-1" eType="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which ActivityEdges will realize the specified flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingConnector" ordered="false"
+ upperBound="-1" eType="#//Connector">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which Connectors will realize the specified flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="realizingMessage" ordered="false"
+ upperBound="-1" eType="#//Message">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Determines which Messages will realize the specified flow."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read extent action is an action that retrieves the current instances of a classifier."/>
+ </eAnnotations>
+ <eOperations name="type_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 0..*.&#xD;&#xA;self.result.multiplicity.is(0,#null)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The runtime instances of the classifier."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier whose instances are to be retrieved."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReclassifyObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reclassify object action is an action that changes which classifiers classify an object."/>
+ </eAnnotations>
+ <eOperations name="classifier_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="None of the new classifiers may be abstract.&#xD;&#xA;not self.newClassifier->exists(isAbstract = true)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.argument.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.argument.type->size() = 0"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies whether existing classifiers should be removed before adding the new classifiers."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="oldClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of classifiers to be removed from the classifiers of the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="newClassifier" ordered="false"
+ upperBound="-1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of classifiers to be added to the classifiers of the object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object to be reclassified."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadIsClassifiedObjectAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read is classified object action is an action that determines whether a runtime object is classified by a given classifier."/>
+ </eAnnotations>
+ <eOperations name="multiplicity_of_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.object.type->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="boolean_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the output pin is Boolean&#xD;&#xA;self.result.type = Boolean"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether the classifier must directly classify the input object."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The classifier against which the classification of the input object is tested."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="After termination of the action, will hold the result of the test."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object whose classification is to be tested."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StartClassifierBehaviorAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A start classifier behavior action is an action that starts the classifier behavior of the input."/>
+ </eAnnotations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the input pin is 1..1&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_has_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the input pin has a type, then the type must have a classifier behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Holds the object on which to start the owned behavior."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read link object end action is an action that retrieves an end object from a link object."/>
+ </eAnnotations>
+ <eOperations name="property" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The property must be an association end.&#xD;&#xA;self.end.association.notEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association of the association end must be an association class.&#xD;&#xA;self.end.Association.oclIsKindOf(AssociationClass)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ends of the association must not be static.&#xD;&#xA;self.end.association.memberEnd->forall(e | not e.isStatic)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin is the association class that owns the association end.&#xD;&#xA;self.object.type = self.end.association"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the same as the type of the association end.&#xD;&#xA;self.result.type = self.end.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which the link object is obtained."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Link end to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pin where the result value is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndQualifierAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A read link object end qualifier action is an action that retrieves a qualifier end value from a link object."/>
+ </eAnnotations>
+ <eOperations name="qualifier_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The qualifier attribute must be a qualifier attribute of an association end.&#xD;&#xA;self.qualifier.associationEnd->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association of the association end of the qualifier attribute must be an association class.&#xD;&#xA;self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The ends of the association must not be static.&#xD;&#xA;self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin is the association class that owns the association end that has the given qualifier attribute.&#xD;&#xA;self.object.type = self.qualifier.associationEnd.association"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the qualifier attribute is 1..1.&#xD;&#xA;self.qualifier.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result output pin is the same as the type of the qualifier attribute.&#xD;&#xA;self.result.type = self.qualifier.type"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the input pin from which the link object is obtained."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pin where the result value is placed."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
+ lowerBound="1" eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The attribute representing the qualifier to be read."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateLinkObjectAction" eSuperTypes="#//CreateLinkAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A create link object action creates a link object."/>
+ </eAnnotations>
+ <eOperations name="association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The association must be an association class.&#xD;&#xA;self.association().oclIsKindOf(Class)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the result pin must be the same as the association of the action.&#xD;&#xA;self.result.type = self.association()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AcceptEventAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A accept event action is an action that waits for the occurrence of an event meeting specified conditions."/>
+ </eAnnotations>
+ <eOperations name="no_input_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="AcceptEventActions may have no input pins.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="no_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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).&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="trigger_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If the trigger events are all TimeEvents, there is exactly one output pin.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unmarshall_signal_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnmarshall" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ upperBound="-1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Pins holding the received event objects or their attributes. Event objects may be copied in transmission, so identity might not be preserved."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Trigger" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AcceptCallAction" eSuperTypes="#//AcceptEventAction">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result pins must match the in and inout parameters of the operation specified by the trigger event in number, type, and order.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="trigger_call_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The trigger event must be a CallEvent.&#xD;&#xA;trigger.event.oclIsKindOf(CallEvent)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unmarshall" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="isUnmrashall must be true for an AcceptCallAction.&#xD;&#xA;isUnmarshall = true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReplyAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="pins_match_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="event_on_reply_to_call_trigger" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)&#xD;&#xA;replyToCallEvent.oclIsKindOf(CallEvent)"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" ordered="false"
+ lowerBound="1" eType="#//Trigger">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The trigger specifying the operation whose call is being replied to."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A pin containing the return information value produced by an earlier AcceptCallAction."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="replyValue" ordered="false"
+ upperBound="-1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of pins containing the reply values of the operation. These values are returned to the caller."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UnmarshallAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object input pin must be the same as the unmarshall classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of the object input pin is 1..1&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="number_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The number of result output pins must be the same as the number of structural features of the unmarshall classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type and ordering of each result output pin must be the same as the corresponding structural feature of the unmarshall classifier.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding structural features of the unmarshall classifier.&#xD;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The unmarshall classifier must have at least one structural feature.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="unmarshallType_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="unmarshallType must be a Classifier with ordered attributes&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The values of the structural features of the input object."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="unmarshallType" ordered="false"
+ lowerBound="1" eType="#//Classifier">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the object to be unmarshalled."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The object to be unmarshalled."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReduceAction" eSuperTypes="#//Action">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A reduce action is an action that reduces a collection to a single value by combining the elements of the collection."/>
+ </eAnnotations>
+ <eOperations name="input_type_is_collection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the input must be a collection.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="output_types_are_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The type of the output must be compatible with the type of the output of the reducer behavior.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="reducer_inputs_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The reducer behavior must have two input parameters and one output parameter, of types compatible with the types of elements of the input collection.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="reducer" ordered="false"
+ lowerBound="1" eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
+ lowerBound="1" eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Gives the output pin on which the result is put."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="collection" ordered="false"
+ lowerBound="1" eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The collection to be reduced."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join node is a control node that synchronizes multiple flows.&#xD;&#xA;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."/>
+ </eAnnotations>
+ <eOperations name="one_outgoing_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A join node has one outgoing edge.&#xD;&#xA;self.outgoing->size() = 1"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="incoming_object_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a join node has an incoming object flow, it must have an outgoing object flow, otherwise, it must have an outgoing control flow.&#xD;&#xA;(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))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether tokens having objects with the same identity are combined into one by the join."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"
+ lowerBound="1" eType="#//ValueSpecification" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A specification giving the conditions under which the join with emit a token. Default is &quot;and&quot;."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A data store node is a central buffer node for non-transient information."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object flow is an activity edge that can have objects or data passing along it.&#xD;&#xA;Object flows have support for multicast/receive, token selection from object nodes, and transformation of tokens."/>
+ </eAnnotations>
+ <eOperations name="no_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object flows may not have actions at either end.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="compatible_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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;&#xA;&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="same_upper_bounds" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Object nodes connected by an object flow, with optionally intervening control nodes, must have the same upper bounds.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="transformation_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="selection_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object flow may have a selection behavior only if has an object node as a source.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="input_and_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="is_multicast_or_is_multireceive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="isMulticast and isMultireceive cannot both be true.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the objects in the flow are passed by multicasting."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tells whether the objects in the flow are gathered from respondents to multicasting."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Changes or replaces data tokens flowing along edge."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
+ eType="#//Behavior">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Selects tokens from a source object node."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A conditional node is a structured activity node that represents an exclusive choice among some number of alternatives."/>
+ </eAnnotations>
+ <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result output pins have no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the modeler asserts that at most one test will succeed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the modeler asserts that at least one test will succeed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set of clauses composing the conditional."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Element/ownedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins that constitute the data flow outputs of the conditional."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eOperations name="decider_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The decider output pin must be for the test body or a node contained by the test body as a structured node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The bodyOutput pins are output pins on actions in the body of the clause.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
+ eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A nested activity fragment with a designated output pin that specifies the result of the test."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"
+ eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"
+ upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of clauses whose tests must all evaluate false before the current clause can be tested."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"
+ upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A set of clauses which may not be tested unless the current clause tests false."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
+ lowerBound="1" eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" upperBound="-1"
+ eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A loop node is a structured activity node that represents a loop with setup, test, and body sections."/>
+ </eAnnotations>
+ <eOperations name="input_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Loop variable inputs must not have outgoing edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The bodyOutput pins are output pins on actions in the body of the loop node.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The result output pins have no incoming edges.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
+ lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If true, the test is performed before the first execution of the body.&#xA;If false, the body is executed once before the test is performed.&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"
+ upperBound="-1" eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"
+ upperBound="-1" eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of nodes and edges that initialize values or perform other setup computations for the loop."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
+ lowerBound="1" eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
+ eType="#//ExecutableNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The set of nodes, edges, and designated value that compute a Boolean value to determine if another execution of the body will be performed."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+ eType="#//OutputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of output pins that constitute the data flow output of the entire loop."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/output"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"
+ eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" upperBound="-1"
+ eType="#//OutputPin">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"
+ eType="#//InputPin" containment="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A list of values that are moved into the loop variable pins before the first iteration of the loop."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Action/input"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"
+ eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/outputElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The expansion region for which the node is an output."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" ordered="false"
+ eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/inputElement">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The expansion region for which the node is an input."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An expansion region is a structured activity region that executes multiple times corresponding to elements of an input collection."/>
+ </eAnnotations>
+ <eOperations name="expansion_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An ExpansionRegion must have one or more argument ExpansionNodes and zero or more result ExpansionNodes.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" lowerBound="1"
+ eType="#//ExpansionKind" defaultValueLiteral="iterative">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The way in which the executions interact:&#xD;&#xA;parallel: all interactions are independent&#xD;&#xA;iterative: the interactions occur in order of the elements&#xD;&#xA;stream: a stream of values flows into a single execution&#xD;&#xA;"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputElement" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsInput">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An object node that holds a separate element of the input collection during each of the multiple executions of the region."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputElement" ordered="false"
+ upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsOutput">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="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."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ExpansionKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="ExpansionKind is an enumeration type used to specify how multiple executions of an expansion region interact."/>
+ </eAnnotations>
+ <eLiterals name="parallel">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The executions are independent. They may be executed concurrently."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="iterative" value="1">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The executions are dependent and must be executed one at a time, in order of the collection elements."/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="stream" value="2">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A stream of collection elements flows into a single execution, in order of the collection elements."/>
+ </eAnnotations>
+ </eLiterals>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProtocolTransition" eSuperTypes="#//Transition">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol transition specifies a legal transition for an operation. Transitions of protocol state machines have the following information: a pre condition (guard), on trigger, and a post condition. Every protocol transition is associated to zero or one operation (referred BehavioralFeature) that belongs to the context classifier of the protocol state machine."/>
+ </eAnnotations>
+ <eOperations name="belongs_to_psm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol transition always belongs to a protocol state machine.&#xD;&#xA;container.belongsToPSM()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="associated_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A protocol transition never has associated actions.&#xD;&#xA;effect->isEmpty()"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="refers_to_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="If a protocol transition refers to an operation (i. e. has a call trigger corresponding to an operation), then that operation should apply to the context classifier of the state machine of the protocol transition.&#xD;&#xA;true"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the post condition of the transition which is the condition that should be obtained once the transition is triggered. This post condition is part of the post condition of the operation connected to the transition.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Namespace/ownedRule"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referred" ordered="false"
+ upperBound="-1" eType="#//Operation" changeable="false" volatile="true" transient="true"
+ derived="true">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This association refers to the associated operation. It is derived from the operation of the call trigger when applicable."/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="preCondition" ordered="false"
+ eType="#//Constraint">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Specifies the precondition of the transition. It specifies the condition that should be verified before triggering the transition. This guard condition added to the source state will be evaluated as part of the precondition of the operation referred by the transition if any."/>
+ </eAnnotations>
+ <eAnnotations source="subsets" references="#//Transition/guard"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A model element that has both association and class properties. An AssociationClass can be seen as an association that also has class properties, or as a class that also has association properties. It not only connects a set of classifiers but also defines a set of features that belong to the relationship itself and not to any of the classifiers."/>
+ </eAnnotations>
+ <eOperations name="cannot_be_defined" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="An AssociationClass cannot be defined between itself and something else.&#xD;&#xA;self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self))"/>
+ </eAnnotations>
+ <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
+ </eAnnotations>
+ </eParameters>
+ <eParameters name="context">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The cache of context-specific information."/>
+ </eAnnotations>
+ <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+ </eGenericType>
+ </eParameters>
+ </eOperations>
+ <eOperations name="allConnections" ordered="false" lowerBound="2" upperBound="-1"
+ eType="#//Property">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The operation allConnections results in the set of all AssociationEnds of the Association.&#xD;&#xA;result = memberEnd->union ( self.parents ()->collect (p | p.allConnections () )"/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/UML.merged.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/UML.merged.uml
new file mode 100644
index 0000000000..c76f229627
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/UML.merged.uml
@@ -0,0 +1,15806 @@
+<?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="_o8I_sGvaEdq4DLWZOhbdEA" name="UML">
+ <eAnnotations xmi:id="_UhWOUPoAEdu-e7JlHBQtRA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <eAnnotations xmi:id="_UhWOUfoAEdu-e7JlHBQtRA" source="InfrastructureLibrary::Core::Constructs" references="_UTfYifoAEdu-e7JlHBQtRA _UTfYjfoAEdu-e7JlHBQtRA _UTfYkfoAEdu-e7JlHBQtRA _UTfYlfoAEdu-e7JlHBQtRA _UToicPoAEdu-e7JlHBQtRA _UToidvoAEdu-e7JlHBQtRA _UToiffoAEdu-e7JlHBQtRA _UToihPoAEdu-e7JlHBQtRA _UToii_oAEdu-e7JlHBQtRA _UToikvoAEdu-e7JlHBQtRA _UToimfoAEdu-e7JlHBQtRA _UToio_oAEdu-e7JlHBQtRA _UToiq_oAEdu-e7JlHBQtRA _UToitfoAEdu-e7JlHBQtRA _6UV2QGwJEdq7X4sGURiZYA _UToivfoAEdu-e7JlHBQtRA _UToiwfoAEdu-e7JlHBQtRA _JBgfoKPAEdqi_5gqUMOQtA _UToizPoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA _UToi1PoAEdu-e7JlHBQtRA _UToi2PoAEdu-e7JlHBQtRA _UToi3_oAEdu-e7JlHBQtRA _kl90MGvbEdq4DLWZOhbdEA _UTyTc_oAEdu-e7JlHBQtRA _UTyTcPoAEdu-e7JlHBQtRA _UTyTgvoAEdu-e7JlHBQtRA _UTyThfoAEdu-e7JlHBQtRA _UTyTiPoAEdu-e7JlHBQtRA _UTyTjfoAEdu-e7JlHBQtRA _UTyTkvoAEdu-e7JlHBQtRA _UTyTmfoAEdu-e7JlHBQtRA _UTyTofoAEdu-e7JlHBQtRA _UTyTqfoAEdu-e7JlHBQtRA _UTyTrvoAEdu-e7JlHBQtRA _Gjgl0GveEdq4DLWZOhbdEA _UTyTuPoAEdu-e7JlHBQtRA _UTyTvPoAEdu-e7JlHBQtRA _UTyTwPoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA _UTyTyPoAEdu-e7JlHBQtRA _UTyTzPoAEdu-e7JlHBQtRA _UTyTz_oAEdu-e7JlHBQtRA _UTyT1voAEdu-e7JlHBQtRA _UTyT3voAEdu-e7JlHBQtRA _UTyT6PoAEdu-e7JlHBQtRA _UTyT8voAEdu-e7JlHBQtRA _ZiwkoGwLEdq7X4sGURiZYA _jKxnwGwLEdq7X4sGURiZYA _UT7dafoAEdu-e7JlHBQtRA _UT7dbfoAEdu-e7JlHBQtRA _UT7dcfoAEdu-e7JlHBQtRA _UT7dd_oAEdu-e7JlHBQtRA _UT7dYPoAEdu-e7JlHBQtRA _UT7df_oAEdu-e7JlHBQtRA _DH62EKPAEdqi_5gqUMOQtA _UT7dg_oAEdu-e7JlHBQtRA _UT7di_oAEdu-e7JlHBQtRA _UT7diPoAEdu-e7JlHBQtRA _UT7dk_oAEdu-e7JlHBQtRA _UT7dmPoAEdu-e7JlHBQtRA _UT7dnfoAEdu-e7JlHBQtRA _UT7dovoAEdu-e7JlHBQtRA _UT7dp_oAEdu-e7JlHBQtRA _UT7drPoAEdu-e7JlHBQtRA _UT7dj_oAEdu-e7JlHBQtRA _UT7dt_oAEdu-e7JlHBQtRA _UT7duvoAEdu-e7JlHBQtRA _UT7dvvoAEdu-e7JlHBQtRA _UT7dwvoAEdu-e7JlHBQtRA _UT7dxvoAEdu-e7JlHBQtRA _AwvxoGwNEdq7X4sGURiZYA _UT7dzPoAEdu-e7JlHBQtRA _UT7dz_oAEdu-e7JlHBQtRA _UT7d0_oAEdu-e7JlHBQtRA _UT7d1_oAEdu-e7JlHBQtRA _UUFOYPoAEdu-e7JlHBQtRA _00owUGvdEdq4DLWZOhbdEA _UUFOgfoAEdu-e7JlHBQtRA _UUFOhPoAEdu-e7JlHBQtRA _UUFOiPoAEdu-e7JlHBQtRA _UUFOi_oAEdu-e7JlHBQtRA _UUFOjvoAEdu-e7JlHBQtRA _UUFOkfoAEdu-e7JlHBQtRA _UUFOlfoAEdu-e7JlHBQtRA _UUFOmfoAEdu-e7JlHBQtRA _UUFOnfoAEdu-e7JlHBQtRA _UUFOofoAEdu-e7JlHBQtRA _UUFOpfoAEdu-e7JlHBQtRA _UUFOqfoAEdu-e7JlHBQtRA _UUFOrfoAEdu-e7JlHBQtRA _UUFOsvoAEdu-e7JlHBQtRA _UUFOuvoAEdu-e7JlHBQtRA _UUFOwfoAEdu-e7JlHBQtRA _UUFOxvoAEdu-e7JlHBQtRA _Jp_1oGveEdq4DLWZOhbdEA _UUFOzvoAEdu-e7JlHBQtRA _UUFO0voAEdu-e7JlHBQtRA _UUFO1voAEdu-e7JlHBQtRA __1ap4HLzEdqziYxiZo0YtA _UUFO4voAEdu-e7JlHBQtRA _I6N3UGwGEdq7X4sGURiZYA _UUFO6PoAEdu-e7JlHBQtRA _OQcbgGwOEdq7X4sGURiZYA _V6vuYGwGEdq7X4sGURiZYA _UUFO9_oAEdu-e7JlHBQtRA _UUFO-_oAEdu-e7JlHBQtRA _UUFO__oAEdu-e7JlHBQtRA _UUFO7voAEdu-e7JlHBQtRA _EOZfkC4xEduBJv9HKGdiyg _UUO_YPoAEdu-e7JlHBQtRA _ChRfcGveEdq4DLWZOhbdEA _UUO_bPoAEdu-e7JlHBQtRA _UUO_b_oAEdu-e7JlHBQtRA _UUO_cvoAEdu-e7JlHBQtRA _UUO_dfoAEdu-e7JlHBQtRA _UUO_evoAEdu-e7JlHBQtRA _UUO_f_oAEdu-e7JlHBQtRA _UUO_g_oAEdu-e7JlHBQtRA _UUO_h_oAEdu-e7JlHBQtRA _UUO_i_oAEdu-e7JlHBQtRA _UUO_j_oAEdu-e7JlHBQtRA _UUO_k_oAEdu-e7JlHBQtRA _UUO_l_oAEdu-e7JlHBQtRA _UUO_mvoAEdu-e7JlHBQtRA _UUO_nfoAEdu-e7JlHBQtRA _UUO_oPoAEdu-e7JlHBQtRA _UUO_pfoAEdu-e7JlHBQtRA _UUO_qvoAEdu-e7JlHBQtRA _UUO_r_oAEdu-e7JlHBQtRA _UUO_tPoAEdu-e7JlHBQtRA _UUO_ufoAEdu-e7JlHBQtRA _UUO_wfoAEdu-e7JlHBQtRA _M4X2IGveEdq4DLWZOhbdEA _UUO_yvoAEdu-e7JlHBQtRA _UUO_zvoAEdu-e7JlHBQtRA _UUO_0foAEdu-e7JlHBQtRA _KyaPMGveEdq4DLWZOhbdEA _UUO_2PoAEdu-e7JlHBQtRA _UUO_3PoAEdu-e7JlHBQtRA _UUO_4PoAEdu-e7JlHBQtRA _rHT3YKOsEdqi_5gqUMOQtA _UUYJVPoAEdu-e7JlHBQtRA _UUYJV_oAEdu-e7JlHBQtRA _UUYJW_oAEdu-e7JlHBQtRA _UUYJX_oAEdu-e7JlHBQtRA _UUYJY_oAEdu-e7JlHBQtRA _RPl78GwIEdq7X4sGURiZYA _UUYJbvoAEdu-e7JlHBQtRA _UUYJcvoAEdu-e7JlHBQtRA _UUYJdvoAEdu-e7JlHBQtRA _UUYJevoAEdu-e7JlHBQtRA _UUYJfvoAEdu-e7JlHBQtRA _UUYJgvoAEdu-e7JlHBQtRA _UUYJh_oAEdu-e7JlHBQtRA _UUYJjvoAEdu-e7JlHBQtRA _-cvRAGvzEdq7X4sGURiZYA _UUYJm_oAEdu-e7JlHBQtRA _UUYJnvoAEdu-e7JlHBQtRA _UUYJovoAEdu-e7JlHBQtRA _SnNPIGwIEdq7X4sGURiZYA _UUYJqfoAEdu-e7JlHBQtRA _UUYJrfoAEdu-e7JlHBQtRA _UUYJpvoAEdu-e7JlHBQtRA _UUYJtPoAEdu-e7JlHBQtRA _UUYJuPoAEdu-e7JlHBQtRA _ynRtoGvtEdqG6fBIPwe-mw _UUYJyfoAEdu-e7JlHBQtRA _UUYJzfoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UUYJ1foAEdu-e7JlHBQtRA _UUYJ2foAEdu-e7JlHBQtRA _UUYJ4PoAEdu-e7JlHBQtRA _UUYJ5_oAEdu-e7JlHBQtRA _UUYJ7PoAEdu-e7JlHBQtRA _csVgUGvtEdqG6fBIPwe-mw _UUYJ9PoAEdu-e7JlHBQtRA _UUYJ8foAEdu-e7JlHBQtRA _UUYJ-_oAEdu-e7JlHBQtRA _UUYJ__oAEdu-e7JlHBQtRA _UUYJ-PoAEdu-e7JlHBQtRA _UUYKA_oAEdu-e7JlHBQtRA _UUh6UPoAEdu-e7JlHBQtRA _AyM_oGwMEdq7X4sGURiZYA _UUh6YfoAEdu-e7JlHBQtRA _UUh6YPoAEdu-e7JlHBQtRA _UUh6ZPoAEdu-e7JlHBQtRA _UUh6ZfoAEdu-e7JlHBQtRA _UUh6ZvoAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA _UUh6Z_oAEdu-e7JlHBQtRA _UUh6bPoAEdu-e7JlHBQtRA _UUh6a_oAEdu-e7JlHBQtRA _UUh6cPoAEdu-e7JlHBQtRA _UUh6b_oAEdu-e7JlHBQtRA _UUh6dPoAEdu-e7JlHBQtRA _UUh6c_oAEdu-e7JlHBQtRA _UUh6ePoAEdu-e7JlHBQtRA _UUh6d_oAEdu-e7JlHBQtRA _UUh6fPoAEdu-e7JlHBQtRA _UUh6e_oAEdu-e7JlHBQtRA _UUh6f_oAEdu-e7JlHBQtRA _UUh6gPoAEdu-e7JlHBQtRA _UUh6gfoAEdu-e7JlHBQtRA _UUh6g_oAEdu-e7JlHBQtRA _UUh6gvoAEdu-e7JlHBQtRA _UUh6h_oAEdu-e7JlHBQtRA _UUh6hvoAEdu-e7JlHBQtRA _UUh6i_oAEdu-e7JlHBQtRA _UUh6ivoAEdu-e7JlHBQtRA _UUh6j_oAEdu-e7JlHBQtRA _UUh6jvoAEdu-e7JlHBQtRA _UUh6k_oAEdu-e7JlHBQtRA _UUh6kvoAEdu-e7JlHBQtRA _UUh6l_oAEdu-e7JlHBQtRA _UUh6lvoAEdu-e7JlHBQtRA _UUh6m_oAEdu-e7JlHBQtRA _UUh6mvoAEdu-e7JlHBQtRA _UUh6nvoAEdu-e7JlHBQtRA _UUh6n_oAEdu-e7JlHBQtRA _UUh6ofoAEdu-e7JlHBQtRA _UUh6oPoAEdu-e7JlHBQtRA _UUh6pPoAEdu-e7JlHBQtRA _UUh6pfoAEdu-e7JlHBQtRA _UUh6pvoAEdu-e7JlHBQtRA _UUh6qPoAEdu-e7JlHBQtRA _UUh6p_oAEdu-e7JlHBQtRA _UUh6q_oAEdu-e7JlHBQtRA _UUh6rfoAEdu-e7JlHBQtRA _UUh6rPoAEdu-e7JlHBQtRA _UUh6sPoAEdu-e7JlHBQtRA _UUh6svoAEdu-e7JlHBQtRA _UUh6sfoAEdu-e7JlHBQtRA _UUh6tvoAEdu-e7JlHBQtRA _UUh6tfoAEdu-e7JlHBQtRA _UUh6uvoAEdu-e7JlHBQtRA _UUh6ufoAEdu-e7JlHBQtRA _UUh6vvoAEdu-e7JlHBQtRA _UUh6vfoAEdu-e7JlHBQtRA _UUh6wvoAEdu-e7JlHBQtRA _UUh6wfoAEdu-e7JlHBQtRA _UUh6xvoAEdu-e7JlHBQtRA _UUh6xfoAEdu-e7JlHBQtRA _UUh6yfoAEdu-e7JlHBQtRA _UUh6y_oAEdu-e7JlHBQtRA _UUh6yvoAEdu-e7JlHBQtRA _UUh6z_oAEdu-e7JlHBQtRA _UUh6zvoAEdu-e7JlHBQtRA _UUh60_oAEdu-e7JlHBQtRA _UUh60voAEdu-e7JlHBQtRA _UUh61voAEdu-e7JlHBQtRA _UUh62PoAEdu-e7JlHBQtRA _UUh61_oAEdu-e7JlHBQtRA _UUh63PoAEdu-e7JlHBQtRA _UUh62_oAEdu-e7JlHBQtRA _UUh64PoAEdu-e7JlHBQtRA _UUh63_oAEdu-e7JlHBQtRA _UUh64_oAEdu-e7JlHBQtRA _UUh65foAEdu-e7JlHBQtRA _UUh65PoAEdu-e7JlHBQtRA _UUh66foAEdu-e7JlHBQtRA _UUh66PoAEdu-e7JlHBQtRA _UUh67foAEdu-e7JlHBQtRA _UUh67PoAEdu-e7JlHBQtRA _UUh68foAEdu-e7JlHBQtRA _UUh68PoAEdu-e7JlHBQtRA _UUrrUfoAEdu-e7JlHBQtRA _UUrrUPoAEdu-e7JlHBQtRA _UUrrVPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOUvoAEdu-e7JlHBQtRA" source="UML::Classes::Kernel" references="_UTfYifoAEdu-e7JlHBQtRA _UTfYjfoAEdu-e7JlHBQtRA _UTfYkfoAEdu-e7JlHBQtRA _UTfYlfoAEdu-e7JlHBQtRA _UToicPoAEdu-e7JlHBQtRA _UToidvoAEdu-e7JlHBQtRA _UToiffoAEdu-e7JlHBQtRA _UToihPoAEdu-e7JlHBQtRA _UToii_oAEdu-e7JlHBQtRA _UToikvoAEdu-e7JlHBQtRA _UToimfoAEdu-e7JlHBQtRA _UToio_oAEdu-e7JlHBQtRA _UToiq_oAEdu-e7JlHBQtRA _UToitfoAEdu-e7JlHBQtRA _6UV2QGwJEdq7X4sGURiZYA _UToivfoAEdu-e7JlHBQtRA _UToiwfoAEdu-e7JlHBQtRA _JBgfoKPAEdqi_5gqUMOQtA _UToizPoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA _UToi1PoAEdu-e7JlHBQtRA _UToi2PoAEdu-e7JlHBQtRA _UToi3_oAEdu-e7JlHBQtRA _kl90MGvbEdq4DLWZOhbdEA _UTyTc_oAEdu-e7JlHBQtRA _UTyTcPoAEdu-e7JlHBQtRA _UTyTgvoAEdu-e7JlHBQtRA _UTyThfoAEdu-e7JlHBQtRA _UTyTiPoAEdu-e7JlHBQtRA _UTyTjfoAEdu-e7JlHBQtRA _UTyTkvoAEdu-e7JlHBQtRA _UTyTmfoAEdu-e7JlHBQtRA _UTyTofoAEdu-e7JlHBQtRA _UTyTqfoAEdu-e7JlHBQtRA _UTyTrvoAEdu-e7JlHBQtRA _Gjgl0GveEdq4DLWZOhbdEA _UTyTuPoAEdu-e7JlHBQtRA _UTyTvPoAEdu-e7JlHBQtRA _UTyTwPoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA _UTyTyPoAEdu-e7JlHBQtRA _UTyTzPoAEdu-e7JlHBQtRA _UTyTz_oAEdu-e7JlHBQtRA _UTyT1voAEdu-e7JlHBQtRA _UTyT3voAEdu-e7JlHBQtRA _UTyT6PoAEdu-e7JlHBQtRA _UTyT8voAEdu-e7JlHBQtRA _ZiwkoGwLEdq7X4sGURiZYA _jKxnwGwLEdq7X4sGURiZYA _UT7dafoAEdu-e7JlHBQtRA _UT7dbfoAEdu-e7JlHBQtRA _UT7dcfoAEdu-e7JlHBQtRA _UT7dd_oAEdu-e7JlHBQtRA _UT7dYPoAEdu-e7JlHBQtRA _UT7df_oAEdu-e7JlHBQtRA _DH62EKPAEdqi_5gqUMOQtA _UT7dg_oAEdu-e7JlHBQtRA _UT7di_oAEdu-e7JlHBQtRA _UT7diPoAEdu-e7JlHBQtRA _UT7dk_oAEdu-e7JlHBQtRA _UT7dmPoAEdu-e7JlHBQtRA _UT7dnfoAEdu-e7JlHBQtRA _UT7dovoAEdu-e7JlHBQtRA _UT7dp_oAEdu-e7JlHBQtRA _UT7drPoAEdu-e7JlHBQtRA _UT7dj_oAEdu-e7JlHBQtRA _UT7dt_oAEdu-e7JlHBQtRA _UT7duvoAEdu-e7JlHBQtRA _UT7dvvoAEdu-e7JlHBQtRA _UT7dwvoAEdu-e7JlHBQtRA _UT7dxvoAEdu-e7JlHBQtRA _AwvxoGwNEdq7X4sGURiZYA _UT7dzPoAEdu-e7JlHBQtRA _UT7dz_oAEdu-e7JlHBQtRA _UT7d0_oAEdu-e7JlHBQtRA _UT7d1_oAEdu-e7JlHBQtRA _UUFOYPoAEdu-e7JlHBQtRA _00owUGvdEdq4DLWZOhbdEA _UUFOgfoAEdu-e7JlHBQtRA _UUFOhPoAEdu-e7JlHBQtRA _UUFOiPoAEdu-e7JlHBQtRA _UUFOi_oAEdu-e7JlHBQtRA _UUFOjvoAEdu-e7JlHBQtRA _UUFOkfoAEdu-e7JlHBQtRA _UUFOlfoAEdu-e7JlHBQtRA _UUFOmfoAEdu-e7JlHBQtRA _UUFOnfoAEdu-e7JlHBQtRA _UUFOofoAEdu-e7JlHBQtRA _UUFOpfoAEdu-e7JlHBQtRA _UUFOqfoAEdu-e7JlHBQtRA _UUFOrfoAEdu-e7JlHBQtRA _UUFOsvoAEdu-e7JlHBQtRA _UUFOuvoAEdu-e7JlHBQtRA _UUFOwfoAEdu-e7JlHBQtRA _UUFOxvoAEdu-e7JlHBQtRA _Jp_1oGveEdq4DLWZOhbdEA _UUFOzvoAEdu-e7JlHBQtRA _UUFO0voAEdu-e7JlHBQtRA __1ap4HLzEdqziYxiZo0YtA _UUFO4voAEdu-e7JlHBQtRA _I6N3UGwGEdq7X4sGURiZYA _UUFO6PoAEdu-e7JlHBQtRA _OQcbgGwOEdq7X4sGURiZYA _V6vuYGwGEdq7X4sGURiZYA _UUFO9_oAEdu-e7JlHBQtRA _UUFO-_oAEdu-e7JlHBQtRA _UUFO__oAEdu-e7JlHBQtRA _UUFO7voAEdu-e7JlHBQtRA _EOZfkC4xEduBJv9HKGdiyg _UUO_YPoAEdu-e7JlHBQtRA _ChRfcGveEdq4DLWZOhbdEA _UUO_bPoAEdu-e7JlHBQtRA _UUO_b_oAEdu-e7JlHBQtRA _UUO_cvoAEdu-e7JlHBQtRA _UUO_dfoAEdu-e7JlHBQtRA _UUO_evoAEdu-e7JlHBQtRA _UUO_f_oAEdu-e7JlHBQtRA _UUO_g_oAEdu-e7JlHBQtRA _UUO_h_oAEdu-e7JlHBQtRA _UUO_i_oAEdu-e7JlHBQtRA _UUO_j_oAEdu-e7JlHBQtRA _UUO_k_oAEdu-e7JlHBQtRA _UUO_l_oAEdu-e7JlHBQtRA _UUO_mvoAEdu-e7JlHBQtRA _UUO_nfoAEdu-e7JlHBQtRA _UUO_oPoAEdu-e7JlHBQtRA _UUO_pfoAEdu-e7JlHBQtRA _UUO_qvoAEdu-e7JlHBQtRA _UUO_r_oAEdu-e7JlHBQtRA _UUO_tPoAEdu-e7JlHBQtRA _UUO_ufoAEdu-e7JlHBQtRA _UUO_wfoAEdu-e7JlHBQtRA _M4X2IGveEdq4DLWZOhbdEA _UUO_yvoAEdu-e7JlHBQtRA _UUO_zvoAEdu-e7JlHBQtRA _UUO_0foAEdu-e7JlHBQtRA _KyaPMGveEdq4DLWZOhbdEA _UUO_2PoAEdu-e7JlHBQtRA _UUO_3PoAEdu-e7JlHBQtRA _UUO_4PoAEdu-e7JlHBQtRA _rHT3YKOsEdqi_5gqUMOQtA _UUYJVPoAEdu-e7JlHBQtRA _UUYJV_oAEdu-e7JlHBQtRA _UUYJW_oAEdu-e7JlHBQtRA _UUYJX_oAEdu-e7JlHBQtRA _UUYJY_oAEdu-e7JlHBQtRA _RPl78GwIEdq7X4sGURiZYA _UUYJbvoAEdu-e7JlHBQtRA _UUYJcvoAEdu-e7JlHBQtRA _UUYJdvoAEdu-e7JlHBQtRA _UUYJevoAEdu-e7JlHBQtRA _UUYJfvoAEdu-e7JlHBQtRA _UUYJgvoAEdu-e7JlHBQtRA _UUYJh_oAEdu-e7JlHBQtRA _UUYJjvoAEdu-e7JlHBQtRA _-cvRAGvzEdq7X4sGURiZYA _UUYJm_oAEdu-e7JlHBQtRA _UUYJnvoAEdu-e7JlHBQtRA _UUYJovoAEdu-e7JlHBQtRA _SnNPIGwIEdq7X4sGURiZYA _UUYJqfoAEdu-e7JlHBQtRA _UUYJrfoAEdu-e7JlHBQtRA _UUYJpvoAEdu-e7JlHBQtRA _UUYJtPoAEdu-e7JlHBQtRA _UUYJuPoAEdu-e7JlHBQtRA _ynRtoGvtEdqG6fBIPwe-mw _UUYJyfoAEdu-e7JlHBQtRA _UUYJzfoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UUYJ1foAEdu-e7JlHBQtRA _UUYJ2foAEdu-e7JlHBQtRA _UUYJ4PoAEdu-e7JlHBQtRA _UUYJ5_oAEdu-e7JlHBQtRA _csVgUGvtEdqG6fBIPwe-mw _UUYJ9PoAEdu-e7JlHBQtRA _UUYJ8foAEdu-e7JlHBQtRA _UUYJ-_oAEdu-e7JlHBQtRA _UUYJ__oAEdu-e7JlHBQtRA _UUYJ-PoAEdu-e7JlHBQtRA _UUYKA_oAEdu-e7JlHBQtRA _UUh6UPoAEdu-e7JlHBQtRA _AyM_oGwMEdq7X4sGURiZYA _UUh6YfoAEdu-e7JlHBQtRA _UUh6YPoAEdu-e7JlHBQtRA _UUh6ZPoAEdu-e7JlHBQtRA _UUh6ZfoAEdu-e7JlHBQtRA _UUh6ZvoAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA _UUh6Z_oAEdu-e7JlHBQtRA _UUh6bPoAEdu-e7JlHBQtRA _UUh6a_oAEdu-e7JlHBQtRA _UUh6cPoAEdu-e7JlHBQtRA _UUh6b_oAEdu-e7JlHBQtRA _UUh6dPoAEdu-e7JlHBQtRA _UUh6c_oAEdu-e7JlHBQtRA _UUh6ePoAEdu-e7JlHBQtRA _UUh6d_oAEdu-e7JlHBQtRA _UUh6fPoAEdu-e7JlHBQtRA _UUh6e_oAEdu-e7JlHBQtRA _UUh6f_oAEdu-e7JlHBQtRA _UUh6gPoAEdu-e7JlHBQtRA _UUh6gfoAEdu-e7JlHBQtRA _UUh6g_oAEdu-e7JlHBQtRA _UUh6gvoAEdu-e7JlHBQtRA _UUh6h_oAEdu-e7JlHBQtRA _UUh6hvoAEdu-e7JlHBQtRA _UUh6i_oAEdu-e7JlHBQtRA _UUh6ivoAEdu-e7JlHBQtRA _UUh6j_oAEdu-e7JlHBQtRA _UUh6jvoAEdu-e7JlHBQtRA _UUh6k_oAEdu-e7JlHBQtRA _UUh6kvoAEdu-e7JlHBQtRA _UUh6l_oAEdu-e7JlHBQtRA _UUh6lvoAEdu-e7JlHBQtRA _UUh6m_oAEdu-e7JlHBQtRA _UUh6mvoAEdu-e7JlHBQtRA _UUh6nvoAEdu-e7JlHBQtRA _UUh6n_oAEdu-e7JlHBQtRA _UUh6ofoAEdu-e7JlHBQtRA _UUh6oPoAEdu-e7JlHBQtRA _UUh6pPoAEdu-e7JlHBQtRA _UUh6pfoAEdu-e7JlHBQtRA _UUh6pvoAEdu-e7JlHBQtRA _UUh6qPoAEdu-e7JlHBQtRA _UUh6p_oAEdu-e7JlHBQtRA _UUh6q_oAEdu-e7JlHBQtRA _UUh6rfoAEdu-e7JlHBQtRA _UUh6rPoAEdu-e7JlHBQtRA _UUh6sPoAEdu-e7JlHBQtRA _UUh6svoAEdu-e7JlHBQtRA _UUh6sfoAEdu-e7JlHBQtRA _UUh6tvoAEdu-e7JlHBQtRA _UUh6tfoAEdu-e7JlHBQtRA _UUh6uvoAEdu-e7JlHBQtRA _UUh6ufoAEdu-e7JlHBQtRA _UUh6vvoAEdu-e7JlHBQtRA _UUh6vfoAEdu-e7JlHBQtRA _UUh6wvoAEdu-e7JlHBQtRA _UUh6wfoAEdu-e7JlHBQtRA _UUh6xvoAEdu-e7JlHBQtRA _UUh6xfoAEdu-e7JlHBQtRA _UUh6yfoAEdu-e7JlHBQtRA _UUh6y_oAEdu-e7JlHBQtRA _UUh6yvoAEdu-e7JlHBQtRA _UUh6z_oAEdu-e7JlHBQtRA _UUh6zvoAEdu-e7JlHBQtRA _UUh60_oAEdu-e7JlHBQtRA _UUh60voAEdu-e7JlHBQtRA _UUh61voAEdu-e7JlHBQtRA _UUh62PoAEdu-e7JlHBQtRA _UUh61_oAEdu-e7JlHBQtRA _UUh63PoAEdu-e7JlHBQtRA _UUh62_oAEdu-e7JlHBQtRA _UUh64PoAEdu-e7JlHBQtRA _UUh63_oAEdu-e7JlHBQtRA _UUh64_oAEdu-e7JlHBQtRA _UUh65foAEdu-e7JlHBQtRA _UUh65PoAEdu-e7JlHBQtRA _UUh66foAEdu-e7JlHBQtRA _UUh66PoAEdu-e7JlHBQtRA _UUh67foAEdu-e7JlHBQtRA _UUh67PoAEdu-e7JlHBQtRA _UUh68foAEdu-e7JlHBQtRA _UUh68PoAEdu-e7JlHBQtRA _UUrrUfoAEdu-e7JlHBQtRA _UUrrUPoAEdu-e7JlHBQtRA _UUrrVPoAEdu-e7JlHBQtRA _UVRhQvoAEdu-e7JlHBQtRA _UVRhSvoAEdu-e7JlHBQtRA _UVRhUfoAEdu-e7JlHBQtRA _UVRhVvoAEdu-e7JlHBQtRA _UVRhXfoAEdu-e7JlHBQtRA _UVRhZPoAEdu-e7JlHBQtRA _UVRhafoAEdu-e7JlHBQtRA _UVRhbPoAEdu-e7JlHBQtRA _UVbSMPoAEdu-e7JlHBQtRA _Dy77oGveEdq4DLWZOhbdEA _UVbSN_oAEdu-e7JlHBQtRA _UVbSO_oAEdu-e7JlHBQtRA _UVbSQPoAEdu-e7JlHBQtRA _5jXJsTEkEdu9VoNTbEBQkQ _UVbSR_oAEdu-e7JlHBQtRA _UVbSSvoAEdu-e7JlHBQtRA _UVbST_oAEdu-e7JlHBQtRA _FFMNsGveEdq4DLWZOhbdEA _UVbSV_oAEdu-e7JlHBQtRA _UVbSXPoAEdu-e7JlHBQtRA _UVbSVPoAEdu-e7JlHBQtRA _UVkcLvoAEdu-e7JlHBQtRA _UVkcMvoAEdu-e7JlHBQtRA _UVkcNvoAEdu-e7JlHBQtRA _UVkcO_oAEdu-e7JlHBQtRA _UVuNIfoAEdu-e7JlHBQtRA _UVuNJPoAEdu-e7JlHBQtRA _UVuNL_oAEdu-e7JlHBQtRA _UWd0DfoAEdu-e7JlHBQtRA _UWd0FPoAEdu-e7JlHBQtRA _UWd0IfoAEdu-e7JlHBQtRA _UWd0JfoAEdu-e7JlHBQtRA _UWd0KfoAEdu-e7JlHBQtRA _C7AF4GwREdq14q0ETb1t3g _UWnlA_oAEdu-e7JlHBQtRA _UWnlCvoAEdu-e7JlHBQtRA _UWnlFvoAEdu-e7JlHBQtRA _UWnlGvoAEdu-e7JlHBQtRA _UWnlHvoAEdu-e7JlHBQtRA _UWnlDfoAEdu-e7JlHBQtRA _UWnlJfoAEdu-e7JlHBQtRA _UWnlKfoAEdu-e7JlHBQtRA _UWnlLfoAEdu-e7JlHBQtRA _UWnlIvoAEdu-e7JlHBQtRA _UWnlSvoAEdu-e7JlHBQtRA _UWwvBvoAEdu-e7JlHBQtRA _UWwvEvoAEdu-e7JlHBQtRA _UWwvHvoAEdu-e7JlHBQtRA _UXEREPoAEdu-e7JlHBQtRA _UXNa9foAEdu-e7JlHBQtRA _PyCx8GveEdq4DLWZOhbdEA _UXNa-_oAEdu-e7JlHBQtRA _UXNa_voAEdu-e7JlHBQtRA _UXNbA_oAEdu-e7JlHBQtRA _Q-yR4GveEdq4DLWZOhbdEA _UXNbDfoAEdu-e7JlHBQtRA _B3q9cGwNEdq7X4sGURiZYA _UXXL8foAEdu-e7JlHBQtRA _UXXL8_oAEdu-e7JlHBQtRA _UXXL8voAEdu-e7JlHBQtRA _UXXL-foAEdu-e7JlHBQtRA _UXXL-PoAEdu-e7JlHBQtRA _UXXL_PoAEdu-e7JlHBQtRA _UXXL_voAEdu-e7JlHBQtRA _UXXL_foAEdu-e7JlHBQtRA _UXXMCPoAEdu-e7JlHBQtRA _UXXMB_oAEdu-e7JlHBQtRA _UXXMGPoAEdu-e7JlHBQtRA _UXXMF_oAEdu-e7JlHBQtRA _UXXMHvoAEdu-e7JlHBQtRA _UXXMHfoAEdu-e7JlHBQtRA _UXXMIvoAEdu-e7JlHBQtRA _UXXMIfoAEdu-e7JlHBQtRA _UXgV0_oAEdu-e7JlHBQtRA _UXgV0voAEdu-e7JlHBQtRA _UXgV1_oAEdu-e7JlHBQtRA _UXgV1voAEdu-e7JlHBQtRA _UXgV3foAEdu-e7JlHBQtRA _UXgV3PoAEdu-e7JlHBQtRA _UXgV4foAEdu-e7JlHBQtRA _UXgV4PoAEdu-e7JlHBQtRA _UXgV5foAEdu-e7JlHBQtRA _UXgV5PoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOU_oAEdu-e7JlHBQtRA" source="UML::CompositeStructures::InternalStructures" references="_UTfYifoAEdu-e7JlHBQtRA _6UV2QGwJEdq7X4sGURiZYA _Jp_1oGveEdq4DLWZOhbdEA _UUh6aPoAEdu-e7JlHBQtRA _UUh6Z_oAEdu-e7JlHBQtRA _UYZtx_oAEdu-e7JlHBQtRA _UYZty_oAEdu-e7JlHBQtRA _aOgw0GveEdq4DLWZOhbdEA _UYZt2_oAEdu-e7JlHBQtRA _UYZt3_oAEdu-e7JlHBQtRA _UYZt4_oAEdu-e7JlHBQtRA _UYZtz_oAEdu-e7JlHBQtRA _UYZt7voAEdu-e7JlHBQtRA _UYZt8voAEdu-e7JlHBQtRA _UYZt9voAEdu-e7JlHBQtRA _UYZt-voAEdu-e7JlHBQtRA _FQiVsGwYEdqHKKVoxc0dlA _UYZuAfoAEdu-e7JlHBQtRA _UYZt_voAEdu-e7JlHBQtRA _UYZuCfoAEdu-e7JlHBQtRA _UYZuCPoAEdu-e7JlHBQtRA _UYZuDfoAEdu-e7JlHBQtRA _UYZuDPoAEdu-e7JlHBQtRA _UYZuEfoAEdu-e7JlHBQtRA _UYZuEPoAEdu-e7JlHBQtRA _UYZuFfoAEdu-e7JlHBQtRA _UYZuFPoAEdu-e7JlHBQtRA _UYZuGfoAEdu-e7JlHBQtRA _UYZuGPoAEdu-e7JlHBQtRA _UYZuHfoAEdu-e7JlHBQtRA _UYZuHPoAEdu-e7JlHBQtRA _UYZuIfoAEdu-e7JlHBQtRA _UYZuIPoAEdu-e7JlHBQtRA _UYZuJfoAEdu-e7JlHBQtRA _UYZuJPoAEdu-e7JlHBQtRA _UYZuKPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOVPoAEdu-e7JlHBQtRA" source="UML::Classes::Dependencies" references="_6UV2QGwJEdq7X4sGURiZYA _UTyTxPoAEdu-e7JlHBQtRA _ZiwkoGwLEdq7X4sGURiZYA _jKxnwGwLEdq7X4sGURiZYA _UUYJ0foAEdu-e7JlHBQtRA _csVgUGvtEdqG6fBIPwe-mw _UUh61voAEdu-e7JlHBQtRA _h18oENlrEduDKPkA-0jJZg _UYQjxvoAEdu-e7JlHBQtRA _UYQjw_oAEdu-e7JlHBQtRA _UYQjzfoAEdu-e7JlHBQtRA _UYQj0foAEdu-e7JlHBQtRA _rEDGkGwKEdq7X4sGURiZYA _UYQj1foAEdu-e7JlHBQtRA _UYQj2_oAEdu-e7JlHBQtRA _UYQj3_oAEdu-e7JlHBQtRA _UYQj2PoAEdu-e7JlHBQtRA _UYQj5PoAEdu-e7JlHBQtRA _UYQj6PoAEdu-e7JlHBQtRA _UYQj8foAEdu-e7JlHBQtRA _UYQj8PoAEdu-e7JlHBQtRA _UYQj9foAEdu-e7JlHBQtRA _UYQj9PoAEdu-e7JlHBQtRA _UYQj-PoAEdu-e7JlHBQtRA _UYQj-voAEdu-e7JlHBQtRA _UYQj-foAEdu-e7JlHBQtRA _UYQj_voAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOVfoAEdu-e7JlHBQtRA" source="UML::CompositeStructures::Collaborations" references="_6UV2QGwJEdq7X4sGURiZYA _KyaPMGveEdq4DLWZOhbdEA _UYjevPoAEdu-e7JlHBQtRA _UYjewPoAEdu-e7JlHBQtRA _UYjesPoAEdu-e7JlHBQtRA _UYjeyfoAEdu-e7JlHBQtRA _UYjexPoAEdu-e7JlHBQtRA _UYjezfoAEdu-e7JlHBQtRA _UYje0foAEdu-e7JlHBQtRA _UYje2_oAEdu-e7JlHBQtRA _UYje2voAEdu-e7JlHBQtRA _UYje3_oAEdu-e7JlHBQtRA _UYje3voAEdu-e7JlHBQtRA _UYje4_oAEdu-e7JlHBQtRA _UYje4voAEdu-e7JlHBQtRA _UYje5_oAEdu-e7JlHBQtRA _UYje5voAEdu-e7JlHBQtRA _UYje6_oAEdu-e7JlHBQtRA _UYje6voAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOVvoAEdu-e7JlHBQtRA" source="UML::UseCases" references="_6UV2QGwJEdq7X4sGURiZYA _UY2aGvoAEdu-e7JlHBQtRA _UY2aKvoAEdu-e7JlHBQtRA _UY2aLvoAEdu-e7JlHBQtRA _UY2aMvoAEdu-e7JlHBQtRA _UY2aNvoAEdu-e7JlHBQtRA _UY2aI_oAEdu-e7JlHBQtRA _UY2aPvoAEdu-e7JlHBQtRA _UY2aQvoAEdu-e7JlHBQtRA _UY2aOvoAEdu-e7JlHBQtRA _UY2aVfoAEdu-e7JlHBQtRA _UY2aWfoAEdu-e7JlHBQtRA _UY2aXfoAEdu-e7JlHBQtRA _UY2aYfoAEdu-e7JlHBQtRA _UY2aZfoAEdu-e7JlHBQtRA _UY2aRvoAEdu-e7JlHBQtRA _UY2acvoAEdu-e7JlHBQtRA _UY2abPoAEdu-e7JlHBQtRA _UY2ad_oAEdu-e7JlHBQtRA _UY2ae_oAEdu-e7JlHBQtRA _UZAKoPoAEdu-e7JlHBQtRA _UZAKovoAEdu-e7JlHBQtRA _UZAKofoAEdu-e7JlHBQtRA _UZAKpvoAEdu-e7JlHBQtRA _UZAKpfoAEdu-e7JlHBQtRA _UZAKqfoAEdu-e7JlHBQtRA _UZAKqvoAEdu-e7JlHBQtRA _UZAKrPoAEdu-e7JlHBQtRA _UZAKq_oAEdu-e7JlHBQtRA _UZAKsPoAEdu-e7JlHBQtRA _UZAKr_oAEdu-e7JlHBQtRA _UZAKtPoAEdu-e7JlHBQtRA _UZAKs_oAEdu-e7JlHBQtRA _UZAKt_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOV_oAEdu-e7JlHBQtRA" source="UML::Classes::PowerTypes" references="_6UV2QGwJEdq7X4sGURiZYA _C7AF4GwREdq14q0ETb1t3g _UbO_YfoAEdu-e7JlHBQtRA _UbO_ZPoAEdu-e7JlHBQtRA _UbO_Z_oAEdu-e7JlHBQtRA _UbO_a_oAEdu-e7JlHBQtRA _UbO_WPoAEdu-e7JlHBQtRA _UbO_cvoAEdu-e7JlHBQtRA _UbO_evoAEdu-e7JlHBQtRA _UbO_fvoAEdu-e7JlHBQtRA _UbO_f_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhWOWPoAEdu-e7JlHBQtRA" source="UML::AuxiliaryConstructs::Templates" references="_6UV2QGwJEdq7X4sGURiZYA _jKxnwGwLEdq7X4sGURiZYA _UT7dj_oAEdu-e7JlHBQtRA _Jp_1oGveEdq4DLWZOhbdEA _M4X2IGveEdq4DLWZOhbdEA _-cvRAGvzEdq7X4sGURiZYA _csVgUGvtEdqG6fBIPwe-mw _UYZt_voAEdu-e7JlHBQtRA _UcRhTvoAEdu-e7JlHBQtRA _UcRhUvoAEdu-e7JlHBQtRA _UcRhVvoAEdu-e7JlHBQtRA _UcRhSPoAEdu-e7JlHBQtRA _UcRhW_oAEdu-e7JlHBQtRA _UcRhZPoAEdu-e7JlHBQtRA _UcbSEPoAEdu-e7JlHBQtRA _UcbSFPoAEdu-e7JlHBQtRA _UcbSGPoAEdu-e7JlHBQtRA _UcbSHPoAEdu-e7JlHBQtRA _KxRzgGvuEdqG6fBIPwe-mw _UcbSKvoAEdu-e7JlHBQtRA _UcbSLvoAEdu-e7JlHBQtRA _UcbSMvoAEdu-e7JlHBQtRA _UcbSIPoAEdu-e7JlHBQtRA _UcbSQPoAEdu-e7JlHBQtRA _UcbSRPoAEdu-e7JlHBQtRA _UcbSSPoAEdu-e7JlHBQtRA _UcbSN_oAEdu-e7JlHBQtRA _UcbSUvoAEdu-e7JlHBQtRA _UcbSVvoAEdu-e7JlHBQtRA _UcbSWvoAEdu-e7JlHBQtRA _UcbSXvoAEdu-e7JlHBQtRA _UcbSTPoAEdu-e7JlHBQtRA _UcbSZfoAEdu-e7JlHBQtRA _UcbSafoAEdu-e7JlHBQtRA _UcbSbfoAEdu-e7JlHBQtRA _UcbSdPoAEdu-e7JlHBQtRA _UcbSYvoAEdu-e7JlHBQtRA _UcbSfPoAEdu-e7JlHBQtRA _UcbSgPoAEdu-e7JlHBQtRA _UcbShPoAEdu-e7JlHBQtRA _UcbSivoAEdu-e7JlHBQtRA _UcbSefoAEdu-e7JlHBQtRA _UcbSlfoAEdu-e7JlHBQtRA _UcbSnfoAEdu-e7JlHBQtRA _UcbSpvoAEdu-e7JlHBQtRA _UcbSrfoAEdu-e7JlHBQtRA _UcbSqvoAEdu-e7JlHBQtRA _UcbStvoAEdu-e7JlHBQtRA _UcbSuvoAEdu-e7JlHBQtRA _UcbSvvoAEdu-e7JlHBQtRA _UclDFvoAEdu-e7JlHBQtRA _UclDGfoAEdu-e7JlHBQtRA _UclDHfoAEdu-e7JlHBQtRA _UclDIfoAEdu-e7JlHBQtRA _UclDEPoAEdu-e7JlHBQtRA _UclDK_oAEdu-e7JlHBQtRA _UclDL_oAEdu-e7JlHBQtRA _UclDM_oAEdu-e7JlHBQtRA _UclDN_oAEdu-e7JlHBQtRA _9keOQGvdEdq4DLWZOhbdEA _UclDQfoAEdu-e7JlHBQtRA _UclDSPoAEdu-e7JlHBQtRA _UclDRfoAEdu-e7JlHBQtRA _UclDT_oAEdu-e7JlHBQtRA _UclDTvoAEdu-e7JlHBQtRA _UclDUvoAEdu-e7JlHBQtRA _UclDU_oAEdu-e7JlHBQtRA _UclDVfoAEdu-e7JlHBQtRA _UclDVPoAEdu-e7JlHBQtRA _UclDWfoAEdu-e7JlHBQtRA _UclDWPoAEdu-e7JlHBQtRA _UclDXPoAEdu-e7JlHBQtRA _UclDXvoAEdu-e7JlHBQtRA _UclDXfoAEdu-e7JlHBQtRA _UclDYfoAEdu-e7JlHBQtRA _UclDYvoAEdu-e7JlHBQtRA _UclDY_oAEdu-e7JlHBQtRA _UclDZPoAEdu-e7JlHBQtRA _UclDZvoAEdu-e7JlHBQtRA _UclDZfoAEdu-e7JlHBQtRA _UclDavoAEdu-e7JlHBQtRA _UclDafoAEdu-e7JlHBQtRA _UclDbvoAEdu-e7JlHBQtRA _UclDbfoAEdu-e7JlHBQtRA _UclDcfoAEdu-e7JlHBQtRA _UclDc_oAEdu-e7JlHBQtRA _UclDcvoAEdu-e7JlHBQtRA _UclDd_oAEdu-e7JlHBQtRA _UclDdvoAEdu-e7JlHBQtRA _UclDevoAEdu-e7JlHBQtRA _UclDfPoAEdu-e7JlHBQtRA _UclDe_oAEdu-e7JlHBQtRA _UclDf_oAEdu-e7JlHBQtRA _UclDgPoAEdu-e7JlHBQtRA _UclDgvoAEdu-e7JlHBQtRA _UclDgfoAEdu-e7JlHBQtRA _UclDhPoAEdu-e7JlHBQtRA _UclDg_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYQPoAEdu-e7JlHBQtRA" source="InfrastructureLibrary::Profiles" references="_kl90MGvbEdq4DLWZOhbdEA _00owUGvdEdq4DLWZOhbdEA _-cvRAGvzEdq7X4sGURiZYA _csVgUGvtEdqG6fBIPwe-mw _Ua8EWvoAEdu-e7JlHBQtRA _A7vDAGv0Edq7X4sGURiZYA _Ua8EZvoAEdu-e7JlHBQtRA _Ua8EavoAEdu-e7JlHBQtRA _Ua8EbvoAEdu-e7JlHBQtRA __pew8GvzEdq7X4sGURiZYA _Ua8Ec_oAEdu-e7JlHBQtRA _Ua8EePoAEdu-e7JlHBQtRA _Ua8EfvoAEdu-e7JlHBQtRA _Ua8EgvoAEdu-e7JlHBQtRA _Ua8EhfoAEdu-e7JlHBQtRA _uY5yQGv5Edq7X4sGURiZYA _Ua8EkfoAEdu-e7JlHBQtRA _Ua8ElPoAEdu-e7JlHBQtRA _Ua8EmPoAEdu-e7JlHBQtRA _Ua8EnPoAEdu-e7JlHBQtRA _Ua8EofoAEdu-e7JlHBQtRA _Ua8EpvoAEdu-e7JlHBQtRA _skHGwGvsEdqG6fBIPwe-mw _Ua8Es_oAEdu-e7JlHBQtRA _Ua8Et_oAEdu-e7JlHBQtRA _Ua8EvPoAEdu-e7JlHBQtRA _2QuT0GvdEdq4DLWZOhbdEA _Ua8Ew_oAEdu-e7JlHBQtRA _Ua8Ex_oAEdu-e7JlHBQtRA _Ua8Ey_oAEdu-e7JlHBQtRA _nDq0wJPzEdqpjIDDFZ2Hgw _UbFOQPoAEdu-e7JlHBQtRA _UbFOR_oAEdu-e7JlHBQtRA _UbFOSfoAEdu-e7JlHBQtRA _UbFOSPoAEdu-e7JlHBQtRA _UbFOTfoAEdu-e7JlHBQtRA _UbFOTPoAEdu-e7JlHBQtRA _UbFOUPoAEdu-e7JlHBQtRA _UbFOUvoAEdu-e7JlHBQtRA _UbFOUfoAEdu-e7JlHBQtRA _UbFOVvoAEdu-e7JlHBQtRA _UbFOVfoAEdu-e7JlHBQtRA _UbFOWvoAEdu-e7JlHBQtRA _UbFOWfoAEdu-e7JlHBQtRA _UbFOXvoAEdu-e7JlHBQtRA _UbFOXfoAEdu-e7JlHBQtRA _UbFOYvoAEdu-e7JlHBQtRA _UbFOYfoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYQfoAEdu-e7JlHBQtRA" source="UML::Actions::BasicActions" references="_Gjgl0GveEdq4DLWZOhbdEA _c_GaAC7qEdutFcse1QllAQ _UXz4F_oAEdu-e7JlHBQtRA _UXz4G_oAEdu-e7JlHBQtRA _UXz4H_oAEdu-e7JlHBQtRA _OUnikC7qEdutFcse1QllAQ _UXz4I_oAEdu-e7JlHBQtRA _UXz4LfoAEdu-e7JlHBQtRA _UXz4J_oAEdu-e7JlHBQtRA _UXz4MfoAEdu-e7JlHBQtRA _UXz4NPoAEdu-e7JlHBQtRA _UXz4OvoAEdu-e7JlHBQtRA _UXz4N_oAEdu-e7JlHBQtRA _UXz4SvoAEdu-e7JlHBQtRA _UXz4TfoAEdu-e7JlHBQtRA _UXz4PvoAEdu-e7JlHBQtRA _UX9ByfoAEdu-e7JlHBQtRA _UX9BzfoAEdu-e7JlHBQtRA _UX9BwPoAEdu-e7JlHBQtRA _UX9B4PoAEdu-e7JlHBQtRA _UX9B5PoAEdu-e7JlHBQtRA _UX9B0foAEdu-e7JlHBQtRA _UX9B9PoAEdu-e7JlHBQtRA _UX9B6PoAEdu-e7JlHBQtRA _UX9B-_oAEdu-e7JlHBQtRA _UX9B__oAEdu-e7JlHBQtRA _UX9CA_oAEdu-e7JlHBQtRA _UX9B-PoAEdu-e7JlHBQtRA _UX9CB_oAEdu-e7JlHBQtRA _UX9CDfoAEdu-e7JlHBQtRA _UX9CFfoAEdu-e7JlHBQtRA _UX9CFPoAEdu-e7JlHBQtRA _UX9CGfoAEdu-e7JlHBQtRA _UX9CGPoAEdu-e7JlHBQtRA _UX9CHfoAEdu-e7JlHBQtRA _UX9CHPoAEdu-e7JlHBQtRA _UX9CIfoAEdu-e7JlHBQtRA _UX9CIPoAEdu-e7JlHBQtRA _UX9CJfoAEdu-e7JlHBQtRA _UX9CJPoAEdu-e7JlHBQtRA _UX9CKfoAEdu-e7JlHBQtRA _UX9CKPoAEdu-e7JlHBQtRA _UX9CLfoAEdu-e7JlHBQtRA _UX9CLPoAEdu-e7JlHBQtRA _UX9CMfoAEdu-e7JlHBQtRA _UX9CMPoAEdu-e7JlHBQtRA _UX9CNfoAEdu-e7JlHBQtRA _UX9CNPoAEdu-e7JlHBQtRA _UX9COfoAEdu-e7JlHBQtRA _UX9COPoAEdu-e7JlHBQtRA _UX9CPfoAEdu-e7JlHBQtRA _UX9CPPoAEdu-e7JlHBQtRA _UX9CQfoAEdu-e7JlHBQtRA _UX9CQPoAEdu-e7JlHBQtRA _UX9CRfoAEdu-e7JlHBQtRA _UX9CRPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYQvoAEdu-e7JlHBQtRA" source="UML::CommonBehaviors::Communications" references="_00owUGvdEdq4DLWZOhbdEA _M4X2IGveEdq4DLWZOhbdEA _UUO_3PoAEdu-e7JlHBQtRA _rHT3YKOsEdqi_5gqUMOQtA _UUh6j_oAEdu-e7JlHBQtRA _UUh6jvoAEdu-e7JlHBQtRA _iY7sMGvsEdqG6fBIPwe-mw _8Ugn8GvtEdqG6fBIPwe-mw _UZAKuPoAEdu-e7JlHBQtRA _UZAKwfoAEdu-e7JlHBQtRA _UZAKvvoAEdu-e7JlHBQtRA _UZAKyPoAEdu-e7JlHBQtRA _UZAKxfoAEdu-e7JlHBQtRA _UZAK0foAEdu-e7JlHBQtRA _UZAK1PoAEdu-e7JlHBQtRA _UZAK2_oAEdu-e7JlHBQtRA _UZAK2PoAEdu-e7JlHBQtRA _UZAK4PoAEdu-e7JlHBQtRA _UZAK6voAEdu-e7JlHBQtRA _UZAK5PoAEdu-e7JlHBQtRA _UZAK8PoAEdu-e7JlHBQtRA _Pu3O0HL0EdqziYxiZo0YtA _UZAK9_oAEdu-e7JlHBQtRA _UZAK9PoAEdu-e7JlHBQtRA _UZAK_PoAEdu-e7JlHBQtRA _UZAK__oAEdu-e7JlHBQtRA _UZAK-foAEdu-e7JlHBQtRA _UZALA_oAEdu-e7JlHBQtRA _UZALBvoAEdu-e7JlHBQtRA _UZALCfoAEdu-e7JlHBQtRA _UZALDfoAEdu-e7JlHBQtRA _UZALEfoAEdu-e7JlHBQtRA _UZALGvoAEdu-e7JlHBQtRA _UZALGfoAEdu-e7JlHBQtRA _UZALHvoAEdu-e7JlHBQtRA _UZALHfoAEdu-e7JlHBQtRA _UZALIvoAEdu-e7JlHBQtRA _UZALIfoAEdu-e7JlHBQtRA _UZALJvoAEdu-e7JlHBQtRA _UZALJfoAEdu-e7JlHBQtRA _UZALKvoAEdu-e7JlHBQtRA _UZALKfoAEdu-e7JlHBQtRA _UZJUkfoAEdu-e7JlHBQtRA _UZJUkPoAEdu-e7JlHBQtRA _UZJUlfoAEdu-e7JlHBQtRA _UZJUlPoAEdu-e7JlHBQtRA _UZJUm_oAEdu-e7JlHBQtRA _UZJUmvoAEdu-e7JlHBQtRA _UZJUn_oAEdu-e7JlHBQtRA _UZJUnvoAEdu-e7JlHBQtRA _UZJUo_oAEdu-e7JlHBQtRA _UZJUovoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYQ_oAEdu-e7JlHBQtRA" source="UML::CompositeStructures::StructuredClasses" references="_00owUGvdEdq4DLWZOhbdEA"/>
+ <eAnnotations xmi:id="_UhfYRPoAEdu-e7JlHBQtRA" source="UML::Deployments::Nodes" references="_Jp_1oGveEdq4DLWZOhbdEA _UWnlDfoAEdu-e7JlHBQtRA _-lGRgHLzEdqziYxiZo0YtA _UZc3IfoAEdu-e7JlHBQtRA _UZc3JfoAEdu-e7JlHBQtRA _UZc3HvoAEdu-e7JlHBQtRA _UZc3MPoAEdu-e7JlHBQtRA _UZc3KfoAEdu-e7JlHBQtRA _UZc3NPoAEdu-e7JlHBQtRA _UZc3N_oAEdu-e7JlHBQtRA _UZc3PfoAEdu-e7JlHBQtRA _UZc3QfoAEdu-e7JlHBQtRA _UZc3RfoAEdu-e7JlHBQtRA _UZc3OvoAEdu-e7JlHBQtRA _UZc3S_oAEdu-e7JlHBQtRA _UZc3TvoAEdu-e7JlHBQtRA _UZmAg_oAEdu-e7JlHBQtRA _UZmAgvoAEdu-e7JlHBQtRA _UZmAhvoAEdu-e7JlHBQtRA _UZmAiPoAEdu-e7JlHBQtRA _UZmAh_oAEdu-e7JlHBQtRA _UZmAjPoAEdu-e7JlHBQtRA _UZmAi_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYRfoAEdu-e7JlHBQtRA" source="UML::Classes::AssociationClasses" references="_Jp_1oGveEdq4DLWZOhbdEA _UcRhN_oAEdu-e7JlHBQtRA _UcRhMPoAEdu-e7JlHBQtRA _UcRhP_oAEdu-e7JlHBQtRA _UcRhQ_oAEdu-e7JlHBQtRA _UcRhR_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYRvoAEdu-e7JlHBQtRA" source="UML::CommonBehaviors::BasicBehaviors" references="_ChRfcGveEdq4DLWZOhbdEA _rHT3YKOsEdqi_5gqUMOQtA _UXqG5PoAEdu-e7JlHBQtRA _UXqG5_oAEdu-e7JlHBQtRA _UXqG6_oAEdu-e7JlHBQtRA _UXqG7_oAEdu-e7JlHBQtRA _UXqG8_oAEdu-e7JlHBQtRA _UXqG9_oAEdu-e7JlHBQtRA _UXqG-_oAEdu-e7JlHBQtRA _TUPtYGveEdq4DLWZOhbdEA _UXqHBPoAEdu-e7JlHBQtRA _UXqHCPoAEdu-e7JlHBQtRA _iY7sMGvsEdqG6fBIPwe-mw _UXqHE_oAEdu-e7JlHBQtRA _UXqHF_oAEdu-e7JlHBQtRA _UXz30foAEdu-e7JlHBQtRA _UXz31PoAEdu-e7JlHBQtRA _ldWYsS7qEdutFcse1QllAQ _UXz33foAEdu-e7JlHBQtRA _ldWYsC7qEdutFcse1QllAQ _UXz34foAEdu-e7JlHBQtRA _UXz36_oAEdu-e7JlHBQtRA _UXz36voAEdu-e7JlHBQtRA _UXz37_oAEdu-e7JlHBQtRA _UXz37voAEdu-e7JlHBQtRA _UXz38_oAEdu-e7JlHBQtRA _UXz38voAEdu-e7JlHBQtRA _UXz39voAEdu-e7JlHBQtRA _UXz3-PoAEdu-e7JlHBQtRA _UXz39_oAEdu-e7JlHBQtRA _UXz3_PoAEdu-e7JlHBQtRA _UXz3-_oAEdu-e7JlHBQtRA _UXz4APoAEdu-e7JlHBQtRA _UXz3__oAEdu-e7JlHBQtRA _UXz4BPoAEdu-e7JlHBQtRA _UXz4A_oAEdu-e7JlHBQtRA _UXz4CPoAEdu-e7JlHBQtRA _UXz4B_oAEdu-e7JlHBQtRA _UXz4DPoAEdu-e7JlHBQtRA _UXz4C_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYR_oAEdu-e7JlHBQtRA" source="UML::Classes::Interfaces" references="_M4X2IGveEdq4DLWZOhbdEA _iY7sMGvsEdqG6fBIPwe-mw _UYQkBPoAEdu-e7JlHBQtRA _UYQkCPoAEdu-e7JlHBQtRA _UYQkDPoAEdu-e7JlHBQtRA _UYQkEPoAEdu-e7JlHBQtRA _8Ugn8GvtEdqG6fBIPwe-mw _UYQkFvoAEdu-e7JlHBQtRA _UYQkGvoAEdu-e7JlHBQtRA _l2mXcHLzEdqziYxiZo0YtA _UYQkIPoAEdu-e7JlHBQtRA _UYQkJPoAEdu-e7JlHBQtRA _UYZtsfoAEdu-e7JlHBQtRA _UYZtsPoAEdu-e7JlHBQtRA _UYZttPoAEdu-e7JlHBQtRA _UYZttvoAEdu-e7JlHBQtRA _UYZttfoAEdu-e7JlHBQtRA _UYZtufoAEdu-e7JlHBQtRA _UYZtu_oAEdu-e7JlHBQtRA _UYZtuvoAEdu-e7JlHBQtRA _UYZtv_oAEdu-e7JlHBQtRA _UYZtvvoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhfYSPoAEdu-e7JlHBQtRA" source="UML::Activities::CompleteActivities" references="_KyaPMGveEdq4DLWZOhbdEA _rHT3YKOsEdqi_5gqUMOQtA _TUPtYGveEdq4DLWZOhbdEA _UXz4I_oAEdu-e7JlHBQtRA _UX9B-PoAEdu-e7JlHBQtRA _UX9CTPoAEdu-e7JlHBQtRA _UX9CXfoAEdu-e7JlHBQtRA _UX9CWvoAEdu-e7JlHBQtRA _UX9CdvoAEdu-e7JlHBQtRA _UX9Cb_oAEdu-e7JlHBQtRA _UX9Ce_oAEdu-e7JlHBQtRA _UYje7voAEdu-e7JlHBQtRA _UYje-_oAEdu-e7JlHBQtRA _UYjfHvoAEdu-e7JlHBQtRA _UZJVD_oAEdu-e7JlHBQtRA _UbrrN_oAEdu-e7JlHBQtRA _UbrrOvoAEdu-e7JlHBQtRA _UbrrPvoAEdu-e7JlHBQtRA _UbrrUfoAEdu-e7JlHBQtRA _UbrrVPoAEdu-e7JlHBQtRA _UbrrV_oAEdu-e7JlHBQtRA _UbrrW_oAEdu-e7JlHBQtRA _UbrrYPoAEdu-e7JlHBQtRA _UbrrZPoAEdu-e7JlHBQtRA _Ubrrb_oAEdu-e7JlHBQtRA _UbrrcvoAEdu-e7JlHBQtRA _UbrrdfoAEdu-e7JlHBQtRA _UbrrefoAEdu-e7JlHBQtRA _UbrrffoAEdu-e7JlHBQtRA _UbrrjfoAEdu-e7JlHBQtRA _UbrrkfoAEdu-e7JlHBQtRA _UbrrgfoAEdu-e7JlHBQtRA _UbrrlfoAEdu-e7JlHBQtRA _UbrrpfoAEdu-e7JlHBQtRA _UbrrqPoAEdu-e7JlHBQtRA _Ubrrq_oAEdu-e7JlHBQtRA _Ubrrr_oAEdu-e7JlHBQtRA _UbrrtPoAEdu-e7JlHBQtRA _UbrruPoAEdu-e7JlHBQtRA _UbrrwvoAEdu-e7JlHBQtRA _UbrrxvoAEdu-e7JlHBQtRA _UbrrvPoAEdu-e7JlHBQtRA _UbrryvoAEdu-e7JlHBQtRA _Ubrr0foAEdu-e7JlHBQtRA _Ubrr1voAEdu-e7JlHBQtRA _Ubrr3foAEdu-e7JlHBQtRA _Ub1cMPoAEdu-e7JlHBQtRA _Ub1cOvoAEdu-e7JlHBQtRA _Ub1cRfoAEdu-e7JlHBQtRA _Ub1cRPoAEdu-e7JlHBQtRA _Ub1cSfoAEdu-e7JlHBQtRA _Ub1cSPoAEdu-e7JlHBQtRA _Ub1cTfoAEdu-e7JlHBQtRA _Ub1cTPoAEdu-e7JlHBQtRA _Ub1cUPoAEdu-e7JlHBQtRA _Ub1cUvoAEdu-e7JlHBQtRA _Ub1cUfoAEdu-e7JlHBQtRA _Ub1cVvoAEdu-e7JlHBQtRA _Ub1cVfoAEdu-e7JlHBQtRA _Ub1cWvoAEdu-e7JlHBQtRA _Ub1cWfoAEdu-e7JlHBQtRA _Ub1cXfoAEdu-e7JlHBQtRA _Ub1cXvoAEdu-e7JlHBQtRA _Ub1cYPoAEdu-e7JlHBQtRA _Ub1cX_oAEdu-e7JlHBQtRA _Ub1cZPoAEdu-e7JlHBQtRA _Ub1cY_oAEdu-e7JlHBQtRA _Ub1caPoAEdu-e7JlHBQtRA _Ub1cZ_oAEdu-e7JlHBQtRA _Ub1cbPoAEdu-e7JlHBQtRA _Ub1ca_oAEdu-e7JlHBQtRA _Ub1ccPoAEdu-e7JlHBQtRA _Ub1cb_oAEdu-e7JlHBQtRA _Ub1cdPoAEdu-e7JlHBQtRA _Ub1cc_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UhpJQPoAEdu-e7JlHBQtRA" source="InfrastructureLibrary::Core::PrimitiveTypes" references="_XqvEIGvsEdqG6fBIPwe-mw _UdivYGvsEdqG6fBIPwe-mw _aAyVgGvsEdqG6fBIPwe-mw _dRZxsGvsEdqG6fBIPwe-mw"/>
+ <eAnnotations xmi:id="_Uhy6QPoAEdu-e7JlHBQtRA" source="UML::Activities::BasicActivities" references="_UXz4I_oAEdu-e7JlHBQtRA _UXz4J_oAEdu-e7JlHBQtRA _UX9CTPoAEdu-e7JlHBQtRA _UX9CWvoAEdu-e7JlHBQtRA _UX9Cb_oAEdu-e7JlHBQtRA _UYje7voAEdu-e7JlHBQtRA _UYje-PoAEdu-e7JlHBQtRA _UYjfBPoAEdu-e7JlHBQtRA _UYjfCPoAEdu-e7JlHBQtRA _UYjfDPoAEdu-e7JlHBQtRA _UYjfEPoAEdu-e7JlHBQtRA _UYjfFPoAEdu-e7JlHBQtRA _UYje-_oAEdu-e7JlHBQtRA _UYjfGPoAEdu-e7JlHBQtRA _UYjfHvoAEdu-e7JlHBQtRA _UYjfKvoAEdu-e7JlHBQtRA _UYjfM_oAEdu-e7JlHBQtRA _UYjfP_oAEdu-e7JlHBQtRA _UYjfVfoAEdu-e7JlHBQtRA _UYjfQ_oAEdu-e7JlHBQtRA _UYjfXPoAEdu-e7JlHBQtRA _UYjfYPoAEdu-e7JlHBQtRA _UYjfZPoAEdu-e7JlHBQtRA _UYjfcPoAEdu-e7JlHBQtRA _UYjfc_oAEdu-e7JlHBQtRA _UYjfevoAEdu-e7JlHBQtRA _UYjfe_oAEdu-e7JlHBQtRA _UYjffPoAEdu-e7JlHBQtRA _UYjfffoAEdu-e7JlHBQtRA _UYjff_oAEdu-e7JlHBQtRA _UYjffvoAEdu-e7JlHBQtRA _UYjfg_oAEdu-e7JlHBQtRA _UYjfgvoAEdu-e7JlHBQtRA _UYsoofoAEdu-e7JlHBQtRA _UYsooPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6QfoAEdu-e7JlHBQtRA" source="UML::Activities::StructuredActivities" references="_UXz4MfoAEdu-e7JlHBQtRA _UXz4NPoAEdu-e7JlHBQtRA _UX9B-PoAEdu-e7JlHBQtRA _UX9CUvoAEdu-e7JlHBQtRA _UX9CVvoAEdu-e7JlHBQtRA _UX9CTPoAEdu-e7JlHBQtRA _UX9CXfoAEdu-e7JlHBQtRA _UX9CYfoAEdu-e7JlHBQtRA _UX9CWvoAEdu-e7JlHBQtRA _UX9CcvoAEdu-e7JlHBQtRA _UX9CdvoAEdu-e7JlHBQtRA _UX9Cb_oAEdu-e7JlHBQtRA _UX9CevoAEdu-e7JlHBQtRA _UX9Ce_oAEdu-e7JlHBQtRA _UX9CfPoAEdu-e7JlHBQtRA _UX9CifoAEdu-e7JlHBQtRA _UX9CjfoAEdu-e7JlHBQtRA _UX9CkfoAEdu-e7JlHBQtRA _UX9CgvoAEdu-e7JlHBQtRA _UX9CnPoAEdu-e7JlHBQtRA _UX9CoPoAEdu-e7JlHBQtRA _UX9CpPoAEdu-e7JlHBQtRA _UX9Cl_oAEdu-e7JlHBQtRA _UYGyw_oAEdu-e7JlHBQtRA _UYGyxvoAEdu-e7JlHBQtRA _UYGyyfoAEdu-e7JlHBQtRA _UYGywPoAEdu-e7JlHBQtRA _UYGy0PoAEdu-e7JlHBQtRA _UYGy0_oAEdu-e7JlHBQtRA _UYGy1_oAEdu-e7JlHBQtRA _UYGy2_oAEdu-e7JlHBQtRA _UYGy3_oAEdu-e7JlHBQtRA _UYGyzfoAEdu-e7JlHBQtRA _UYGy6foAEdu-e7JlHBQtRA _UYGy7foAEdu-e7JlHBQtRA _UYGy8foAEdu-e7JlHBQtRA _UYGy9foAEdu-e7JlHBQtRA _UYGy-foAEdu-e7JlHBQtRA _UYGy4_oAEdu-e7JlHBQtRA _UYGy_foAEdu-e7JlHBQtRA _UYGzAfoAEdu-e7JlHBQtRA _UYGzDfoAEdu-e7JlHBQtRA _UYGzFfoAEdu-e7JlHBQtRA _UYGzG_oAEdu-e7JlHBQtRA _UYGzGPoAEdu-e7JlHBQtRA _UYGzKvoAEdu-e7JlHBQtRA _UYGzK_oAEdu-e7JlHBQtRA _UYGzLfoAEdu-e7JlHBQtRA _UYGzLPoAEdu-e7JlHBQtRA _UYGzMfoAEdu-e7JlHBQtRA _UYGzMPoAEdu-e7JlHBQtRA _UYGzNPoAEdu-e7JlHBQtRA _UYGzNvoAEdu-e7JlHBQtRA _UYGzNfoAEdu-e7JlHBQtRA _UYGzOvoAEdu-e7JlHBQtRA _UYGzOfoAEdu-e7JlHBQtRA _UYGzPvoAEdu-e7JlHBQtRA _UYGzPfoAEdu-e7JlHBQtRA _UYGzQvoAEdu-e7JlHBQtRA _UYGzQfoAEdu-e7JlHBQtRA _UYGzRvoAEdu-e7JlHBQtRA _UYGzRfoAEdu-e7JlHBQtRA _UYGzSvoAEdu-e7JlHBQtRA _UYGzSfoAEdu-e7JlHBQtRA _UYGzTfoAEdu-e7JlHBQtRA _UYGzTvoAEdu-e7JlHBQtRA _UYGzUPoAEdu-e7JlHBQtRA _UYGzT_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6QvoAEdu-e7JlHBQtRA" source="UML::CompositeStructures::InvocationActions" references="_UXz4N_oAEdu-e7JlHBQtRA _UZAK2PoAEdu-e7JlHBQtRA _UaMddPoAEdu-e7JlHBQtRA _UaMdefoAEdu-e7JlHBQtRA _UaMdfvoAEdu-e7JlHBQtRA _UaMdffoAEdu-e7JlHBQtRA _UaMdgvoAEdu-e7JlHBQtRA _UaMdgfoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6Q_oAEdu-e7JlHBQtRA" source="UML::Activities::FundamentalActivities" references="_UX9B-PoAEdu-e7JlHBQtRA _UX9CUvoAEdu-e7JlHBQtRA _UX9CVvoAEdu-e7JlHBQtRA _UX9CTPoAEdu-e7JlHBQtRA _UX9CXfoAEdu-e7JlHBQtRA _UX9CYfoAEdu-e7JlHBQtRA _UX9CZfoAEdu-e7JlHBQtRA _UX9CafoAEdu-e7JlHBQtRA _UX9CWvoAEdu-e7JlHBQtRA _UX9CcvoAEdu-e7JlHBQtRA _UX9CdvoAEdu-e7JlHBQtRA _UX9Cb_oAEdu-e7JlHBQtRA _UX9CevoAEdu-e7JlHBQtRA _UX9Ce_oAEdu-e7JlHBQtRA _UX9CfPoAEdu-e7JlHBQtRA _UX9CffoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6RPoAEdu-e7JlHBQtRA" source="UML::Activities::IntermediateActivities" references="_UX9CVvoAEdu-e7JlHBQtRA _UX9CTPoAEdu-e7JlHBQtRA _UX9CXfoAEdu-e7JlHBQtRA _UX9CYfoAEdu-e7JlHBQtRA _UX9CWvoAEdu-e7JlHBQtRA _UX9CdvoAEdu-e7JlHBQtRA _UX9Cb_oAEdu-e7JlHBQtRA _UX9Ce_oAEdu-e7JlHBQtRA _UX9CfPoAEdu-e7JlHBQtRA _UYjfEPoAEdu-e7JlHBQtRA _UYje-_oAEdu-e7JlHBQtRA _UYjfM_oAEdu-e7JlHBQtRA _UYjfP_oAEdu-e7JlHBQtRA _UYjfffoAEdu-e7JlHBQtRA _UZJUpvoAEdu-e7JlHBQtRA _UZJUr_oAEdu-e7JlHBQtRA _UZJUsvoAEdu-e7JlHBQtRA _UZJUxfoAEdu-e7JlHBQtRA _UZJUyPoAEdu-e7JlHBQtRA _UZJUy_oAEdu-e7JlHBQtRA _UZJUz_oAEdu-e7JlHBQtRA _UZJU0_oAEdu-e7JlHBQtRA _UZJU1_oAEdu-e7JlHBQtRA _UZJU2_oAEdu-e7JlHBQtRA _UZJUtfoAEdu-e7JlHBQtRA _UZJU3_oAEdu-e7JlHBQtRA _UZJU4_oAEdu-e7JlHBQtRA _UZJU6foAEdu-e7JlHBQtRA _UZJU7_oAEdu-e7JlHBQtRA _UZJVBPoAEdu-e7JlHBQtRA _UZJU-PoAEdu-e7JlHBQtRA _UZJVCPoAEdu-e7JlHBQtRA _UZJVD_oAEdu-e7JlHBQtRA _UZTFkvoAEdu-e7JlHBQtRA _UZTFmPoAEdu-e7JlHBQtRA _UZTFmfoAEdu-e7JlHBQtRA _UZTFmvoAEdu-e7JlHBQtRA _UZTFnPoAEdu-e7JlHBQtRA _UZTFm_oAEdu-e7JlHBQtRA _UZTFoPoAEdu-e7JlHBQtRA _UZTFn_oAEdu-e7JlHBQtRA _UZTFpPoAEdu-e7JlHBQtRA _UZTFo_oAEdu-e7JlHBQtRA _UZTFqPoAEdu-e7JlHBQtRA _UZTFp_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6RfoAEdu-e7JlHBQtRA" source="UML::Activities::CompleteStructuredActivities" references="_UX9CWvoAEdu-e7JlHBQtRA _UX9Cl_oAEdu-e7JlHBQtRA _UYGywPoAEdu-e7JlHBQtRA _UYGyzfoAEdu-e7JlHBQtRA _UYGy4_oAEdu-e7JlHBQtRA _UYjfEPoAEdu-e7JlHBQtRA _UYje-_oAEdu-e7JlHBQtRA _UYjfP_oAEdu-e7JlHBQtRA _UYjfffoAEdu-e7JlHBQtRA _Ub-mJPoAEdu-e7JlHBQtRA _Ub-mLfoAEdu-e7JlHBQtRA _Ub-mMPoAEdu-e7JlHBQtRA _Ub-mPfoAEdu-e7JlHBQtRA _Ub-mQfoAEdu-e7JlHBQtRA _Ub-mRfoAEdu-e7JlHBQtRA _Ub-mSfoAEdu-e7JlHBQtRA _Ub-mUPoAEdu-e7JlHBQtRA _Ub-mV_oAEdu-e7JlHBQtRA _Ub-mYPoAEdu-e7JlHBQtRA _Ub-mX_oAEdu-e7JlHBQtRA _Ub-mZPoAEdu-e7JlHBQtRA _Ub-mY_oAEdu-e7JlHBQtRA _Ub-maPoAEdu-e7JlHBQtRA _Ub-mZ_oAEdu-e7JlHBQtRA _Ub-mbPoAEdu-e7JlHBQtRA _Ub-ma_oAEdu-e7JlHBQtRA _Ub-mcPoAEdu-e7JlHBQtRA _Ub-mb_oAEdu-e7JlHBQtRA _Ub-mdPoAEdu-e7JlHBQtRA _Ub-mc_oAEdu-e7JlHBQtRA _Ub-md_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6RvoAEdu-e7JlHBQtRA" source="UML::CompositeStructures::StructuredActivities" references="_UX9CgvoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6R_oAEdu-e7JlHBQtRA" source="UML::Activities::ExtraStructuredActivities" references="_UYGzFfoAEdu-e7JlHBQtRA _Ub-me_oAEdu-e7JlHBQtRA _Ub-mf_oAEdu-e7JlHBQtRA _Ub-mePoAEdu-e7JlHBQtRA _Ub-mifoAEdu-e7JlHBQtRA _Ub-mjPoAEdu-e7JlHBQtRA _Ub-mkPoAEdu-e7JlHBQtRA _Ub-mg_oAEdu-e7JlHBQtRA _UcIXIPoAEdu-e7JlHBQtRA _UcIXM_oAEdu-e7JlHBQtRA _UcIXN_oAEdu-e7JlHBQtRA _UcIXO_oAEdu-e7JlHBQtRA _UcIXP_oAEdu-e7JlHBQtRA _UcIXJPoAEdu-e7JlHBQtRA _UcIXQ_oAEdu-e7JlHBQtRA _UcIXS_oAEdu-e7JlHBQtRA _UcIXTPoAEdu-e7JlHBQtRA _UcIXTfoAEdu-e7JlHBQtRA _UcIXT_oAEdu-e7JlHBQtRA _UcIXTvoAEdu-e7JlHBQtRA _UcIXU_oAEdu-e7JlHBQtRA _UcIXUvoAEdu-e7JlHBQtRA _UcIXV_oAEdu-e7JlHBQtRA _UcIXVvoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6SPoAEdu-e7JlHBQtRA" source="UML::StateMachines::ProtocolStateMachines" references="_8Ugn8GvtEdqG6fBIPwe-mw _ZAuvEGveEdq4DLWZOhbdEA _UapJZvoAEdu-e7JlHBQtRA _UayTo_oAEdu-e7JlHBQtRA _UcIXhPoAEdu-e7JlHBQtRA _UcIXiPoAEdu-e7JlHBQtRA _UcIXgfoAEdu-e7JlHBQtRA _UcIXjfoAEdu-e7JlHBQtRA _UcIXkvoAEdu-e7JlHBQtRA _UcIXovoAEdu-e7JlHBQtRA _UcIXpvoAEdu-e7JlHBQtRA _UcIXqvoAEdu-e7JlHBQtRA _UcIXlvoAEdu-e7JlHBQtRA _UcIXwPoAEdu-e7JlHBQtRA _UcIXrvoAEdu-e7JlHBQtRA _UcRhEPoAEdu-e7JlHBQtRA _UcRhFfoAEdu-e7JlHBQtRA _UcRhF_oAEdu-e7JlHBQtRA _UcRhFvoAEdu-e7JlHBQtRA _UcRhG_oAEdu-e7JlHBQtRA _UcRhGvoAEdu-e7JlHBQtRA _UcRhH_oAEdu-e7JlHBQtRA _UcRhHvoAEdu-e7JlHBQtRA _UcRhJPoAEdu-e7JlHBQtRA _UcRhI_oAEdu-e7JlHBQtRA _UcRhKPoAEdu-e7JlHBQtRA _UcRhJ_oAEdu-e7JlHBQtRA _UcRhLPoAEdu-e7JlHBQtRA _UcRhK_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6SfoAEdu-e7JlHBQtRA" source="10536" references="_UYZty_oAEdu-e7JlHBQtRA _aOgw0GveEdq4DLWZOhbdEA _UYZuAfoAEdu-e7JlHBQtRA _UYZt_voAEdu-e7JlHBQtRA _UYZuKPoAEdu-e7JlHBQtRA _UcuNBPoAEdu-e7JlHBQtRA _UcuNC_oAEdu-e7JlHBQtRA _UcuNCvoAEdu-e7JlHBQtRA _UcuNDvoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6SvoAEdu-e7JlHBQtRA" source="UML::CompositeStructures::Ports" references="_aOgw0GveEdq4DLWZOhbdEA _UZTFufoAEdu-e7JlHBQtRA _UZTFvPoAEdu-e7JlHBQtRA _UZTFv_oAEdu-e7JlHBQtRA _UZTFw_oAEdu-e7JlHBQtRA _UZTFx_oAEdu-e7JlHBQtRA _ZAuvEGveEdq4DLWZOhbdEA _UZTFzvoAEdu-e7JlHBQtRA _UZTFy_oAEdu-e7JlHBQtRA _UZTF2_oAEdu-e7JlHBQtRA _UZTF4PoAEdu-e7JlHBQtRA _UZTF3_oAEdu-e7JlHBQtRA _UZTF5PoAEdu-e7JlHBQtRA _UZTF4_oAEdu-e7JlHBQtRA _UZTF6PoAEdu-e7JlHBQtRA _UZTF5_oAEdu-e7JlHBQtRA _UZTF7PoAEdu-e7JlHBQtRA _UZTF6_oAEdu-e7JlHBQtRA _UZTF8PoAEdu-e7JlHBQtRA _UZTF7_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uhy6S_oAEdu-e7JlHBQtRA" source="UML::Components::BasicComponents" references="_UYZtz_oAEdu-e7JlHBQtRA _UZTF-_oAEdu-e7JlHBQtRA _UZTF_voAEdu-e7JlHBQtRA _UZTGAvoAEdu-e7JlHBQtRA _UZTGBvoAEdu-e7JlHBQtRA _UZc2kPoAEdu-e7JlHBQtRA _UZc2mPoAEdu-e7JlHBQtRA _UZc2oPoAEdu-e7JlHBQtRA _UZc2pvoAEdu-e7JlHBQtRA _DAbfwa69EdqjppZik4kD8A _UZc2r_oAEdu-e7JlHBQtRA _UZc2s_oAEdu-e7JlHBQtRA _UZc2rPoAEdu-e7JlHBQtRA _UZc2x_oAEdu-e7JlHBQtRA _UZc2y_oAEdu-e7JlHBQtRA _UZc2z_oAEdu-e7JlHBQtRA _UZc21voAEdu-e7JlHBQtRA _UZc21foAEdu-e7JlHBQtRA _UZc22voAEdu-e7JlHBQtRA _UZc22foAEdu-e7JlHBQtRA _UZc23foAEdu-e7JlHBQtRA _UZc23_oAEdu-e7JlHBQtRA _UZc23voAEdu-e7JlHBQtRA _UZc24_oAEdu-e7JlHBQtRA _UZc24voAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uh8EMPoAEdu-e7JlHBQtRA" source="UML::Interactions::BasicInteractions" references="_UYsoqvoAEdu-e7JlHBQtRA _UYsorvoAEdu-e7JlHBQtRA _UYsosvoAEdu-e7JlHBQtRA _UYsotvoAEdu-e7JlHBQtRA _UYsopvoAEdu-e7JlHBQtRA _UYsoxvoAEdu-e7JlHBQtRA _UYsoyvoAEdu-e7JlHBQtRA _UYsozvoAEdu-e7JlHBQtRA _UYso0voAEdu-e7JlHBQtRA _UYsouvoAEdu-e7JlHBQtRA _UYso2foAEdu-e7JlHBQtRA _UYso3foAEdu-e7JlHBQtRA _UYso4foAEdu-e7JlHBQtRA _UYso1voAEdu-e7JlHBQtRA _UYso_PoAEdu-e7JlHBQtRA _UYso__oAEdu-e7JlHBQtRA _UYspAvoAEdu-e7JlHBQtRA _UYspBvoAEdu-e7JlHBQtRA _UYspCvoAEdu-e7JlHBQtRA _UYspDvoAEdu-e7JlHBQtRA _UYspEvoAEdu-e7JlHBQtRA _UYspFvoAEdu-e7JlHBQtRA _gfgNwGveEdq4DLWZOhbdEA _UYspHfoAEdu-e7JlHBQtRA _UYspIfoAEdu-e7JlHBQtRA _UYspGvoAEdu-e7JlHBQtRA _UYspK_oAEdu-e7JlHBQtRA _UYspL_oAEdu-e7JlHBQtRA _UYspJfoAEdu-e7JlHBQtRA _UYspNvoAEdu-e7JlHBQtRA _UYspOvoAEdu-e7JlHBQtRA _UYspPvoAEdu-e7JlHBQtRA _UYspQvoAEdu-e7JlHBQtRA _UYspM_oAEdu-e7JlHBQtRA _UYspSfoAEdu-e7JlHBQtRA _UYspRvoAEdu-e7JlHBQtRA _UYspUPoAEdu-e7JlHBQtRA _UYspVPoAEdu-e7JlHBQtRA _UYspTfoAEdu-e7JlHBQtRA _UYspXvoAEdu-e7JlHBQtRA _UYspWPoAEdu-e7JlHBQtRA _UYspZfoAEdu-e7JlHBQtRA _UYspYvoAEdu-e7JlHBQtRA _UYspafoAEdu-e7JlHBQtRA _UYspbPoAEdu-e7JlHBQtRA _UYspcvoAEdu-e7JlHBQtRA _UYspe_oAEdu-e7JlHBQtRA _UYspePoAEdu-e7JlHBQtRA _UYspgvoAEdu-e7JlHBQtRA _UYspf_oAEdu-e7JlHBQtRA _UYsphvoAEdu-e7JlHBQtRA _UYspjfoAEdu-e7JlHBQtRA _UYspkfoAEdu-e7JlHBQtRA _UYspivoAEdu-e7JlHBQtRA _UYspmPoAEdu-e7JlHBQtRA _UYsplfoAEdu-e7JlHBQtRA _UYspn_oAEdu-e7JlHBQtRA _UYspnPoAEdu-e7JlHBQtRA _Y_jskGvtEdqG6fBIPwe-mw _UY2ZoPoAEdu-e7JlHBQtRA _UY2ZrvoAEdu-e7JlHBQtRA _UY2ZsvoAEdu-e7JlHBQtRA _UY2ZsPoAEdu-e7JlHBQtRA _UY2Zt_oAEdu-e7JlHBQtRA _UY2ZtfoAEdu-e7JlHBQtRA _UY2ZvPoAEdu-e7JlHBQtRA _UY2ZuvoAEdu-e7JlHBQtRA _UY2Zv_oAEdu-e7JlHBQtRA _UY2ZwfoAEdu-e7JlHBQtRA _UY2ZwPoAEdu-e7JlHBQtRA _UY2ZxfoAEdu-e7JlHBQtRA _UY2ZxPoAEdu-e7JlHBQtRA _UY2ZyfoAEdu-e7JlHBQtRA _UY2ZyPoAEdu-e7JlHBQtRA _UY2ZzfoAEdu-e7JlHBQtRA _UY2ZzPoAEdu-e7JlHBQtRA _UY2Z0foAEdu-e7JlHBQtRA _UY2Z0PoAEdu-e7JlHBQtRA _UY2Z1PoAEdu-e7JlHBQtRA _UY2Z1foAEdu-e7JlHBQtRA _UY2Z1voAEdu-e7JlHBQtRA _UY2Z2PoAEdu-e7JlHBQtRA _UY2Z1_oAEdu-e7JlHBQtRA _UY2Z3PoAEdu-e7JlHBQtRA _UY2Z2_oAEdu-e7JlHBQtRA _UY2Z4PoAEdu-e7JlHBQtRA _UY2Z3_oAEdu-e7JlHBQtRA _UY2Z5PoAEdu-e7JlHBQtRA _UY2Z4_oAEdu-e7JlHBQtRA _UY2Z5_oAEdu-e7JlHBQtRA _UY2Z6foAEdu-e7JlHBQtRA _UY2Z6PoAEdu-e7JlHBQtRA _UY2Z7foAEdu-e7JlHBQtRA _UY2Z7PoAEdu-e7JlHBQtRA _UY2Z8foAEdu-e7JlHBQtRA _UY2Z8PoAEdu-e7JlHBQtRA _UY2Z9foAEdu-e7JlHBQtRA _UY2Z9PoAEdu-e7JlHBQtRA _UY2Z-foAEdu-e7JlHBQtRA _UY2Z-PoAEdu-e7JlHBQtRA _UY2Z_foAEdu-e7JlHBQtRA _UY2Z_PoAEdu-e7JlHBQtRA _UY2aAfoAEdu-e7JlHBQtRA _UY2aAPoAEdu-e7JlHBQtRA _UY2aBfoAEdu-e7JlHBQtRA _UY2aBPoAEdu-e7JlHBQtRA _UY2aCfoAEdu-e7JlHBQtRA _UY2aCPoAEdu-e7JlHBQtRA _UY2aDfoAEdu-e7JlHBQtRA _UY2aDPoAEdu-e7JlHBQtRA _UY2aEfoAEdu-e7JlHBQtRA _UY2aEPoAEdu-e7JlHBQtRA _UY2aFfoAEdu-e7JlHBQtRA _UY2aFPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uh8EMfoAEdu-e7JlHBQtRA" source="UML::Interactions::Fragments" references="_UYsopvoAEdu-e7JlHBQtRA _UYsouvoAEdu-e7JlHBQtRA _UYso1voAEdu-e7JlHBQtRA _UZmAoPoAEdu-e7JlHBQtRA _UZmApPoAEdu-e7JlHBQtRA _UZmAqPoAEdu-e7JlHBQtRA _UZmAkfoAEdu-e7JlHBQtRA _UZmArPoAEdu-e7JlHBQtRA _UZmAwvoAEdu-e7JlHBQtRA _UZmAxvoAEdu-e7JlHBQtRA _UZmAuPoAEdu-e7JlHBQtRA _UZmA3_oAEdu-e7JlHBQtRA _UZmA4_oAEdu-e7JlHBQtRA _UZmAyvoAEdu-e7JlHBQtRA _UZmA5_oAEdu-e7JlHBQtRA _UZmA__oAEdu-e7JlHBQtRA _UZmBAvoAEdu-e7JlHBQtRA _UZmBBvoAEdu-e7JlHBQtRA _UZmA8PoAEdu-e7JlHBQtRA _UZmBCvoAEdu-e7JlHBQtRA _UZmBDvoAEdu-e7JlHBQtRA _UZmBHvoAEdu-e7JlHBQtRA _UZmBEvoAEdu-e7JlHBQtRA _UZmBIfoAEdu-e7JlHBQtRA _UZmBLvoAEdu-e7JlHBQtRA _UZmBJfoAEdu-e7JlHBQtRA _UZmBMvoAEdu-e7JlHBQtRA _UZmBTfoAEdu-e7JlHBQtRA _UZmBTPoAEdu-e7JlHBQtRA _UZmBT_oAEdu-e7JlHBQtRA _UZmBTvoAEdu-e7JlHBQtRA _UZmBU_oAEdu-e7JlHBQtRA _UZmBUvoAEdu-e7JlHBQtRA _UZmBV_oAEdu-e7JlHBQtRA _UZmBVvoAEdu-e7JlHBQtRA _UZmBW_oAEdu-e7JlHBQtRA _UZmBWvoAEdu-e7JlHBQtRA _UZmBX_oAEdu-e7JlHBQtRA _UZmBXvoAEdu-e7JlHBQtRA _UZmBY_oAEdu-e7JlHBQtRA _UZmBYvoAEdu-e7JlHBQtRA _UZmBZ_oAEdu-e7JlHBQtRA _UZmBZvoAEdu-e7JlHBQtRA _UZmBa_oAEdu-e7JlHBQtRA _UZmBavoAEdu-e7JlHBQtRA _UZmBb_oAEdu-e7JlHBQtRA _UZmBbvoAEdu-e7JlHBQtRA _UZmBcvoAEdu-e7JlHBQtRA _UZmBdPoAEdu-e7JlHBQtRA _UZmBc_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uh8EMvoAEdu-e7JlHBQtRA" source="UML::CommonBehaviors::SimpleTime" references="_UZAK__oAEdu-e7JlHBQtRA _UZAK-foAEdu-e7JlHBQtRA _UZJUkfoAEdu-e7JlHBQtRA _UZJUkPoAEdu-e7JlHBQtRA _UaCscvoAEdu-e7JlHBQtRA _UaCsdvoAEdu-e7JlHBQtRA _DylKEH4YEdq7cMP_l1l5Gg _UaCsfPoAEdu-e7JlHBQtRA _UaCsgPoAEdu-e7JlHBQtRA _-Ixo8H4XEdq7cMP_l1l5Gg _UaCsh_oAEdu-e7JlHBQtRA _UaCsifoAEdu-e7JlHBQtRA _UaCshPoAEdu-e7JlHBQtRA _UaCsjvoAEdu-e7JlHBQtRA _UaCskvoAEdu-e7JlHBQtRA _UaCsi_oAEdu-e7JlHBQtRA _UaCsmvoAEdu-e7JlHBQtRA _UaCsnPoAEdu-e7JlHBQtRA _UaCsl_oAEdu-e7JlHBQtRA _UaCspPoAEdu-e7JlHBQtRA _UaCsqPoAEdu-e7JlHBQtRA _UaCsnvoAEdu-e7JlHBQtRA _UaCssPoAEdu-e7JlHBQtRA _UaCsrfoAEdu-e7JlHBQtRA _UaCst_oAEdu-e7JlHBQtRA _UaCsu_oAEdu-e7JlHBQtRA _UaCstPoAEdu-e7JlHBQtRA _UaCsxPoAEdu-e7JlHBQtRA _UaCsyvoAEdu-e7JlHBQtRA _UaCszvoAEdu-e7JlHBQtRA _UaCsx_oAEdu-e7JlHBQtRA _UaCs1_oAEdu-e7JlHBQtRA _UaCs2_oAEdu-e7JlHBQtRA _UaCs0foAEdu-e7JlHBQtRA _UaCs4foAEdu-e7JlHBQtRA _UaCs4PoAEdu-e7JlHBQtRA _UaCs5foAEdu-e7JlHBQtRA _UaCs5PoAEdu-e7JlHBQtRA _UaCs6foAEdu-e7JlHBQtRA _UaCs6PoAEdu-e7JlHBQtRA _UaCs7foAEdu-e7JlHBQtRA _UaCs7PoAEdu-e7JlHBQtRA _UaCs8foAEdu-e7JlHBQtRA _UaCs8PoAEdu-e7JlHBQtRA _UaCs9foAEdu-e7JlHBQtRA _UaCs9PoAEdu-e7JlHBQtRA _UaCs-foAEdu-e7JlHBQtRA _UaCs-PoAEdu-e7JlHBQtRA _UaCs_foAEdu-e7JlHBQtRA _UaCs_PoAEdu-e7JlHBQtRA _UaCtAfoAEdu-e7JlHBQtRA _UaCtAPoAEdu-e7JlHBQtRA _UaCtBfoAEdu-e7JlHBQtRA _UaCtBPoAEdu-e7JlHBQtRA _UaCtCfoAEdu-e7JlHBQtRA _UaCtCPoAEdu-e7JlHBQtRA _UaCtD_oAEdu-e7JlHBQtRA _UaCtDvoAEdu-e7JlHBQtRA _UaCtE_oAEdu-e7JlHBQtRA _UaCtEvoAEdu-e7JlHBQtRA _UaCtF_oAEdu-e7JlHBQtRA _UaCtFvoAEdu-e7JlHBQtRA _UaCtG_oAEdu-e7JlHBQtRA _UaCtGvoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uh8EM_oAEdu-e7JlHBQtRA" source="UML::StateMachines::BehaviorStateMachines" references="_UZAK-foAEdu-e7JlHBQtRA _UaMdlPoAEdu-e7JlHBQtRA _UaMdmPoAEdu-e7JlHBQtRA _UaMdnPoAEdu-e7JlHBQtRA _UaMdoPoAEdu-e7JlHBQtRA _UaMdpPoAEdu-e7JlHBQtRA _UaMdq_oAEdu-e7JlHBQtRA _UaMdsvoAEdu-e7JlHBQtRA _UapJYPoAEdu-e7JlHBQtRA _UaMdhfoAEdu-e7JlHBQtRA _UapJevoAEdu-e7JlHBQtRA _UapJffoAEdu-e7JlHBQtRA _UapJgPoAEdu-e7JlHBQtRA _UapJg_oAEdu-e7JlHBQtRA _UapJhvoAEdu-e7JlHBQtRA _UapJivoAEdu-e7JlHBQtRA _UapJjvoAEdu-e7JlHBQtRA _UapJkvoAEdu-e7JlHBQtRA _UapJlvoAEdu-e7JlHBQtRA _UapJmvoAEdu-e7JlHBQtRA _UapJnvoAEdu-e7JlHBQtRA _UapJovoAEdu-e7JlHBQtRA _UapJpvoAEdu-e7JlHBQtRA _UapJqvoAEdu-e7JlHBQtRA _UapJrvoAEdu-e7JlHBQtRA _UapJsvoAEdu-e7JlHBQtRA _UapJt_oAEdu-e7JlHBQtRA _UapJvPoAEdu-e7JlHBQtRA _UapJwfoAEdu-e7JlHBQtRA _UapJxvoAEdu-e7JlHBQtRA _UapJy_oAEdu-e7JlHBQtRA _UapJ0foAEdu-e7JlHBQtRA _UapJ1_oAEdu-e7JlHBQtRA _UapJZvoAEdu-e7JlHBQtRA _UapJ9foAEdu-e7JlHBQtRA _UapJ-PoAEdu-e7JlHBQtRA _UapJ_PoAEdu-e7JlHBQtRA _UapKAPoAEdu-e7JlHBQtRA _UapKBPoAEdu-e7JlHBQtRA _UapKCPoAEdu-e7JlHBQtRA _UapKDPoAEdu-e7JlHBQtRA _UapKEPoAEdu-e7JlHBQtRA _UapKFPoAEdu-e7JlHBQtRA _UapKGPoAEdu-e7JlHBQtRA _UapKHfoAEdu-e7JlHBQtRA _UapKJfoAEdu-e7JlHBQtRA _UapJ3PoAEdu-e7JlHBQtRA _UapKLfoAEdu-e7JlHBQtRA _UapKMfoAEdu-e7JlHBQtRA _UapKNfoAEdu-e7JlHBQtRA _UapKOfoAEdu-e7JlHBQtRA _UapKKvoAEdu-e7JlHBQtRA _UayTbvoAEdu-e7JlHBQtRA _UayTcfoAEdu-e7JlHBQtRA _UayTdfoAEdu-e7JlHBQtRA _UayTUPoAEdu-e7JlHBQtRA _UayTefoAEdu-e7JlHBQtRA _UayTl_oAEdu-e7JlHBQtRA _UayTm_oAEdu-e7JlHBQtRA _UayTn_oAEdu-e7JlHBQtRA _UayTjvoAEdu-e7JlHBQtRA _UayTs_oAEdu-e7JlHBQtRA _UayTt_oAEdu-e7JlHBQtRA _UayTu_oAEdu-e7JlHBQtRA _UayTv_oAEdu-e7JlHBQtRA _UayTw_oAEdu-e7JlHBQtRA _UayTx_oAEdu-e7JlHBQtRA _UayTy_oAEdu-e7JlHBQtRA _UayT0PoAEdu-e7JlHBQtRA _UayT1voAEdu-e7JlHBQtRA _UayT3PoAEdu-e7JlHBQtRA _UayTo_oAEdu-e7JlHBQtRA _UayT5foAEdu-e7JlHBQtRA _UayT-_oAEdu-e7JlHBQtRA _UayUCfoAEdu-e7JlHBQtRA _UayUCvoAEdu-e7JlHBQtRA _UayUC_oAEdu-e7JlHBQtRA _UayUDPoAEdu-e7JlHBQtRA _UayUDfoAEdu-e7JlHBQtRA _UayUD_oAEdu-e7JlHBQtRA _UayUDvoAEdu-e7JlHBQtRA _UayUEvoAEdu-e7JlHBQtRA _UayUFPoAEdu-e7JlHBQtRA _UayUE_oAEdu-e7JlHBQtRA _UayUGPoAEdu-e7JlHBQtRA _UayUF_oAEdu-e7JlHBQtRA _UayUHPoAEdu-e7JlHBQtRA _UayUG_oAEdu-e7JlHBQtRA _UayUH_oAEdu-e7JlHBQtRA _UayUIPoAEdu-e7JlHBQtRA _UayUIfoAEdu-e7JlHBQtRA _UayUI_oAEdu-e7JlHBQtRA _UayUIvoAEdu-e7JlHBQtRA _UayUJ_oAEdu-e7JlHBQtRA _UayUJvoAEdu-e7JlHBQtRA _UayUK_oAEdu-e7JlHBQtRA _UayUKvoAEdu-e7JlHBQtRA _UayUL_oAEdu-e7JlHBQtRA _UayULvoAEdu-e7JlHBQtRA _UayUM_oAEdu-e7JlHBQtRA _UayUMvoAEdu-e7JlHBQtRA _UayUN_oAEdu-e7JlHBQtRA _UayUNvoAEdu-e7JlHBQtRA _UayUO_oAEdu-e7JlHBQtRA _UayUOvoAEdu-e7JlHBQtRA _UayUP_oAEdu-e7JlHBQtRA _UayUPvoAEdu-e7JlHBQtRA _UayUQ_oAEdu-e7JlHBQtRA _UayUQvoAEdu-e7JlHBQtRA _UayUR_oAEdu-e7JlHBQtRA _UayURvoAEdu-e7JlHBQtRA _UayUS_oAEdu-e7JlHBQtRA _UayUSvoAEdu-e7JlHBQtRA _UayUTvoAEdu-e7JlHBQtRA _UayUUPoAEdu-e7JlHBQtRA _UayUT_oAEdu-e7JlHBQtRA _UayUVPoAEdu-e7JlHBQtRA _UayUU_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_Uh8ENPoAEdu-e7JlHBQtRA" source="UML::Components::PackagingComponents" references="_DAbfwa69EdqjppZik4kD8A _UcIXXPoAEdu-e7JlHBQtRA _UcIXYfoAEdu-e7JlHBQtRA _UcIXYPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiF1MPoAEdu-e7JlHBQtRA" source="UML::Deployments::Artifacts" references="_UZc27voAEdu-e7JlHBQtRA _UZc28voAEdu-e7JlHBQtRA _UZc29voAEdu-e7JlHBQtRA _UZc2-voAEdu-e7JlHBQtRA _UZc2_voAEdu-e7JlHBQtRA _-lGRgHLzEdqziYxiZo0YtA _UZc3BfoAEdu-e7JlHBQtRA _UZc3AvoAEdu-e7JlHBQtRA _UZc3CvoAEdu-e7JlHBQtRA _UZc3CfoAEdu-e7JlHBQtRA _UZc3DvoAEdu-e7JlHBQtRA _UZc3DfoAEdu-e7JlHBQtRA _UZc3EvoAEdu-e7JlHBQtRA _UZc3EfoAEdu-e7JlHBQtRA _UZc3FvoAEdu-e7JlHBQtRA _UZc3FfoAEdu-e7JlHBQtRA _UZc3GvoAEdu-e7JlHBQtRA _UZc3GfoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiF1MfoAEdu-e7JlHBQtRA" source="UML::Deployments::ComponentDeployments" references="_UZc3HvoAEdu-e7JlHBQtRA _UcIXZfoAEdu-e7JlHBQtRA _UcIXcvoAEdu-e7JlHBQtRA _UcIXdvoAEdu-e7JlHBQtRA _UcIXevoAEdu-e7JlHBQtRA _UcIXafoAEdu-e7JlHBQtRA _UcIXfvoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiF1MvoAEdu-e7JlHBQtRA" source="UML::Actions::IntermediateActions" references="_UZvxj_oAEdu-e7JlHBQtRA _UZvxk_oAEdu-e7JlHBQtRA _UZvxgPoAEdu-e7JlHBQtRA _UZvxoPoAEdu-e7JlHBQtRA _UZvxo_oAEdu-e7JlHBQtRA _UZvxpvoAEdu-e7JlHBQtRA _UZvxl_oAEdu-e7JlHBQtRA _UZvxtvoAEdu-e7JlHBQtRA _UZvxuvoAEdu-e7JlHBQtRA _UZvxvvoAEdu-e7JlHBQtRA _UZvxqvoAEdu-e7JlHBQtRA _UZvx0foAEdu-e7JlHBQtRA _UZvxwvoAEdu-e7JlHBQtRA _UZvx5_oAEdu-e7JlHBQtRA _UZvx6_oAEdu-e7JlHBQtRA _UZvx1foAEdu-e7JlHBQtRA _UZvx-PoAEdu-e7JlHBQtRA _UZvx7_oAEdu-e7JlHBQtRA _UZvyBfoAEdu-e7JlHBQtRA _UZvx_PoAEdu-e7JlHBQtRA _UZvyCfoAEdu-e7JlHBQtRA _UZvyEvoAEdu-e7JlHBQtRA _UZvyFfoAEdu-e7JlHBQtRA _UZvyDPoAEdu-e7JlHBQtRA _UZvyH_oAEdu-e7JlHBQtRA _UZvyIvoAEdu-e7JlHBQtRA _UZvyGfoAEdu-e7JlHBQtRA _UZvyMvoAEdu-e7JlHBQtRA _UZvyNvoAEdu-e7JlHBQtRA _UZvyOvoAEdu-e7JlHBQtRA _UZvyJvoAEdu-e7JlHBQtRA _UZvyS_oAEdu-e7JlHBQtRA _UZvyT_oAEdu-e7JlHBQtRA _UZvyP_oAEdu-e7JlHBQtRA _UZvyZfoAEdu-e7JlHBQtRA _UZvyU_oAEdu-e7JlHBQtRA _UZvycvoAEdu-e7JlHBQtRA _UZvydfoAEdu-e7JlHBQtRA _UZvyafoAEdu-e7JlHBQtRA _UZvyf_oAEdu-e7JlHBQtRA _UZvyefoAEdu-e7JlHBQtRA _UZvyhvoAEdu-e7JlHBQtRA _UZvyg_oAEdu-e7JlHBQtRA _UZvyivoAEdu-e7JlHBQtRA _UZvymfoAEdu-e7JlHBQtRA _UZvynfoAEdu-e7JlHBQtRA _UZvykPoAEdu-e7JlHBQtRA _UZvyqvoAEdu-e7JlHBQtRA _UZvyofoAEdu-e7JlHBQtRA _UZvysfoAEdu-e7JlHBQtRA _UZvytfoAEdu-e7JlHBQtRA _UZvyrvoAEdu-e7JlHBQtRA _UZvywvoAEdu-e7JlHBQtRA _UZvyxfoAEdu-e7JlHBQtRA _UZvyufoAEdu-e7JlHBQtRA _UZ47efoAEdu-e7JlHBQtRA _UZ47ffoAEdu-e7JlHBQtRA _UZ47cPoAEdu-e7JlHBQtRA _UZ47gvoAEdu-e7JlHBQtRA _UZ47gfoAEdu-e7JlHBQtRA _UZ47hvoAEdu-e7JlHBQtRA _UZ47hfoAEdu-e7JlHBQtRA _UZ47ivoAEdu-e7JlHBQtRA _UZ47ifoAEdu-e7JlHBQtRA _UZ47jvoAEdu-e7JlHBQtRA _UZ47jfoAEdu-e7JlHBQtRA _UZ47kvoAEdu-e7JlHBQtRA _UZ47kfoAEdu-e7JlHBQtRA _UZ47lvoAEdu-e7JlHBQtRA _UZ47lfoAEdu-e7JlHBQtRA _UZ47mvoAEdu-e7JlHBQtRA _UZ47mfoAEdu-e7JlHBQtRA _UZ47nvoAEdu-e7JlHBQtRA _UZ47nfoAEdu-e7JlHBQtRA _UZ47ovoAEdu-e7JlHBQtRA _UZ47ofoAEdu-e7JlHBQtRA _UZ47pvoAEdu-e7JlHBQtRA _UZ47pfoAEdu-e7JlHBQtRA _UZ47qvoAEdu-e7JlHBQtRA _UZ47qfoAEdu-e7JlHBQtRA _UZ47rvoAEdu-e7JlHBQtRA _UZ47rfoAEdu-e7JlHBQtRA _UZ47svoAEdu-e7JlHBQtRA _UZ47sfoAEdu-e7JlHBQtRA _UZ47tvoAEdu-e7JlHBQtRA _UZ47tfoAEdu-e7JlHBQtRA _UZ47uvoAEdu-e7JlHBQtRA _UZ47ufoAEdu-e7JlHBQtRA _UZ47vvoAEdu-e7JlHBQtRA _UZ47vfoAEdu-e7JlHBQtRA _UZ47wvoAEdu-e7JlHBQtRA _UZ47wfoAEdu-e7JlHBQtRA _UZ47xvoAEdu-e7JlHBQtRA _UZ47xfoAEdu-e7JlHBQtRA _UZ47yvoAEdu-e7JlHBQtRA _UZ47yfoAEdu-e7JlHBQtRA _UZ47zvoAEdu-e7JlHBQtRA _UZ47zfoAEdu-e7JlHBQtRA _UZ470voAEdu-e7JlHBQtRA _UZ470foAEdu-e7JlHBQtRA _UZ471voAEdu-e7JlHBQtRA _UZ471foAEdu-e7JlHBQtRA _UZ472voAEdu-e7JlHBQtRA _UZ472foAEdu-e7JlHBQtRA _UZ473voAEdu-e7JlHBQtRA _UZ473foAEdu-e7JlHBQtRA _UZ474voAEdu-e7JlHBQtRA _UZ474foAEdu-e7JlHBQtRA _UZ475voAEdu-e7JlHBQtRA _UZ475foAEdu-e7JlHBQtRA _UZ476voAEdu-e7JlHBQtRA _UZ476foAEdu-e7JlHBQtRA _UZ477voAEdu-e7JlHBQtRA _UZ477foAEdu-e7JlHBQtRA _UZ478voAEdu-e7JlHBQtRA _UZ478foAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiF1M_oAEdu-e7JlHBQtRA" source="UML::Actions::CompleteActions" references="_UZvyP_oAEdu-e7JlHBQtRA _UbYwUPoAEdu-e7JlHBQtRA _UbYwVPoAEdu-e7JlHBQtRA _UbYwR_oAEdu-e7JlHBQtRA _UbYwZPoAEdu-e7JlHBQtRA _UbYwZ_oAEdu-e7JlHBQtRA _UbYwa_oAEdu-e7JlHBQtRA _UbYwb_oAEdu-e7JlHBQtRA _UbYwWPoAEdu-e7JlHBQtRA _UbYwgvoAEdu-e7JlHBQtRA _UbYwhfoAEdu-e7JlHBQtRA _UbYwifoAEdu-e7JlHBQtRA _UbYwjfoAEdu-e7JlHBQtRA _UbYwc_oAEdu-e7JlHBQtRA _UbYwmvoAEdu-e7JlHBQtRA _UbYwkfoAEdu-e7JlHBQtRA _UbYwqvoAEdu-e7JlHBQtRA _UbYwrvoAEdu-e7JlHBQtRA _UbYwnvoAEdu-e7JlHBQtRA _UbYwuPoAEdu-e7JlHBQtRA _UbYw1PoAEdu-e7JlHBQtRA _UbYw2PoAEdu-e7JlHBQtRA _UbYw3PoAEdu-e7JlHBQtRA _UbYwvPoAEdu-e7JlHBQtRA _UbYw-_oAEdu-e7JlHBQtRA _UbYw__oAEdu-e7JlHBQtRA _UbYxA_oAEdu-e7JlHBQtRA _UbYw4PoAEdu-e7JlHBQtRA _UbYxE_oAEdu-e7JlHBQtRA _UbYxB_oAEdu-e7JlHBQtRA _UbYxJvoAEdu-e7JlHBQtRA _UbYxKfoAEdu-e7JlHBQtRA _UbYxLfoAEdu-e7JlHBQtRA _UbYxF_oAEdu-e7JlHBQtRA _UbYxPfoAEdu-e7JlHBQtRA _UbYxMfoAEdu-e7JlHBQtRA _UbYxSvoAEdu-e7JlHBQtRA _UbYxTvoAEdu-e7JlHBQtRA _UbYxUvoAEdu-e7JlHBQtRA _UbYxQfoAEdu-e7JlHBQtRA _Ubh6SPoAEdu-e7JlHBQtRA _Ubh6TPoAEdu-e7JlHBQtRA _Ubh6UPoAEdu-e7JlHBQtRA _Ubh6MPoAEdu-e7JlHBQtRA _Ubh6YPoAEdu-e7JlHBQtRA _Ubh6ZPoAEdu-e7JlHBQtRA _Ubh6aPoAEdu-e7JlHBQtRA _Ubh6bPoAEdu-e7JlHBQtRA _Ubh6VPoAEdu-e7JlHBQtRA _Ubh6cPoAEdu-e7JlHBQtRA _Ubh6b_oAEdu-e7JlHBQtRA _Ubh6dPoAEdu-e7JlHBQtRA _Ubh6c_oAEdu-e7JlHBQtRA _Ubh6ePoAEdu-e7JlHBQtRA _Ubh6d_oAEdu-e7JlHBQtRA _Ubh6fPoAEdu-e7JlHBQtRA _Ubh6e_oAEdu-e7JlHBQtRA _Ubh6gPoAEdu-e7JlHBQtRA _Ubh6f_oAEdu-e7JlHBQtRA _Ubh6hPoAEdu-e7JlHBQtRA _Ubh6g_oAEdu-e7JlHBQtRA _Ubh6iPoAEdu-e7JlHBQtRA _Ubh6h_oAEdu-e7JlHBQtRA _Ubh6jPoAEdu-e7JlHBQtRA _Ubh6i_oAEdu-e7JlHBQtRA _Ubh6kPoAEdu-e7JlHBQtRA _Ubh6j_oAEdu-e7JlHBQtRA _Ubh6lPoAEdu-e7JlHBQtRA _Ubh6k_oAEdu-e7JlHBQtRA _Ubh6mPoAEdu-e7JlHBQtRA _Ubh6l_oAEdu-e7JlHBQtRA _Ubh6nPoAEdu-e7JlHBQtRA _Ubh6m_oAEdu-e7JlHBQtRA _Ubh6oPoAEdu-e7JlHBQtRA _Ubh6n_oAEdu-e7JlHBQtRA _Ubh6pPoAEdu-e7JlHBQtRA _Ubh6o_oAEdu-e7JlHBQtRA _Ubh6qPoAEdu-e7JlHBQtRA _Ubh6p_oAEdu-e7JlHBQtRA _Ubh6rPoAEdu-e7JlHBQtRA _Ubh6q_oAEdu-e7JlHBQtRA _Ubh6sPoAEdu-e7JlHBQtRA _Ubh6r_oAEdu-e7JlHBQtRA _Ubh6tPoAEdu-e7JlHBQtRA _Ubh6s_oAEdu-e7JlHBQtRA _Ubh6uPoAEdu-e7JlHBQtRA _Ubh6t_oAEdu-e7JlHBQtRA _Ubh6vPoAEdu-e7JlHBQtRA _Ubh6u_oAEdu-e7JlHBQtRA _Ubh6wPoAEdu-e7JlHBQtRA _Ubh6v_oAEdu-e7JlHBQtRA _Ubh6xPoAEdu-e7JlHBQtRA _Ubh6w_oAEdu-e7JlHBQtRA _Ubh6yPoAEdu-e7JlHBQtRA _Ubh6x_oAEdu-e7JlHBQtRA _Ubh6zPoAEdu-e7JlHBQtRA _Ubh6y_oAEdu-e7JlHBQtRA _Ubh60PoAEdu-e7JlHBQtRA _Ubh6z_oAEdu-e7JlHBQtRA _Ubh61PoAEdu-e7JlHBQtRA _Ubh60_oAEdu-e7JlHBQtRA _Ubh62PoAEdu-e7JlHBQtRA _Ubh61_oAEdu-e7JlHBQtRA _Ubh63PoAEdu-e7JlHBQtRA _Ubh62_oAEdu-e7JlHBQtRA _Ubh64PoAEdu-e7JlHBQtRA _Ubh63_oAEdu-e7JlHBQtRA _Ubh65PoAEdu-e7JlHBQtRA _Ubh64_oAEdu-e7JlHBQtRA _Ubh66PoAEdu-e7JlHBQtRA _Ubh65_oAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiihIPoAEdu-e7JlHBQtRA" source="10537" references="_UapJ_PoAEdu-e7JlHBQtRA _UapKAPoAEdu-e7JlHBQtRA _UapJ3PoAEdu-e7JlHBQtRA _UapKMfoAEdu-e7JlHBQtRA _UapKNfoAEdu-e7JlHBQtRA _UapKKvoAEdu-e7JlHBQtRA _UayUC_oAEdu-e7JlHBQtRA _UayUDPoAEdu-e7JlHBQtRA _UcuNFvoAEdu-e7JlHBQtRA _UcuNGvoAEdu-e7JlHBQtRA _UcuNIvoAEdu-e7JlHBQtRA _UcuNJfoAEdu-e7JlHBQtRA _UcuNKfoAEdu-e7JlHBQtRA _UcuNKPoAEdu-e7JlHBQtRA _UcuNLfoAEdu-e7JlHBQtRA _UcuNLPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiihIfoAEdu-e7JlHBQtRA" source="UML::AuxiliaryConstructs::Profiles" references="_Ua8Et_oAEdu-e7JlHBQtRA _2QuT0GvdEdq4DLWZOhbdEA"/>
+ <eAnnotations xmi:id="_UiihIvoAEdu-e7JlHBQtRA" source="UML::Actions::StructuredActions" references="_UbFOePoAEdu-e7JlHBQtRA _UbFOcvoAEdu-e7JlHBQtRA _UbFOhfoAEdu-e7JlHBQtRA _UbFOfPoAEdu-e7JlHBQtRA _UbFOkvoAEdu-e7JlHBQtRA _UbFOifoAEdu-e7JlHBQtRA _UbFOlvoAEdu-e7JlHBQtRA _UbFOn_oAEdu-e7JlHBQtRA _UbFOovoAEdu-e7JlHBQtRA _UbFOmfoAEdu-e7JlHBQtRA _UbFOrPoAEdu-e7JlHBQtRA _UbFOr_oAEdu-e7JlHBQtRA _UbFOpvoAEdu-e7JlHBQtRA _UbFOtvoAEdu-e7JlHBQtRA _UbFOs_oAEdu-e7JlHBQtRA _UbFOxvoAEdu-e7JlHBQtRA _UbFOuvoAEdu-e7JlHBQtRA _UbFOy_oAEdu-e7JlHBQtRA _UbFOyvoAEdu-e7JlHBQtRA _UbO_QfoAEdu-e7JlHBQtRA _UbO_QPoAEdu-e7JlHBQtRA _UbO_RfoAEdu-e7JlHBQtRA _UbO_RPoAEdu-e7JlHBQtRA _UbO_SfoAEdu-e7JlHBQtRA _UbO_SPoAEdu-e7JlHBQtRA _UbO_TfoAEdu-e7JlHBQtRA _UbO_TPoAEdu-e7JlHBQtRA _UbO_UfoAEdu-e7JlHBQtRA _UbO_UPoAEdu-e7JlHBQtRA _UbO_VfoAEdu-e7JlHBQtRA _UbO_VPoAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiihI_oAEdu-e7JlHBQtRA" source="UML::AuxiliaryConstructs::InformationFlows" references="_UbO_jPoAEdu-e7JlHBQtRA _UbO_gPoAEdu-e7JlHBQtRA _UbO_nfoAEdu-e7JlHBQtRA _UbO_ofoAEdu-e7JlHBQtRA _UbO_pfoAEdu-e7JlHBQtRA _UbO_qfoAEdu-e7JlHBQtRA _UbO_rfoAEdu-e7JlHBQtRA _UbO_sfoAEdu-e7JlHBQtRA _UbO_tfoAEdu-e7JlHBQtRA _UbO_kPoAEdu-e7JlHBQtRA _UbO_uvoAEdu-e7JlHBQtRA _UbO_ufoAEdu-e7JlHBQtRA _UbO_vvoAEdu-e7JlHBQtRA _UbO_vfoAEdu-e7JlHBQtRA _UbO_wvoAEdu-e7JlHBQtRA _UbO_wfoAEdu-e7JlHBQtRA _UbO_xvoAEdu-e7JlHBQtRA _UbO_xfoAEdu-e7JlHBQtRA _UbO_yvoAEdu-e7JlHBQtRA _UbO_yfoAEdu-e7JlHBQtRA _UbO_zvoAEdu-e7JlHBQtRA _UbO_zfoAEdu-e7JlHBQtRA _UbO_0voAEdu-e7JlHBQtRA _UbO_0foAEdu-e7JlHBQtRA _UbO_1voAEdu-e7JlHBQtRA _UbO_1foAEdu-e7JlHBQtRA"/>
+ <eAnnotations xmi:id="_UiihJPoAEdu-e7JlHBQtRA" source="UML::AuxiliaryConstructs::Models" references="_UbYwQvoAEdu-e7JlHBQtRA _NVhqMGv0Edq7X4sGURiZYA"/>
+ </eAnnotations>
+ <packageImport xmi:id="__as3cGvaEdq4DLWZOhbdEA">
+ <importedPackage xmi:type="uml:Model" href="Ecore.uml#_SeWiQMX_EduPJbEsMYXjUQ"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_XqvEIGvsEdqG6fBIPwe-mw" name="Integer">
+ <ownedComment xmi:id="_UU01QPoAEdu-e7JlHBQtRA" annotatedElement="_XqvEIGvsEdqG6fBIPwe-mw">
+ <body>An integer is a primitive type representing integer values.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_UdivYGvsEdqG6fBIPwe-mw" name="Boolean">
+ <ownedComment xmi:id="_UU01QfoAEdu-e7JlHBQtRA" annotatedElement="_UdivYGvsEdqG6fBIPwe-mw">
+ <body>A Boolean type is used for logical expression, consisting of the predefined values true and false.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_aAyVgGvsEdqG6fBIPwe-mw" name="String">
+ <ownedComment xmi:id="_UU-mQPoAEdu-e7JlHBQtRA" annotatedElement="_aAyVgGvsEdqG6fBIPwe-mw">
+ <body>A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_dRZxsGvsEdqG6fBIPwe-mw" name="UnlimitedNatural">
+ <ownedComment xmi:id="_UU-mQfoAEdu-e7JlHBQtRA" annotatedElement="_dRZxsGvsEdqG6fBIPwe-mw">
+ <body>An unlimited natural is a primitive type representing unlimited natural values.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UUYJ-PoAEdu-e7JlHBQtRA" name="Comment">
+ <ownedComment xmi:id="_UUYJ-foAEdu-e7JlHBQtRA" annotatedElement="_UUYJ-PoAEdu-e7JlHBQtRA">
+ <body>A comment is a textual annotation that can be attached to a set of elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_UUYJ-voAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UUYJ-_oAEdu-e7JlHBQtRA" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUYJ_PoAEdu-e7JlHBQtRA" annotatedElement="_UUYJ-_oAEdu-e7JlHBQtRA">
+ <body>Specifies a string that is the comment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwPPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwPfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJ__oAEdu-e7JlHBQtRA" name="annotatedElement" type="_kl90MGvbEdq4DLWZOhbdEA" association="_UUh6sfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYKAPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJ__oAEdu-e7JlHBQtRA">
+ <body>References the Element(s) being commented.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwPvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwP_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JBgfoKPAEdqi_5gqUMOQtA" name="DirectedRelationship" isAbstract="true">
+ <ownedComment xmi:id="_UToiu_oAEdu-e7JlHBQtRA" annotatedElement="_JBgfoKPAEdqi_5gqUMOQtA">
+ <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="_UToivPoAEdu-e7JlHBQtRA" general="_DH62EKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UToivfoAEdu-e7JlHBQtRA" name="source" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UT7df_oAEdu-e7JlHBQtRA" association="_UUh6ufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToivvoAEdu-e7JlHBQtRA" annotatedElement="_UToivfoAEdu-e7JlHBQtRA">
+ <body>Specifies the sources of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwQPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwQfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UToiwfoAEdu-e7JlHBQtRA" name="target" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UT7df_oAEdu-e7JlHBQtRA" association="_UUh6vfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToiwvoAEdu-e7JlHBQtRA" annotatedElement="_UToiwfoAEdu-e7JlHBQtRA">
+ <body>Specifies the targets of the DirectedRelationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVRhMPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhMfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UVRhZPoAEdu-e7JlHBQtRA" name="LiteralSpecification" isAbstract="true">
+ <ownedComment xmi:id="_UVRhZfoAEdu-e7JlHBQtRA" annotatedElement="_UVRhZPoAEdu-e7JlHBQtRA">
+ <body>A literal specification identifies a literal constant being modeled.</body>
+ </ownedComment>
+ <generalization xmi:id="_UVRhZvoAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Dy77oGveEdq4DLWZOhbdEA" name="LiteralInteger">
+ <ownedComment xmi:id="_UVRhZ_oAEdu-e7JlHBQtRA" annotatedElement="_Dy77oGveEdq4DLWZOhbdEA">
+ <body>A literal integer is a specification of an integer value.</body>
+ </ownedComment>
+ <generalization xmi:id="_UVRhaPoAEdu-e7JlHBQtRA" general="_UVRhZPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UVRhafoAEdu-e7JlHBQtRA" name="value" type="_XqvEIGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UVRhavoAEdu-e7JlHBQtRA" annotatedElement="_UVRhafoAEdu-e7JlHBQtRA">
+ <body>The specified Integer value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_UVRha_oAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_e2SLUGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_hAkRkGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVRhbPoAEdu-e7JlHBQtRA" name="isComputable" isQuery="true" redefinedOperation="_UT7dk_oAEdu-e7JlHBQtRA" bodyCondition="_UVRhbvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVRhbfoAEdu-e7JlHBQtRA" annotatedElement="_UVRhbPoAEdu-e7JlHBQtRA">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVRhbvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVRhbPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhb_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVRhcPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVbSMPoAEdu-e7JlHBQtRA" name="integerValue" isQuery="true" redefinedOperation="_UT7dmPoAEdu-e7JlHBQtRA" bodyCondition="_UVbSMvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSMfoAEdu-e7JlHBQtRA" annotatedElement="_UVbSMPoAEdu-e7JlHBQtRA">
+ <body>The query integerValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSMvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbSMPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSM_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSNPoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5jXJsTEkEdu9VoNTbEBQkQ" name="LiteralString">
+ <ownedComment xmi:id="_UVbSNfoAEdu-e7JlHBQtRA" annotatedElement="_5jXJsTEkEdu9VoNTbEBQkQ">
+ <body>A literal string is a specification of a string value.</body>
+ </ownedComment>
+ <generalization xmi:id="_UVbSNvoAEdu-e7JlHBQtRA" general="_UVRhZPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UVbSN_oAEdu-e7JlHBQtRA" name="value" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UVbSOPoAEdu-e7JlHBQtRA" annotatedElement="_UVbSN_oAEdu-e7JlHBQtRA">
+ <body>The specified String value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVbSOfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbSOvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_-SmgADEkEdu9VoNTbEBQkQ" name="integerValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_-SmgATEkEdu9VoNTbEBQkQ" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FbLFMDElEdu9VoNTbEBQkQ" name="unlimitedValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_FbLFMTElEdu9VoNTbEBQkQ" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVbSO_oAEdu-e7JlHBQtRA" name="isComputable" isQuery="true" redefinedOperation="_UT7dk_oAEdu-e7JlHBQtRA" bodyCondition="_UVbSPfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSPPoAEdu-e7JlHBQtRA" annotatedElement="_UVbSO_oAEdu-e7JlHBQtRA">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSPfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbSO_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSPvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSP_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVbSQPoAEdu-e7JlHBQtRA" name="stringValue" isQuery="true" redefinedOperation="_UT7dovoAEdu-e7JlHBQtRA" bodyCondition="_UVbSQvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSQfoAEdu-e7JlHBQtRA" annotatedElement="_UVbSQPoAEdu-e7JlHBQtRA">
+ <body>The query stringValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSQvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbSQPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSQ_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSRPoAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FFMNsGveEdq4DLWZOhbdEA" name="LiteralBoolean">
+ <ownedComment xmi:id="_UVbSRfoAEdu-e7JlHBQtRA" annotatedElement="_FFMNsGveEdq4DLWZOhbdEA">
+ <body>A literal Boolean is a specification of a Boolean value.</body>
+ </ownedComment>
+ <generalization xmi:id="_UVbSRvoAEdu-e7JlHBQtRA" general="_UVRhZPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UVbSR_oAEdu-e7JlHBQtRA" name="value" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UVbSSPoAEdu-e7JlHBQtRA" annotatedElement="_UVbSR_oAEdu-e7JlHBQtRA">
+ <body>The specified Boolean value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UVbSSfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_aXS3gGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_cFthIGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVbSSvoAEdu-e7JlHBQtRA" name="isComputable" isQuery="true" redefinedOperation="_UT7dk_oAEdu-e7JlHBQtRA" bodyCondition="_UVbSTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSS_oAEdu-e7JlHBQtRA" annotatedElement="_UVbSSvoAEdu-e7JlHBQtRA">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSTPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbSSvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSTfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSTvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVbST_oAEdu-e7JlHBQtRA" name="booleanValue" isQuery="true" redefinedOperation="_UT7dnfoAEdu-e7JlHBQtRA" bodyCondition="_UVbSUfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSUPoAEdu-e7JlHBQtRA" annotatedElement="_UVbST_oAEdu-e7JlHBQtRA">
+ <body>The query booleanValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSUfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbST_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSUvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSU_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UVbSVPoAEdu-e7JlHBQtRA" name="LiteralNull">
+ <ownedComment xmi:id="_UVbSVfoAEdu-e7JlHBQtRA" annotatedElement="_UVbSVPoAEdu-e7JlHBQtRA">
+ <body>A literal null specifies the lack of a value.</body>
+ </ownedComment>
+ <generalization xmi:id="_UVbSVvoAEdu-e7JlHBQtRA" general="_UVRhZPoAEdu-e7JlHBQtRA"/>
+ <ownedOperation xmi:id="_UVbSV_oAEdu-e7JlHBQtRA" name="isComputable" isQuery="true" redefinedOperation="_UT7dk_oAEdu-e7JlHBQtRA" bodyCondition="_UVbSWfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSWPoAEdu-e7JlHBQtRA" annotatedElement="_UVbSV_oAEdu-e7JlHBQtRA">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSWfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbSV_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSWvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSW_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVbSXPoAEdu-e7JlHBQtRA" name="isNull" isQuery="true" redefinedOperation="_UT7drPoAEdu-e7JlHBQtRA" bodyCondition="_UVbSXvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSXfoAEdu-e7JlHBQtRA" annotatedElement="_UVbSXPoAEdu-e7JlHBQtRA">
+ <body>The query isNull() returns true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVbSXvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVbSXPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSX_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVbSYPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UUFO7voAEdu-e7JlHBQtRA" name="Constraint">
+ <ownedComment xmi:id="_UUFO7_oAEdu-e7JlHBQtRA" annotatedElement="_UUFO7voAEdu-e7JlHBQtRA">
+ <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="_UUFO8PoAEdu-e7JlHBQtRA" name="not_apply_to_self" constrainedElement="_UUFO7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO8foAEdu-e7JlHBQtRA" annotatedElement="_UUFO8PoAEdu-e7JlHBQtRA">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UUFO8voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUFO8_oAEdu-e7JlHBQtRA" name="value_specification_boolean" constrainedElement="_UUFO7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO9PoAEdu-e7JlHBQtRA" annotatedElement="_UUFO8_oAEdu-e7JlHBQtRA">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UUFO9foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVbSYfoAEdu-e7JlHBQtRA" name="boolean_value" constrainedElement="_UUFO7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSYvoAEdu-e7JlHBQtRA" annotatedElement="_UVbSYfoAEdu-e7JlHBQtRA">
+ <body>The value specification for a constraint must evaluate to a Boolean value.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSY_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVbSZPoAEdu-e7JlHBQtRA" name="no_side_effects" constrainedElement="_UUFO7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSZfoAEdu-e7JlHBQtRA" annotatedElement="_UVbSZPoAEdu-e7JlHBQtRA">
+ <body>Evaluating the value specification for a constraint must not have side effects.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSZvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVbSZ_oAEdu-e7JlHBQtRA" name="not_applied_to_self" constrainedElement="_UUFO7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSaPoAEdu-e7JlHBQtRA" annotatedElement="_UVbSZ_oAEdu-e7JlHBQtRA">
+ <body>A constraint cannot be applied to itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSafoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not constrainedElement->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUFO9voAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UUFO9_oAEdu-e7JlHBQtRA" name="constrainedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isOrdered="true" association="_UUh6yvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO-PoAEdu-e7JlHBQtRA" annotatedElement="_UUFO9_oAEdu-e7JlHBQtRA">
+ <body>The ordered set of Elements referenced by this Constraint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVbSavoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbSa_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFO-_oAEdu-e7JlHBQtRA" name="specification" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UUh6zvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO_PoAEdu-e7JlHBQtRA" annotatedElement="_UUFO-_oAEdu-e7JlHBQtRA">
+ <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="_UVbSbPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbSbfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFO__oAEdu-e7JlHBQtRA" name="context" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUrrVPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVbSbvoAEdu-e7JlHBQtRA" annotatedElement="_UUFO__oAEdu-e7JlHBQtRA">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVbSb_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbScPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RPl78GwIEdq7X4sGURiZYA" name="ElementImport">
+ <ownedComment xmi:id="_UUO_5_oAEdu-e7JlHBQtRA" annotatedElement="_RPl78GwIEdq7X4sGURiZYA">
+ <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="_UUO_6PoAEdu-e7JlHBQtRA" name="visibility_public_or_private" constrainedElement="_RPl78GwIEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUO_6foAEdu-e7JlHBQtRA" annotatedElement="_UUO_6PoAEdu-e7JlHBQtRA">
+ <body>The visibility of an ElementImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbScfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUYJUPoAEdu-e7JlHBQtRA" name="imported_element_is_public" constrainedElement="_RPl78GwIEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUYJUfoAEdu-e7JlHBQtRA" annotatedElement="_UUYJUPoAEdu-e7JlHBQtRA">
+ <body>An importedElement has either public visibility or no visibility at all.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbScvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUYJU_oAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UUYJVPoAEdu-e7JlHBQtRA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUYJVfoAEdu-e7JlHBQtRA" annotatedElement="_UUYJVPoAEdu-e7JlHBQtRA">
+ <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="_UVbSc_oAEdu-e7JlHBQtRA" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_UUh6WPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJV_oAEdu-e7JlHBQtRA" name="alias" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUYJWPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJV_oAEdu-e7JlHBQtRA">
+ <body>Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVbSdPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbSdfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJW_oAEdu-e7JlHBQtRA" name="importedElement" type="_jKxnwGwLEdq7X4sGURiZYA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UUh6mvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJXPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJW_oAEdu-e7JlHBQtRA">
+ <body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVbSdvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbSd_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJX_oAEdu-e7JlHBQtRA" name="importingNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA" association="_UUh6nvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJYPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJX_oAEdu-e7JlHBQtRA">
+ <body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVbSePoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVbSefoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UUYJY_oAEdu-e7JlHBQtRA" name="getName" isQuery="true" bodyCondition="_UUYJZfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJZPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJY_oAEdu-e7JlHBQtRA">
+ <body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUYJZfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJY_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSevoAEdu-e7JlHBQtRA">
+ <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="_UUYJZ_oAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UT7diPoAEdu-e7JlHBQtRA" name="TypedElement" isAbstract="true">
+ <ownedComment xmi:id="_UT7difoAEdu-e7JlHBQtRA" annotatedElement="_UT7diPoAEdu-e7JlHBQtRA">
+ <body>A typed element is a kind of named element that represents an element with a type.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UVkcSPoAEdu-e7JlHBQtRA" annotatedElement="_UT7diPoAEdu-e7JlHBQtRA">
+ <body>A typed element has a type.</body>
+ </ownedComment>
+ <generalization xmi:id="_UT7divoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UT7di_oAEdu-e7JlHBQtRA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" association="_UUh6YPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7djPoAEdu-e7JlHBQtRA" annotatedElement="_UT7di_oAEdu-e7JlHBQtRA">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UVkcSfoAEdu-e7JlHBQtRA" annotatedElement="_UT7di_oAEdu-e7JlHBQtRA">
+ <body>The type of the TypedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVkcSvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVkcS_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UTyTcPoAEdu-e7JlHBQtRA" name="Feature" isAbstract="true">
+ <ownedComment xmi:id="_UTyTcfoAEdu-e7JlHBQtRA" annotatedElement="_UTyTcPoAEdu-e7JlHBQtRA">
+ <body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_UTyTcvoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UWd0DfoAEdu-e7JlHBQtRA" name="isStatic" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UWd0DvoAEdu-e7JlHBQtRA" annotatedElement="_UWd0DfoAEdu-e7JlHBQtRA">
+ <body>Specifies whether this feature characterizes individual instances classified by the classifier (false) or the classifier itself (true).</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWd0D_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTc_oAEdu-e7JlHBQtRA" name="featuringClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UUh6yfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTdPoAEdu-e7JlHBQtRA" annotatedElement="_UTyTc_oAEdu-e7JlHBQtRA">
+ <body>The Classifiers that have this Feature as a feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0EPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0EfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UT7dYPoAEdu-e7JlHBQtRA" name="RedefinableElement" isAbstract="true">
+ <ownedComment xmi:id="_UT7dYfoAEdu-e7JlHBQtRA" annotatedElement="_UT7dYPoAEdu-e7JlHBQtRA">
+ <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="_UT7dYvoAEdu-e7JlHBQtRA" name="redefinition_context_valid" constrainedElement="_UT7dYPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dY_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dYvoAEdu-e7JlHBQtRA">
+ <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="_UWd0EvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UT7dZfoAEdu-e7JlHBQtRA" name="redefinition_consistent" constrainedElement="_UT7dYPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dZvoAEdu-e7JlHBQtRA" annotatedElement="_UT7dZfoAEdu-e7JlHBQtRA">
+ <body>A redefining element must be consistent with each redefined element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0E_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.redefinedElement->forAll(re | re.isConsistentWith(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UT7daPoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UWd0FPoAEdu-e7JlHBQtRA" name="isLeaf" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UWd0FfoAEdu-e7JlHBQtRA" annotatedElement="_UWd0FPoAEdu-e7JlHBQtRA">
+ <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>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWd0FvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7dbfoAEdu-e7JlHBQtRA" name="redefinedElement" type="_UT7dYPoAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UUh6xfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dbvoAEdu-e7JlHBQtRA" annotatedElement="_UT7dbfoAEdu-e7JlHBQtRA">
+ <body>The redefinable element that is being redefined by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0F_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0GPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7dafoAEdu-e7JlHBQtRA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UUh6wfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7davoAEdu-e7JlHBQtRA" annotatedElement="_UT7dafoAEdu-e7JlHBQtRA">
+ <body>References the contexts that this element may be redefined from.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0GfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0GvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UT7dcfoAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" precondition="_UWd0G_oAEdu-e7JlHBQtRA" bodyCondition="_UT7dc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dcvoAEdu-e7JlHBQtRA" annotatedElement="_UT7dcfoAEdu-e7JlHBQtRA">
+ <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="_UWd0G_oAEdu-e7JlHBQtRA" constrainedElement="_UT7dcfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0HPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UT7dc_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dcfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0HfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7ddfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UT7ddvoAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UT7dd_oAEdu-e7JlHBQtRA" name="isRedefinitionContextValid" isQuery="true" bodyCondition="_UT7defoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dePoAEdu-e7JlHBQtRA" annotatedElement="_UT7dd_oAEdu-e7JlHBQtRA">
+ <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="_UT7defoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dd_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0HvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7de_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UT7dfPoAEdu-e7JlHBQtRA" name="redefined" type="_UT7dYPoAEdu-e7JlHBQtRA" effect="read"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UT7dg_oAEdu-e7JlHBQtRA" name="StructuralFeature" isAbstract="true">
+ <ownedComment xmi:id="_UT7dhPoAEdu-e7JlHBQtRA" annotatedElement="_UT7dg_oAEdu-e7JlHBQtRA">
+ <body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWnlCfoAEdu-e7JlHBQtRA" annotatedElement="_UT7dg_oAEdu-e7JlHBQtRA">
+ <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="_UT7dhfoAEdu-e7JlHBQtRA" general="_UTyTcPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UT7dhvoAEdu-e7JlHBQtRA" general="_UT7diPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UT7dh_oAEdu-e7JlHBQtRA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UWnlCvoAEdu-e7JlHBQtRA" name="isReadOnly" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UWnlC_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlCvoAEdu-e7JlHBQtRA">
+ <body>States whether the feature's value may be modified by a client.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWnlDPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UWnlIvoAEdu-e7JlHBQtRA" name="Slot">
+ <ownedComment xmi:id="_UWnlI_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlIvoAEdu-e7JlHBQtRA">
+ <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="_UWnlJPoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UWnlJfoAEdu-e7JlHBQtRA" name="owningInstance" type="_UWnlDfoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXXL_PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlJvoAEdu-e7JlHBQtRA" annotatedElement="_UWnlJfoAEdu-e7JlHBQtRA">
+ <body>The instance specification that owns this slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlJ_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlKPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWnlKfoAEdu-e7JlHBQtRA" name="definingFeature" type="_UT7dg_oAEdu-e7JlHBQtRA" association="_UXXL_foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlKvoAEdu-e7JlHBQtRA" annotatedElement="_UWnlKfoAEdu-e7JlHBQtRA">
+ <body>The structural feature that specifies the values that may be held by the slot.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlK_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlLPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWnlLfoAEdu-e7JlHBQtRA" name="value" type="_UT7dj_oAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXgV4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlLvoAEdu-e7JlHBQtRA" annotatedElement="_UWnlLfoAEdu-e7JlHBQtRA">
+ <body>The value or values corresponding to the defining feature for the owning instance specification.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlL_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlMPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SnNPIGwIEdq7X4sGURiZYA" name="PackageImport">
+ <ownedComment xmi:id="_UUYJlvoAEdu-e7JlHBQtRA" annotatedElement="_SnNPIGwIEdq7X4sGURiZYA">
+ <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="_UUYJl_oAEdu-e7JlHBQtRA" name="public_or_private" constrainedElement="_SnNPIGwIEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUYJmPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJl_oAEdu-e7JlHBQtRA">
+ <body>The visibility of a PackageImport is either public or private.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWnlQvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.visibility = #public or self.visibility = #private</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUYJmvoAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UUYJm_oAEdu-e7JlHBQtRA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUYJnPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJm_oAEdu-e7JlHBQtRA">
+ <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="_UWnlQ_oAEdu-e7JlHBQtRA" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_UUh6WPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJovoAEdu-e7JlHBQtRA" name="importingNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA" association="_UUh6n_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJo_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJovoAEdu-e7JlHBQtRA">
+ <body>Specifies the Namespace that imports the members from a Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlRPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlRfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJnvoAEdu-e7JlHBQtRA" name="importedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UUh6lvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJn_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJnvoAEdu-e7JlHBQtRA">
+ <body>Specifies the Package whose members are imported into a Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlRvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlR_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__1ap4HLzEdqziYxiZo0YtA" name="DataType">
+ <ownedComment xmi:id="_UUFOzPoAEdu-e7JlHBQtRA" annotatedElement="__1ap4HLzEdqziYxiZo0YtA">
+ <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="_UUFOzfoAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UUFOzvoAEdu-e7JlHBQtRA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYifoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6gPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOz_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOzvoAEdu-e7JlHBQtRA">
+ <body>The Attributes owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXEQ9PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXEQ9foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFO0voAEdu-e7JlHBQtRA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6gfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO0_oAEdu-e7JlHBQtRA" annotatedElement="_UUFO0voAEdu-e7JlHBQtRA">
+ <body>The Operations owned by the DataType.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXEQ9voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXEQ9_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_FDM9YHL0EdqziYxiZo0YtA" name="createOwnedOperation">
+ <ownedComment xmi:id="_GrDVwOwmEdqYHf-imTcTdw" annotatedElement="_FDM9YHL0EdqziYxiZo0YtA">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FDM9YXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_FDM9YnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_qJiAUPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9YnL0EdqziYxiZo0YtA">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wfr4AaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wfr4AKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FDM9ZHL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_sw2n4PIAEdulR8T2OJRyFQ" annotatedElement="_FDM9ZHL0EdqziYxiZo0YtA">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9ZXL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9ZnL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FDM9Z3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_uKsvsPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Z3L0EdqziYxiZo0YtA">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9aHL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9aXL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FDM9Y3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_wCpIwPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Y3L0EdqziYxiZo0YtA">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yc2vUaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yc2vUKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WJZCQHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_I4T3gOwmEdqYHf-imTcTdw" annotatedElement="_WJZCQHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_WJZCQXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_WJZCQnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_kDvt0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0pOgQaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0pOgQKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WJZCQ3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_lgIMQPIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQ3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bXMQaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bXMQKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WJZCRHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_iw5l4PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WJZCRXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_nuRe0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFO1voAEdu-e7JlHBQtRA" name="inherit" isQuery="true" redefinedOperation="_UToiq_oAEdu-e7JlHBQtRA" bodyCondition="_UUFO2PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO1_oAEdu-e7JlHBQtRA" annotatedElement="_UUFO1voAEdu-e7JlHBQtRA">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUFO2PoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFO1voAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UUFO2foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUFO2voAEdu-e7JlHBQtRA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UUFO2_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UUFO3PoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UUFO3foAEdu-e7JlHBQtRA" name="inhs" type="_csVgUGvtEdqG6fBIPwe-mw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UUFO3voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UUFO3_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_I6N3UGwGEdq7X4sGURiZYA" name="Enumeration">
+ <ownedComment xmi:id="_UUFO4PoAEdu-e7JlHBQtRA" annotatedElement="_I6N3UGwGEdq7X4sGURiZYA">
+ <body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
+ </ownedComment>
+ <generalization xmi:id="_UUFO4foAEdu-e7JlHBQtRA" general="__1ap4HLzEdqziYxiZo0YtA"/>
+ <ownedAttribute xmi:id="_UUFO4voAEdu-e7JlHBQtRA" name="ownedLiteral" type="_OQcbgGwOEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6f_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO4_oAEdu-e7JlHBQtRA" annotatedElement="_UUFO4voAEdu-e7JlHBQtRA">
+ <body>The ordered set of literals for this Enumeration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXEQ-PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXEQ-foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_OQcbgGwOEdq7X4sGURiZYA" name="EnumerationLiteral">
+ <ownedComment xmi:id="_UUFO5voAEdu-e7JlHBQtRA" annotatedElement="_OQcbgGwOEdq7X4sGURiZYA">
+ <body>An enumeration literal is a user-defined data value for an enumeration.</body>
+ </ownedComment>
+ <generalization xmi:id="_UXEQ-voAEdu-e7JlHBQtRA" general="_UWnlDfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UUFO6PoAEdu-e7JlHBQtRA" name="enumeration" type="_I6N3UGwGEdq7X4sGURiZYA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUh6f_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFO6foAEdu-e7JlHBQtRA" annotatedElement="_UUFO6PoAEdu-e7JlHBQtRA">
+ <body>The Enumeration that this EnumerationLiteral is a member of.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXEQ-_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXEQ_PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_V6vuYGwGEdq7X4sGURiZYA" name="PrimitiveType">
+ <ownedComment xmi:id="_UUFO7PoAEdu-e7JlHBQtRA" annotatedElement="_V6vuYGwGEdq7X4sGURiZYA">
+ <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="_UUFO7foAEdu-e7JlHBQtRA" general="__1ap4HLzEdqziYxiZo0YtA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AwvxoGwNEdq7X4sGURiZYA" name="Association">
+ <ownedComment xmi:id="_UT7dsfoAEdu-e7JlHBQtRA" annotatedElement="_AwvxoGwNEdq7X4sGURiZYA">
+ <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="_UXEQ_foAEdu-e7JlHBQtRA" name="specialized_end_number" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UXEQ_voAEdu-e7JlHBQtRA" annotatedElement="_UXEQ_foAEdu-e7JlHBQtRA">
+ <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="_UXEQ__oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXERAPoAEdu-e7JlHBQtRA" name="specialized_end_types" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UXERAfoAEdu-e7JlHBQtRA" annotatedElement="_UXERAPoAEdu-e7JlHBQtRA">
+ <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="_UXERAvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXERA_oAEdu-e7JlHBQtRA" name="binary_associations" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UXERBPoAEdu-e7JlHBQtRA" annotatedElement="_UXERA_oAEdu-e7JlHBQtRA">
+ <body>Only binary associations can be aggregations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXERBfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UT7dsvoAEdu-e7JlHBQtRA" name="association_ends" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UT7ds_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dsvoAEdu-e7JlHBQtRA">
+ <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="_UXERBvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UT7dtvoAEdu-e7JlHBQtRA" general="_DH62EKPAEdqi_5gqUMOQtA"/>
+ <generalization xmi:id="_UT7dtfoAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UT7dt_oAEdu-e7JlHBQtRA" name="isDerived" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UT7duPoAEdu-e7JlHBQtRA" annotatedElement="_UT7dt_oAEdu-e7JlHBQtRA">
+ <body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UXERB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7duvoAEdu-e7JlHBQtRA" name="ownedEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UT7dwvoAEdu-e7JlHBQtRA _UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6ZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7du_oAEdu-e7JlHBQtRA" annotatedElement="_UT7duvoAEdu-e7JlHBQtRA">
+ <body>The ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERCPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERCfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7dvvoAEdu-e7JlHBQtRA" name="endType" type="_ynRtoGvtEdqG6fBIPwe-mw" isOrdered="true" isReadOnly="true" isDerived="true" subsettedProperty="_UT7df_oAEdu-e7JlHBQtRA" association="_UUh6e_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dv_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dvvoAEdu-e7JlHBQtRA">
+ <body>References the classifiers that are used as types of the ends of the association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERCvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERC_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7dwvoAEdu-e7JlHBQtRA" name="memberEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" subsettedProperty="_UTyTyPoAEdu-e7JlHBQtRA" association="_UUh6pfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dw_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dwvoAEdu-e7JlHBQtRA">
+ <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="_UXERDPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERDfoAEdu-e7JlHBQtRA" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7dxvoAEdu-e7JlHBQtRA" name="navigableOwnedEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_UT7duvoAEdu-e7JlHBQtRA" association="_UUh63_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dx_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dxvoAEdu-e7JlHBQtRA">
+ <body>The navigable ends that are owned by the association itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERDvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERD_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_WSPusK69EdqjppZik4kD8A" name="isBinary">
+ <ownedComment xmi:id="_4TWQYOwlEdqYHf-imTcTdw" annotatedElement="_WSPusK69EdqjppZik4kD8A">
+ <body>Determines whether this association is a binary association, i.e. whether it has exactly two member ends.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YmN8cK69EdqjppZik4kD8A" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UXEREPoAEdu-e7JlHBQtRA" name="endType" isQuery="true" bodyCondition="_UXEREvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXEREfoAEdu-e7JlHBQtRA" annotatedElement="_UXEREPoAEdu-e7JlHBQtRA">
+ <body>endType is derived from the types of the member ends.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXEREvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UXEREPoAEdu-e7JlHBQtRA _UT7dvvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXERE_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.memberEnd->collect(e | e.type)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UXERFPoAEdu-e7JlHBQtRA" type="_ynRtoGvtEdqG6fBIPwe-mw" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERFfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERFvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DH62EKPAEdqi_5gqUMOQtA" name="Relationship" isAbstract="true">
+ <ownedComment xmi:id="_UT7dffoAEdu-e7JlHBQtRA" annotatedElement="_DH62EKPAEdqi_5gqUMOQtA">
+ <body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_UT7dfvoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UT7df_oAEdu-e7JlHBQtRA" name="relatedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UUh6tfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dgPoAEdu-e7JlHBQtRA" annotatedElement="_UT7df_oAEdu-e7JlHBQtRA">
+ <body>Specifies the elements related by the Relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNa7foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNa7voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UUYJpvoAEdu-e7JlHBQtRA" name="PackageMerge">
+ <ownedComment xmi:id="_UUYJp_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJpvoAEdu-e7JlHBQtRA">
+ <body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
+ </ownedComment>
+ <generalization xmi:id="_UUYJqPoAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UUYJqfoAEdu-e7JlHBQtRA" name="receivingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA" association="_UUh6q_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJqvoAEdu-e7JlHBQtRA" annotatedElement="_UUYJqfoAEdu-e7JlHBQtRA">
+ <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="_UXNa7_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNa8PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJrfoAEdu-e7JlHBQtRA" name="mergedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UUh6rPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJrvoAEdu-e7JlHBQtRA" annotatedElement="_UUYJrfoAEdu-e7JlHBQtRA">
+ <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="_UXNa8foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNa8voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_PyCx8GveEdq4DLWZOhbdEA" name="InstanceValue">
+ <ownedComment xmi:id="_UXNa8_oAEdu-e7JlHBQtRA" annotatedElement="_PyCx8GveEdq4DLWZOhbdEA">
+ <body>An instance value is a value specification that identifies an instance.</body>
+ </ownedComment>
+ <generalization xmi:id="_UXNa9PoAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UXNa9foAEdu-e7JlHBQtRA" name="instance" type="_UWnlDfoAEdu-e7JlHBQtRA" association="_UXgV3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXNa9voAEdu-e7JlHBQtRA" annotatedElement="_UXNa9foAEdu-e7JlHBQtRA">
+ <body>The instance that is the specified value.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNa9_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNa-PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_QUJ-oWWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_T0RPYGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Q-yR4GveEdq4DLWZOhbdEA" name="LiteralUnlimitedNatural">
+ <ownedComment xmi:id="_UXNa-foAEdu-e7JlHBQtRA" annotatedElement="_Q-yR4GveEdq4DLWZOhbdEA">
+ <body>A literal unlimited natural is a specification of an unlimited natural number.</body>
+ </ownedComment>
+ <generalization xmi:id="_UXNa-voAEdu-e7JlHBQtRA" general="_UVRhZPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UXNa-_oAEdu-e7JlHBQtRA" name="value" type="_dRZxsGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UXNa_PoAEdu-e7JlHBQtRA" annotatedElement="_UXNa-_oAEdu-e7JlHBQtRA">
+ <body>The specified UnlimitedNatural value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNa_foAEdu-e7JlHBQtRA" type="_dRZxsGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_lSARkGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_nyfRUGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UXNa_voAEdu-e7JlHBQtRA" name="isComputable" isQuery="true" redefinedOperation="_UT7dk_oAEdu-e7JlHBQtRA" bodyCondition="_UXNbAPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXNa__oAEdu-e7JlHBQtRA" annotatedElement="_UXNa_voAEdu-e7JlHBQtRA">
+ <body>The query isComputable() is redefined to be true.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXNbAPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UXNa_voAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNbAfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UXNbAvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UXNbA_oAEdu-e7JlHBQtRA" name="unlimitedValue" isQuery="true" redefinedOperation="_UT7dp_oAEdu-e7JlHBQtRA" bodyCondition="_UXNbBfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXNbBPoAEdu-e7JlHBQtRA" annotatedElement="_UXNbA_oAEdu-e7JlHBQtRA">
+ <body>The query unlimitedValue() gives the value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXNbBfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UXNbA_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNbBvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = value</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UXNbB_oAEdu-e7JlHBQtRA" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ynRtoGvtEdqG6fBIPwe-mw" name="Type" isAbstract="true">
+ <ownedComment xmi:id="_UUYJsfoAEdu-e7JlHBQtRA" annotatedElement="_ynRtoGvtEdqG6fBIPwe-mw">
+ <body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UXNbCPoAEdu-e7JlHBQtRA" annotatedElement="_ynRtoGvtEdqG6fBIPwe-mw">
+ <body>A type constrains the values represented by a typed element.</body>
+ </ownedComment>
+ <generalization xmi:id="_UUYJs_oAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UUYJtPoAEdu-e7JlHBQtRA" name="package" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUh6pPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJtfoAEdu-e7JlHBQtRA" annotatedElement="_UUYJtPoAEdu-e7JlHBQtRA">
+ <body>Specifies the owning package of this classifier, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNbCfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNbCvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_RNEaIGwNEdq7X4sGURiZYA" name="createAssociation">
+ <ownedComment xmi:id="_w29JkOwgEdqYHf-imTcTdw" annotatedElement="_RNEaIGwNEdq7X4sGURiZYA">
+ <body>Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_URUOQGwNEdq7X4sGURiZYA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_AEONYGwOEdq7X4sGURiZYA" name="end1IsNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_QiftAPIGEdulR8T2OJRyFQ" annotatedElement="_AEONYGwOEdq7X4sGURiZYA">
+ <body>The navigability for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7HueMGwNEdq7X4sGURiZYA" name="end1Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_OnjqUPIGEdulR8T2OJRyFQ" annotatedElement="_7HueMGwNEdq7X4sGURiZYA">
+ <body>The aggregation for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_2TaaoGwNEdq7X4sGURiZYA" name="end1Name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Se69cPIGEdulR8T2OJRyFQ" annotatedElement="_2TaaoGwNEdq7X4sGURiZYA">
+ <body>The name for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_x-QYQGwNEdq7X4sGURiZYA" name="end1Lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_RpH94PIGEdulR8T2OJRyFQ" annotatedElement="_x-QYQGwNEdq7X4sGURiZYA">
+ <body>The lower bound for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_uL9yYGwNEdq7X4sGURiZYA" name="end1Upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_UmXyIPIGEdulR8T2OJRyFQ" annotatedElement="_uL9yYGwNEdq7X4sGURiZYA">
+ <body>The upper bound for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_qFQbsGwNEdq7X4sGURiZYA" name="end1Type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_TTX5MPIGEdulR8T2OJRyFQ" annotatedElement="_qFQbsGwNEdq7X4sGURiZYA">
+ <body>The type for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_mB-McGwNEdq7X4sGURiZYA" name="end2IsNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_YRNsMPIGEdulR8T2OJRyFQ" annotatedElement="_mB-McGwNEdq7X4sGURiZYA">
+ <body>The navigability for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_hm2sAGwNEdq7X4sGURiZYA" name="end2Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_VjBAkPIGEdulR8T2OJRyFQ" annotatedElement="_hm2sAGwNEdq7X4sGURiZYA">
+ <body>The aggregation for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_eK6JkGwNEdq7X4sGURiZYA" name="end2Name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_cTJ3oPIGEdulR8T2OJRyFQ" annotatedElement="_eK6JkGwNEdq7X4sGURiZYA">
+ <body>The name for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_auE2UGwNEdq7X4sGURiZYA" name="end2Lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_aGo8wPIGEdulR8T2OJRyFQ" annotatedElement="_auE2UGwNEdq7X4sGURiZYA">
+ <body>The lower bound for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_VprIUGwNEdq7X4sGURiZYA" name="end2Upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_eBbXUPIGEdulR8T2OJRyFQ" annotatedElement="_VprIUGwNEdq7X4sGURiZYA">
+ <body>The upper bound for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_10fbsKPAEdqi_5gqUMOQtA" name="getAssociations">
+ <ownedComment xmi:id="_2pskQOwgEdqYHf-imTcTdw" annotatedElement="_10fbsKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the associations in which this type is involved.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_5F3F0KPAEdqi_5gqUMOQtA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7CRvMaPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7CRvMKPAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJuPoAEdu-e7JlHBQtRA" name="conformsTo" isQuery="true" bodyCondition="_UUYJuvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJufoAEdu-e7JlHBQtRA" annotatedElement="_UUYJuPoAEdu-e7JlHBQtRA">
+ <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="_UUYJuvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJuPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNbC_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUYJvPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUYJvfoAEdu-e7JlHBQtRA" name="other" type="_ynRtoGvtEdqG6fBIPwe-mw"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UUYJ8foAEdu-e7JlHBQtRA" name="Expression">
+ <ownedComment xmi:id="_UUYJ8voAEdu-e7JlHBQtRA" annotatedElement="_UUYJ8foAEdu-e7JlHBQtRA">
+ <body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UXNbDPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJ8foAEdu-e7JlHBQtRA">
+ <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="_UUYJ8_oAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UXNbDfoAEdu-e7JlHBQtRA" name="symbol" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UXNbDvoAEdu-e7JlHBQtRA" annotatedElement="_UXNbDfoAEdu-e7JlHBQtRA">
+ <body>The symbol associated with the node in the expression tree.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNbD_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNbEPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJ9PoAEdu-e7JlHBQtRA" name="operand" type="_UT7dj_oAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UUh62_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJ9foAEdu-e7JlHBQtRA" annotatedElement="_UUYJ9PoAEdu-e7JlHBQtRA">
+ <body>Specifies a sequence of operands.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNbEfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNbEvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_B3q9cGwNEdq7X4sGURiZYA" name="AggregationKind">
+ <ownedComment xmi:id="_UXNbE_oAEdu-e7JlHBQtRA" annotatedElement="_B3q9cGwNEdq7X4sGURiZYA">
+ <body>AggregationKind is an enumeration type that specifies the literals for defining the kind of aggregation of a property.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UXNbFPoAEdu-e7JlHBQtRA" name="none">
+ <ownedComment xmi:id="_UXNbFfoAEdu-e7JlHBQtRA" annotatedElement="_UXNbFPoAEdu-e7JlHBQtRA">
+ <body>Indicates that the property has no aggregation.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UXXL4PoAEdu-e7JlHBQtRA" name="shared">
+ <ownedComment xmi:id="_UXXL4foAEdu-e7JlHBQtRA" annotatedElement="_UXXL4PoAEdu-e7JlHBQtRA">
+ <body>Indicates that the property has a shared aggregation.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UXXL4voAEdu-e7JlHBQtRA" name="composite">
+ <ownedComment xmi:id="_UXXL4_oAEdu-e7JlHBQtRA" annotatedElement="_UXXL4voAEdu-e7JlHBQtRA">
+ <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="_UUYKA_oAEdu-e7JlHBQtRA" name="ParameterDirectionKind">
+ <ownedComment xmi:id="_UUYKBPoAEdu-e7JlHBQtRA" annotatedElement="_UUYKA_oAEdu-e7JlHBQtRA">
+ <body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UUYKBfoAEdu-e7JlHBQtRA" name="in">
+ <ownedComment xmi:id="_UUYKBvoAEdu-e7JlHBQtRA" annotatedElement="_UUYKBfoAEdu-e7JlHBQtRA">
+ <body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UUYKB_oAEdu-e7JlHBQtRA" name="inout">
+ <ownedComment xmi:id="_UUYKCPoAEdu-e7JlHBQtRA" annotatedElement="_UUYKB_oAEdu-e7JlHBQtRA">
+ <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="_UUYKCfoAEdu-e7JlHBQtRA" name="out">
+ <ownedComment xmi:id="_UUYKCvoAEdu-e7JlHBQtRA" annotatedElement="_UUYKCfoAEdu-e7JlHBQtRA">
+ <body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UUYKC_oAEdu-e7JlHBQtRA" name="return">
+ <ownedComment xmi:id="_UUYKDPoAEdu-e7JlHBQtRA" annotatedElement="_UUYKC_oAEdu-e7JlHBQtRA">
+ <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="_AyM_oGwMEdq7X4sGURiZYA" name="VisibilityKind">
+ <ownedComment xmi:id="_UUYKDfoAEdu-e7JlHBQtRA" annotatedElement="_AyM_oGwMEdq7X4sGURiZYA">
+ <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
+ </ownedComment>
+ <ownedOperation xmi:id="_UUh6UPoAEdu-e7JlHBQtRA" name="bestVisibility" isQuery="true" precondition="_UXXL5PoAEdu-e7JlHBQtRA" bodyCondition="_UUh6UvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUh6UfoAEdu-e7JlHBQtRA" annotatedElement="_UUh6UPoAEdu-e7JlHBQtRA">
+ <body>The query bestVisibility() examines a set of VisibilityKinds, and returns public as the preferred visibility.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXXL5PoAEdu-e7JlHBQtRA" constrainedElement="_UUh6UPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXXL5foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>pre: not vis->includes(#protected) and not vis->includes(#package)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUh6UvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUh6UPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXXL5voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if vis->includes(#public) then #public else #private endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUh6VPoAEdu-e7JlHBQtRA" type="_AyM_oGwMEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_UUh6VfoAEdu-e7JlHBQtRA" name="vis" type="_AyM_oGwMEdq7X4sGURiZYA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL5_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL6PoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedLiteral xmi:id="_UUh6WPoAEdu-e7JlHBQtRA" name="public">
+ <ownedComment xmi:id="_UUh6WfoAEdu-e7JlHBQtRA" annotatedElement="_UUh6WPoAEdu-e7JlHBQtRA">
+ <body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UUh6WvoAEdu-e7JlHBQtRA" name="private">
+ <ownedComment xmi:id="_UUh6W_oAEdu-e7JlHBQtRA" annotatedElement="_UUh6WvoAEdu-e7JlHBQtRA">
+ <body>A private element is only visible inside the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UUh6XPoAEdu-e7JlHBQtRA" name="protected">
+ <ownedComment xmi:id="_UUh6XfoAEdu-e7JlHBQtRA" annotatedElement="_UUh6XPoAEdu-e7JlHBQtRA">
+ <body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UUh6XvoAEdu-e7JlHBQtRA" name="package">
+ <ownedComment xmi:id="_UUh6X_oAEdu-e7JlHBQtRA" annotatedElement="_UUh6XvoAEdu-e7JlHBQtRA">
+ <body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6sPoAEdu-e7JlHBQtRA" name="A_ownedElement_owner" memberEnd="_UToizPoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6ufoAEdu-e7JlHBQtRA" name="A_source_directedRelationship" memberEnd="_UToivfoAEdu-e7JlHBQtRA _UUh6uvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6uvoAEdu-e7JlHBQtRA" type="_JBgfoKPAEdqi_5gqUMOQtA" association="_UUh6ufoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL6foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL6voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6vfoAEdu-e7JlHBQtRA" name="A_target_directedRelationship" memberEnd="_UToiwfoAEdu-e7JlHBQtRA _UUh6vvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6vvoAEdu-e7JlHBQtRA" type="_JBgfoKPAEdqi_5gqUMOQtA" association="_UUh6vfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL6_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL7PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6yvoAEdu-e7JlHBQtRA" name="A_constrainedElement_constraint" memberEnd="_UUFO9_oAEdu-e7JlHBQtRA _UUh6y_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6y_oAEdu-e7JlHBQtRA" type="_UUFO7voAEdu-e7JlHBQtRA" association="_UUh6yvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL7foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL7voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6YPoAEdu-e7JlHBQtRA" name="A_type_typedElement" memberEnd="_UT7di_oAEdu-e7JlHBQtRA _UUh6YfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6YfoAEdu-e7JlHBQtRA" type="_UT7diPoAEdu-e7JlHBQtRA" association="_UUh6YPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL7_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL8PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXL8foAEdu-e7JlHBQtRA" name="A_generalization_specific" memberEnd="_UVuNJPoAEdu-e7JlHBQtRA _UWd0JfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXL8voAEdu-e7JlHBQtRA" name="A_general_generalization" memberEnd="_UWd0KfoAEdu-e7JlHBQtRA _UXXL8_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXL8_oAEdu-e7JlHBQtRA" type="_C7AF4GwREdq14q0ETb1t3g" association="_UXXL8voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL9PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL9foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6yfoAEdu-e7JlHBQtRA" name="A_feature_featuringClassifier" memberEnd="_UTfYjfoAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6ivoAEdu-e7JlHBQtRA" name="A_ownedParameter_ownerFormalParam" memberEnd="_UUO_2PoAEdu-e7JlHBQtRA _UUh6i_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6i_oAEdu-e7JlHBQtRA" name="ownerFormalParam" type="_rHT3YKOsEdqi_5gqUMOQtA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUh6ivoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL9voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL9_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXL-PoAEdu-e7JlHBQtRA" name="A_classifier_instanceSpecification" memberEnd="_UWnlFvoAEdu-e7JlHBQtRA _UXXL-foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXL-foAEdu-e7JlHBQtRA" type="_UWnlDfoAEdu-e7JlHBQtRA" association="_UXXL-PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL-voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXL-_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXL_PoAEdu-e7JlHBQtRA" name="A_slot_owningInstance" memberEnd="_UWnlGvoAEdu-e7JlHBQtRA _UWnlJfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXL_foAEdu-e7JlHBQtRA" name="A_definingFeature_slot" memberEnd="_UWnlKfoAEdu-e7JlHBQtRA _UXXL_voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXL_voAEdu-e7JlHBQtRA" type="_UWnlIvoAEdu-e7JlHBQtRA" association="_UXXL_foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXL__oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMAPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6sfoAEdu-e7JlHBQtRA" name="A_annotatedElement_comment" memberEnd="_UUYJ__oAEdu-e7JlHBQtRA _UUh6svoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6svoAEdu-e7JlHBQtRA" type="_UUYJ-PoAEdu-e7JlHBQtRA" association="_UUh6sfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMAfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMAvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh65PoAEdu-e7JlHBQtRA" name="A_ownedComment_owningElement" memberEnd="_UToi1PoAEdu-e7JlHBQtRA _UUh65foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh65foAEdu-e7JlHBQtRA" name="owningElement" type="_kl90MGvbEdq4DLWZOhbdEA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UUh65PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMA_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMBPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6mvoAEdu-e7JlHBQtRA" name="A_importedElement_elementImport" memberEnd="_UUYJW_oAEdu-e7JlHBQtRA _UUh6m_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6m_oAEdu-e7JlHBQtRA" type="_RPl78GwIEdq7X4sGURiZYA" association="_UUh6mvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UUh6nPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UUh6nfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh66PoAEdu-e7JlHBQtRA" name="A_inheritedMember_classifier" memberEnd="_UTfYlfoAEdu-e7JlHBQtRA _UUh66foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh66foAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UUh66PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMBfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMBvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXMB_oAEdu-e7JlHBQtRA" name="A_nestedClassifier_class" memberEnd="_UWnlSvoAEdu-e7JlHBQtRA _UXXMCPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXMCPoAEdu-e7JlHBQtRA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA _UT7dafoAEdu-e7JlHBQtRA" association="_UXXMB_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMCfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMCvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6ZPoAEdu-e7JlHBQtRA" name="A_ownedAttribute_class" memberEnd="_UT7dz_oAEdu-e7JlHBQtRA _UUFOkfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6ZfoAEdu-e7JlHBQtRA" name="A_ownedOperation_class" memberEnd="_UT7d0_oAEdu-e7JlHBQtRA _UUO_f_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh67PoAEdu-e7JlHBQtRA" name="A_precondition_preContext" memberEnd="_UUO_l_oAEdu-e7JlHBQtRA _UUh67foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh67foAEdu-e7JlHBQtRA" name="preContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_UUFO__oAEdu-e7JlHBQtRA" association="_UUh67PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMDfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMDvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh68PoAEdu-e7JlHBQtRA" name="A_postcondition_postContext" memberEnd="_UUO_mvoAEdu-e7JlHBQtRA _UUh68foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh68foAEdu-e7JlHBQtRA" name="postContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_UUFO__oAEdu-e7JlHBQtRA" association="_UUh68PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMD_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMEPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6hvoAEdu-e7JlHBQtRA" name="A_redefinedOperation_operation" memberEnd="_UUO_i_oAEdu-e7JlHBQtRA _UUh6h_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6h_oAEdu-e7JlHBQtRA" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UUh6hvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMEfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMEvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6a_oAEdu-e7JlHBQtRA" name="A_redefinedProperty_property" memberEnd="_UUFOmfoAEdu-e7JlHBQtRA _UUh6bPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6bPoAEdu-e7JlHBQtRA" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_UUh6a_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXME_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMFPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6ZvoAEdu-e7JlHBQtRA" name="A_ownedEnd_owningAssociation" memberEnd="_UT7duvoAEdu-e7JlHBQtRA _UUFOlfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6gPoAEdu-e7JlHBQtRA" name="A_ownedAttribute_datatype" memberEnd="_UUFOzvoAEdu-e7JlHBQtRA _UUFOpfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6gfoAEdu-e7JlHBQtRA" name="A_ownedOperation_datatype" memberEnd="_UUFO0voAEdu-e7JlHBQtRA _UUO_g_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6f_oAEdu-e7JlHBQtRA" name="A_ownedLiteral_enumeration" memberEnd="_UUFO4voAEdu-e7JlHBQtRA _UUFO6PoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6nvoAEdu-e7JlHBQtRA" name="A_elementImport_importingNamespace" memberEnd="_UTyTvPoAEdu-e7JlHBQtRA _UUYJX_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6n_oAEdu-e7JlHBQtRA" name="A_packageImport_importingNamespace" memberEnd="_UTyTwPoAEdu-e7JlHBQtRA _UUYJovoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6lvoAEdu-e7JlHBQtRA" name="A_importedPackage_packageImport" memberEnd="_UUYJnvoAEdu-e7JlHBQtRA _UUh6l_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6l_oAEdu-e7JlHBQtRA" type="_SnNPIGwIEdq7X4sGURiZYA" association="_UUh6lvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMFfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMFvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXMF_oAEdu-e7JlHBQtRA" name="A_redefinedClassifier_classifier" memberEnd="_UVuNL_oAEdu-e7JlHBQtRA _UXXMGPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXMGPoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UXXMF_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMGfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMGvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6zvoAEdu-e7JlHBQtRA" name="A_specification_owningConstraint" memberEnd="_UUFO-_oAEdu-e7JlHBQtRA _UUh6z_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6z_oAEdu-e7JlHBQtRA" name="owningConstraint" type="_UUFO7voAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UUh6zvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMG_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMHPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXMHfoAEdu-e7JlHBQtRA" name="A_defaultValue_owningParameter" memberEnd="_UWnlA_oAEdu-e7JlHBQtRA _UXXMHvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXMHvoAEdu-e7JlHBQtRA" name="owningParameter" type="_KyaPMGveEdq4DLWZOhbdEA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXXMHfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMH_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMIPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXXMIfoAEdu-e7JlHBQtRA" name="A_defaultValue_owningProperty" memberEnd="_UWwvEvoAEdu-e7JlHBQtRA _UXXMIvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXXMIvoAEdu-e7JlHBQtRA" name="owningProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXXMIfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMI_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMJPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUrrVPoAEdu-e7JlHBQtRA" name="A_ownedRule_context" memberEnd="_UTyTzPoAEdu-e7JlHBQtRA _UUFO__oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh61_oAEdu-e7JlHBQtRA" name="A_member_namespace" memberEnd="_UTyTyPoAEdu-e7JlHBQtRA _UUh62PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh62PoAEdu-e7JlHBQtRA" type="_ZiwkoGwLEdq7X4sGURiZYA" association="_UUh61_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMJ_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMKPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6tfoAEdu-e7JlHBQtRA" name="A_relatedElement_relationship" memberEnd="_UT7df_oAEdu-e7JlHBQtRA _UUh6tvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6tvoAEdu-e7JlHBQtRA" type="_DH62EKPAEdqi_5gqUMOQtA" association="_UUh6tfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXXMKfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXXMKvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6e_oAEdu-e7JlHBQtRA" name="A_endType_association" memberEnd="_UT7dvvoAEdu-e7JlHBQtRA _UUh6fPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6fPoAEdu-e7JlHBQtRA" type="_AwvxoGwNEdq7X4sGURiZYA" association="_UUh6e_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV0PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV0foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXgV0voAEdu-e7JlHBQtRA" name="A_upperValue_owningUpper" memberEnd="_UVkcLvoAEdu-e7JlHBQtRA _UXgV0_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXgV0_oAEdu-e7JlHBQtRA" name="owningUpper" type="_Gjgl0GveEdq4DLWZOhbdEA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXgV0voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV1PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV1foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXgV1voAEdu-e7JlHBQtRA" name="A_lowerValue_owningLower" memberEnd="_UVkcMvoAEdu-e7JlHBQtRA _UXgV1_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXgV1_oAEdu-e7JlHBQtRA" name="owningLower" type="_Gjgl0GveEdq4DLWZOhbdEA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXgV1voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV2PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV2foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6q_oAEdu-e7JlHBQtRA" name="A_receivingPackage_packageMerge" memberEnd="_UUYJqfoAEdu-e7JlHBQtRA _UUYJfvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6rPoAEdu-e7JlHBQtRA" name="A_mergedPackage_packageMerge" memberEnd="_UUYJrfoAEdu-e7JlHBQtRA _UUh6rfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6rfoAEdu-e7JlHBQtRA" type="_UUYJpvoAEdu-e7JlHBQtRA" association="_UUh6rPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV2voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV2_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXgV3PoAEdu-e7JlHBQtRA" name="A_instance_instanceValue" memberEnd="_UXNa9foAEdu-e7JlHBQtRA _UXgV3foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXgV3foAEdu-e7JlHBQtRA" type="_PyCx8GveEdq4DLWZOhbdEA" association="_UXgV3PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV3voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV3_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXgV4PoAEdu-e7JlHBQtRA" name="A_value_owningSlot" memberEnd="_UWnlLfoAEdu-e7JlHBQtRA _UXgV4foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXgV4foAEdu-e7JlHBQtRA" name="owningSlot" type="_UWnlIvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXgV4PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV4voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV4_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXgV5PoAEdu-e7JlHBQtRA" name="A_specification_owningInstanceSpec" memberEnd="_UWnlHvoAEdu-e7JlHBQtRA _UXgV5foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXgV5foAEdu-e7JlHBQtRA" name="owningInstanceSpec" type="_UWnlDfoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UXgV5PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV5voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV5_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6oPoAEdu-e7JlHBQtRA" name="A_packagedElement_owningPackage" memberEnd="_UUYJbvoAEdu-e7JlHBQtRA _UUh6ofoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6ofoAEdu-e7JlHBQtRA" name="owningPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUh6oPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV6PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV6foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6kvoAEdu-e7JlHBQtRA" name="A_importedMember_namespace" memberEnd="_UTyTuPoAEdu-e7JlHBQtRA _UUh6k_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6k_oAEdu-e7JlHBQtRA" type="_ZiwkoGwLEdq7X4sGURiZYA" association="_UUh6kvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV6voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV6_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6c_oAEdu-e7JlHBQtRA" name="A_opposite_property" memberEnd="_UUFOofoAEdu-e7JlHBQtRA _UUh6dPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6dPoAEdu-e7JlHBQtRA" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_UUh6c_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV7PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV7foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6b_oAEdu-e7JlHBQtRA" name="A_subsettedProperty_property" memberEnd="_UUFOnfoAEdu-e7JlHBQtRA _UUh6cPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6cPoAEdu-e7JlHBQtRA" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_UUh6b_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV7voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV7_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6pfoAEdu-e7JlHBQtRA" name="A_memberEnd_association" memberEnd="_UT7dwvoAEdu-e7JlHBQtRA _UUFOqfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6pPoAEdu-e7JlHBQtRA" name="A_ownedType_package" memberEnd="_UUYJcvoAEdu-e7JlHBQtRA _UUYJtPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6pvoAEdu-e7JlHBQtRA" name="A_nestedPackage_nestingPackage" memberEnd="_UUYJdvoAEdu-e7JlHBQtRA _UUYJevoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6xfoAEdu-e7JlHBQtRA" name="A_redefinedElement_redefinableElement" memberEnd="_UT7dbfoAEdu-e7JlHBQtRA _UUh6xvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6xvoAEdu-e7JlHBQtRA" type="_UT7dYPoAEdu-e7JlHBQtRA" association="_UUh6xfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV8PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV8foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6wfoAEdu-e7JlHBQtRA" name="A_redefinitionContext_redefinableElement" memberEnd="_UT7dafoAEdu-e7JlHBQtRA _UUh6wvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6wvoAEdu-e7JlHBQtRA" type="_UT7dYPoAEdu-e7JlHBQtRA" association="_UUh6wfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV8voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV8_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh60voAEdu-e7JlHBQtRA" name="A_general_classifier" memberEnd="_UTfYkfoAEdu-e7JlHBQtRA _UUh60_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh60_oAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UUh60voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV9PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV9foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6d_oAEdu-e7JlHBQtRA" name="A_superClass_class" memberEnd="_UT7d1_oAEdu-e7JlHBQtRA _UUh6ePoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6ePoAEdu-e7JlHBQtRA" type="_00owUGvdEdq4DLWZOhbdEA" association="_UUh6d_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV9voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV9_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUrrUPoAEdu-e7JlHBQtRA" name="A_bodyCondition_bodyContext" memberEnd="_UUO_nfoAEdu-e7JlHBQtRA _UUrrUfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUrrUfoAEdu-e7JlHBQtRA" name="bodyContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_UUFO__oAEdu-e7JlHBQtRA" association="_UUrrUPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV-PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV-foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6p_oAEdu-e7JlHBQtRA" name="A_type_operation" memberEnd="_UUO_j_oAEdu-e7JlHBQtRA _UUh6qPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6qPoAEdu-e7JlHBQtRA" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UUh6p_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV-voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV-_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh64_oAEdu-e7JlHBQtRA" name="A_ownedParameter_operation" memberEnd="_UUO_k_oAEdu-e7JlHBQtRA _UUO_0foAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh62_oAEdu-e7JlHBQtRA" name="A_operand_expression" memberEnd="_UUYJ9PoAEdu-e7JlHBQtRA _UUh63PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh63PoAEdu-e7JlHBQtRA" name="expression" type="_UUYJ8foAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UUh62_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV_PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV_foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6gvoAEdu-e7JlHBQtRA" name="A_raisedException_operation" memberEnd="_UUO_h_oAEdu-e7JlHBQtRA _UUh6g_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6g_oAEdu-e7JlHBQtRA" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UUh6gvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgV_voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgV__oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh63_oAEdu-e7JlHBQtRA" name="A_navigableOwnedEnd_association" memberEnd="_UT7dxvoAEdu-e7JlHBQtRA _UUh64PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh64PoAEdu-e7JlHBQtRA" type="_AwvxoGwNEdq7X4sGURiZYA" association="_UUh63_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXgWAPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXgWAfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ChRfcGveEdq4DLWZOhbdEA" name="OpaqueExpression">
+ <ownedComment xmi:id="_UUFPAvoAEdu-e7JlHBQtRA" annotatedElement="_ChRfcGveEdq4DLWZOhbdEA">
+ <body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UXqHDPoAEdu-e7JlHBQtRA" annotatedElement="_ChRfcGveEdq4DLWZOhbdEA">
+ <body>Provides a mechanism for precisely defining the behavior of an opaque expression. An opaque expression is defined by a behavior restricted to return one result.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUFPA_oAEdu-e7JlHBQtRA" name="language_body_size" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFPBPoAEdu-e7JlHBQtRA" annotatedElement="_UUFPA_oAEdu-e7JlHBQtRA">
+ <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="_UVRhRfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>language->notEmpty() implies (body->size() = language->size())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXqHDfoAEdu-e7JlHBQtRA" name="only_return_result_parameters" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UXqHDvoAEdu-e7JlHBQtRA" annotatedElement="_UXqHDfoAEdu-e7JlHBQtRA">
+ <body>The behavior may only have return result parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqHD_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameters->select(p | p.direction&lt;>#return)->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXqHEPoAEdu-e7JlHBQtRA" name="one_return_result_parameter" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UXqHEfoAEdu-e7JlHBQtRA" annotatedElement="_UXqHEPoAEdu-e7JlHBQtRA">
+ <body>The behavior must have exactly one return result parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqHEvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.behavior.notEmpty() implies&#xD;&#xA; self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUFPBvoAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_EOZfkC4xEduBJv9HKGdiyg" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" aggregation="composite">
+ <ownedComment xmi:id="_UUFPB_oAEdu-e7JlHBQtRA" annotatedElement="_EOZfkC4xEduBJv9HKGdiyg">
+ <body>The text of the expression, possibly in multiple languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVRhRvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhR_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_YPoAEdu-e7JlHBQtRA" name="language" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_UUO_YfoAEdu-e7JlHBQtRA" annotatedElement="_UUO_YPoAEdu-e7JlHBQtRA">
+ <body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVRhSPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhSfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqHE_oAEdu-e7JlHBQtRA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_UXz3-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqHFPoAEdu-e7JlHBQtRA" annotatedElement="_UXqHE_oAEdu-e7JlHBQtRA">
+ <body>Restricts an opaque expression to return exactly one return result. When the invocation of the opaque expression completes, a single set of values is returned to its owner. This association is derived from the single return result parameter of the associated behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqHFfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqHFvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqHF_oAEdu-e7JlHBQtRA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UXz3__oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqHGPoAEdu-e7JlHBQtRA" annotatedElement="_UXqHF_oAEdu-e7JlHBQtRA">
+ <body>Specifies the behavior of the opaque expression.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqHGfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqHGvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_mv9LcFYiEdqB6vblk3tuMA" name="getResult" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_vXTbwFYiEdqB6vblk3tuMA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0JhNkVYiEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0JhNkFYiEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_qQchgGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_sRo9MGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVRhSvoAEdu-e7JlHBQtRA" name="value" isQuery="true" precondition="_UVRhTPoAEdu-e7JlHBQtRA" bodyCondition="_UVRhTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVRhS_oAEdu-e7JlHBQtRA" annotatedElement="_UVRhSvoAEdu-e7JlHBQtRA">
+ <body>The query value() gives an integer value for an expression intended to produce one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVRhTPoAEdu-e7JlHBQtRA" constrainedElement="_UVRhSvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhTfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.isIntegral()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVRhTvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVRhSvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhT_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVRhUPoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVRhUfoAEdu-e7JlHBQtRA" name="isIntegral" isQuery="true" bodyCondition="_UVRhU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVRhUvoAEdu-e7JlHBQtRA" annotatedElement="_UVRhUfoAEdu-e7JlHBQtRA">
+ <body>The query isIntegral() tells whether an expression is intended to produce an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVRhU_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVRhUfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhVPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVRhVfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVRhVvoAEdu-e7JlHBQtRA" name="isPositive" isQuery="true" precondition="_UVRhWPoAEdu-e7JlHBQtRA" bodyCondition="_UVRhWvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVRhV_oAEdu-e7JlHBQtRA" annotatedElement="_UVRhVvoAEdu-e7JlHBQtRA">
+ <body>The query isPositive() tells whether an integer expression has a positive value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVRhWPoAEdu-e7JlHBQtRA" constrainedElement="_UVRhVvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhWfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.isIntegral()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVRhWvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVRhVvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhW_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVRhXPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVRhXfoAEdu-e7JlHBQtRA" name="isNonNegative" isQuery="true" precondition="_UVRhX_oAEdu-e7JlHBQtRA" bodyCondition="_UVRhYfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVRhXvoAEdu-e7JlHBQtRA" annotatedElement="_UVRhXfoAEdu-e7JlHBQtRA">
+ <body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVRhX_oAEdu-e7JlHBQtRA" constrainedElement="_UVRhXfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhYPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.isIntegral()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVRhYfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVRhXfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhYvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVRhY_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ldWYsC7qEdutFcse1QllAQ" name="OpaqueBehavior">
+ <ownedComment xmi:id="_UXz32PoAEdu-e7JlHBQtRA" annotatedElement="_ldWYsC7qEdutFcse1QllAQ">
+ <body>An behavior with implementation-specific semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_UXz32foAEdu-e7JlHBQtRA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_ldWYsS7qEdutFcse1QllAQ" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" aggregation="composite">
+ <ownedComment xmi:id="_UXz32voAEdu-e7JlHBQtRA" annotatedElement="_ldWYsS7qEdutFcse1QllAQ">
+ <body>Specifies the behavior in one or more languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz32_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz33PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz33foAEdu-e7JlHBQtRA" name="language" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_UXz33voAEdu-e7JlHBQtRA" annotatedElement="_UXz33foAEdu-e7JlHBQtRA">
+ <body>Languages the body strings use in the same order as the body strings.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz33_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz34PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz34foAEdu-e7JlHBQtRA" name="FunctionBehavior">
+ <ownedComment xmi:id="_UXz34voAEdu-e7JlHBQtRA" annotatedElement="_UXz34foAEdu-e7JlHBQtRA">
+ <body>A function behavior is an opaque behavior that does not access or modify any objects or other external data.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXz34_oAEdu-e7JlHBQtRA" name="one_output_parameter" constrainedElement="_UXz34foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz35PoAEdu-e7JlHBQtRA" annotatedElement="_UXz34_oAEdu-e7JlHBQtRA">
+ <body>A function behavior has at least one output parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXz35foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.ownedParameters->&#xD;&#xA; select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXz35voAEdu-e7JlHBQtRA" name="types_of_parameters" constrainedElement="_UXz34foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz35_oAEdu-e7JlHBQtRA" annotatedElement="_UXz35voAEdu-e7JlHBQtRA">
+ <body>The types of parameters are all data types, which may not nest anything but other datatypes.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXz36PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>def: hasAllDataTypeAttributes(d : DataType) : Boolean =&#xD;&#xA; d.ownedAttribute->forAll(a |&#xD;&#xA; a.type.oclIsTypeOf(DataType) and&#xD;&#xA; hasAllDataTypeAttributes(a.type))&#xD;&#xA;self.ownedParameters->forAll(p | p.type.notEmpty() and&#xD;&#xA; p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz36foAEdu-e7JlHBQtRA" general="_ldWYsC7qEdutFcse1QllAQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz36voAEdu-e7JlHBQtRA" name="A_behavioredClassifier_ownedBehavior" memberEnd="_UXz36_oAEdu-e7JlHBQtRA _UXqHBPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz36_oAEdu-e7JlHBQtRA" type="_iY7sMGvsEdqG6fBIPwe-mw" association="_UXz36voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz37PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz37foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz37voAEdu-e7JlHBQtRA" name="A_classifierBehavior_behavioredClassifier" memberEnd="_UXqHCPoAEdu-e7JlHBQtRA _UXz37_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz37_oAEdu-e7JlHBQtRA" type="_iY7sMGvsEdqG6fBIPwe-mw" association="_UXz37voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz38PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz38foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz38voAEdu-e7JlHBQtRA" name="A_redefinedBehavior_behavior" memberEnd="_UXqG5_oAEdu-e7JlHBQtRA _UXz38_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz38_oAEdu-e7JlHBQtRA" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UXz38voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz39PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz39foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz39voAEdu-e7JlHBQtRA" name="A_method_specification" memberEnd="_UXz31PoAEdu-e7JlHBQtRA _UXqG6_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz39_oAEdu-e7JlHBQtRA" name="A_behavior_ownedParameter" memberEnd="_UXz3-PoAEdu-e7JlHBQtRA _UXqG7_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz3-PoAEdu-e7JlHBQtRA" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UXz39_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz3-foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz3-voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz3-_oAEdu-e7JlHBQtRA" name="A_result_opaqueExpression" memberEnd="_UXqHE_oAEdu-e7JlHBQtRA _UXz3_PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz3_PoAEdu-e7JlHBQtRA" type="_ChRfcGveEdq4DLWZOhbdEA" association="_UXz3-_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz3_foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz3_voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz3__oAEdu-e7JlHBQtRA" name="A_behavior_opaqueExpression" memberEnd="_UXqHF_oAEdu-e7JlHBQtRA _UXz4APoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz4APoAEdu-e7JlHBQtRA" type="_ChRfcGveEdq4DLWZOhbdEA" association="_UXz3__oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4AfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4AvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz4A_oAEdu-e7JlHBQtRA" name="A_context_behavior" memberEnd="_UXqG8_oAEdu-e7JlHBQtRA _UXz4BPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz4BPoAEdu-e7JlHBQtRA" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UXz4A_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4BfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4BvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz4B_oAEdu-e7JlHBQtRA" name="A_precondition_behavior" memberEnd="_UXqG9_oAEdu-e7JlHBQtRA _UXz4CPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz4CPoAEdu-e7JlHBQtRA" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_UUFO__oAEdu-e7JlHBQtRA" association="_UXz4B_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4CfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4CvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UXz4C_oAEdu-e7JlHBQtRA" name="A_postcondition_behavior" memberEnd="_UXqG-_oAEdu-e7JlHBQtRA _UXz4DPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UXz4DPoAEdu-e7JlHBQtRA" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_UUFO__oAEdu-e7JlHBQtRA" association="_UXz4C_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4DfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4DvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_OUnikC7qEdutFcse1QllAQ" name="OpaqueAction">
+ <ownedComment xmi:id="_UXz4EvoAEdu-e7JlHBQtRA" annotatedElement="_OUnikC7qEdutFcse1QllAQ">
+ <body>An action with implementation-specific semantics.</body>
+ </ownedComment>
+ <generalization xmi:id="_UXz4E_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_c_GaAC7qEdutFcse1QllAQ" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" aggregation="composite">
+ <ownedComment xmi:id="_UXz4FPoAEdu-e7JlHBQtRA" annotatedElement="_c_GaAC7qEdutFcse1QllAQ">
+ <body>Specifies the action in one or more languages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4FfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4FvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz4F_oAEdu-e7JlHBQtRA" name="language" type="_aAyVgGvsEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite">
+ <ownedComment xmi:id="_UXz4GPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4F_oAEdu-e7JlHBQtRA">
+ <body>Languages the body strings use, in the same order as the body strings</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4GfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4GvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz4G_oAEdu-e7JlHBQtRA" name="inputValue" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UX9CQPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4HPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4G_oAEdu-e7JlHBQtRA">
+ <body>Provides input to the action.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4HfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4HvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz4H_oAEdu-e7JlHBQtRA" name="outputValue" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UX9CRPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4IPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4H_oAEdu-e7JlHBQtRA">
+ <body>Takes output from the action.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4IfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4IvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz4PvoAEdu-e7JlHBQtRA" name="CallAction" isAbstract="true">
+ <ownedComment xmi:id="_UXz4P_oAEdu-e7JlHBQtRA" annotatedElement="_UXz4PvoAEdu-e7JlHBQtRA">
+ <body>CallAction is an abstract class for actions that invoke behavior and receive return values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXz4QPoAEdu-e7JlHBQtRA" name="synchronous_call" constrainedElement="_UXz4PvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4QfoAEdu-e7JlHBQtRA" annotatedElement="_UXz4QPoAEdu-e7JlHBQtRA">
+ <body>Only synchronous call actions can have result pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXz4QvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXz4Q_oAEdu-e7JlHBQtRA" name="number_and_order" constrainedElement="_UXz4PvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4RPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4Q_oAEdu-e7JlHBQtRA">
+ <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="_UXz4RfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXz4RvoAEdu-e7JlHBQtRA" name="type_ordering_multiplicity" constrainedElement="_UXz4PvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4R_oAEdu-e7JlHBQtRA" annotatedElement="_UXz4RvoAEdu-e7JlHBQtRA">
+ <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="_UXz4SPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz4SfoAEdu-e7JlHBQtRA" general="_UXz4N_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UXz4SvoAEdu-e7JlHBQtRA" name="isSynchronous" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UXz4S_oAEdu-e7JlHBQtRA" annotatedElement="_UXz4SvoAEdu-e7JlHBQtRA">
+ <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>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UXz4TPoAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz4TfoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UX9CKPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4TvoAEdu-e7JlHBQtRA" annotatedElement="_UXz4TfoAEdu-e7JlHBQtRA">
+ <body>A list of output pins where the results of performing the invocation are placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4T_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4UPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9BwPoAEdu-e7JlHBQtRA" name="SendSignalAction">
+ <ownedComment xmi:id="_UX9BwfoAEdu-e7JlHBQtRA" annotatedElement="_UX9BwPoAEdu-e7JlHBQtRA">
+ <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="_UX9BwvoAEdu-e7JlHBQtRA" name="number_order" constrainedElement="_UX9BwPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9Bw_oAEdu-e7JlHBQtRA" annotatedElement="_UX9BwvoAEdu-e7JlHBQtRA">
+ <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="_UX9BxPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UX9BxfoAEdu-e7JlHBQtRA" name="type_ordering_multiplicity" constrainedElement="_UX9BwPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9BxvoAEdu-e7JlHBQtRA" annotatedElement="_UX9BxfoAEdu-e7JlHBQtRA">
+ <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="_UX9Bx_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9ByPoAEdu-e7JlHBQtRA" general="_UXz4N_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UX9ByfoAEdu-e7JlHBQtRA" name="target" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UX9CIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9ByvoAEdu-e7JlHBQtRA" annotatedElement="_UX9ByfoAEdu-e7JlHBQtRA">
+ <body>The target object to which the signal is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9By_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9BzPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9BzfoAEdu-e7JlHBQtRA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_UX9CJPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9BzvoAEdu-e7JlHBQtRA" annotatedElement="_UX9BzfoAEdu-e7JlHBQtRA">
+ <body>The type of signal transmitted to the target object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9Bz_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9B0PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9B0foAEdu-e7JlHBQtRA" name="CallOperationAction">
+ <ownedComment xmi:id="_UX9B0voAEdu-e7JlHBQtRA" annotatedElement="_UX9B0foAEdu-e7JlHBQtRA">
+ <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="_UX9B0_oAEdu-e7JlHBQtRA" name="argument_pin_equal_parameter" constrainedElement="_UX9B0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B1PoAEdu-e7JlHBQtRA" annotatedElement="_UX9B0_oAEdu-e7JlHBQtRA">
+ <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="_UX9B1foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UX9B1voAEdu-e7JlHBQtRA" name="result_pin_equal_parameter" constrainedElement="_UX9B0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B1_oAEdu-e7JlHBQtRA" annotatedElement="_UX9B1voAEdu-e7JlHBQtRA">
+ <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="_UX9B2PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UX9B2foAEdu-e7JlHBQtRA" name="type_ordering_multiplicity" constrainedElement="_UX9B0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B2voAEdu-e7JlHBQtRA" annotatedElement="_UX9B2foAEdu-e7JlHBQtRA">
+ <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="_UX9B2_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UX9B3PoAEdu-e7JlHBQtRA" name="type_target_pin" constrainedElement="_UX9B0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B3foAEdu-e7JlHBQtRA" annotatedElement="_UX9B3PoAEdu-e7JlHBQtRA">
+ <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="_UX9B3voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9B3_oAEdu-e7JlHBQtRA" general="_UXz4PvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UX9B4PoAEdu-e7JlHBQtRA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UX9CGPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B4foAEdu-e7JlHBQtRA" annotatedElement="_UX9B4PoAEdu-e7JlHBQtRA">
+ <body>The operation to be invoked by the action execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9B4voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9B4_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9B5PoAEdu-e7JlHBQtRA" name="target" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UX9CHPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B5foAEdu-e7JlHBQtRA" annotatedElement="_UX9B5PoAEdu-e7JlHBQtRA">
+ <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="_UX9B5voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9B5_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9B6PoAEdu-e7JlHBQtRA" name="CallBehaviorAction">
+ <ownedComment xmi:id="_UX9B6foAEdu-e7JlHBQtRA" annotatedElement="_UX9B6PoAEdu-e7JlHBQtRA">
+ <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="_UX9B6voAEdu-e7JlHBQtRA" name="argument_pin_equal_parameter" constrainedElement="_UX9B6PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B6_oAEdu-e7JlHBQtRA" annotatedElement="_UX9B6voAEdu-e7JlHBQtRA">
+ <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="_UX9B7PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UX9B7foAEdu-e7JlHBQtRA" name="result_pin_equal_parameter" constrainedElement="_UX9B6PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B7voAEdu-e7JlHBQtRA" annotatedElement="_UX9B7foAEdu-e7JlHBQtRA">
+ <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="_UX9B7_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UX9B8PoAEdu-e7JlHBQtRA" name="type_ordering_multiplicity" constrainedElement="_UX9B6PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B8foAEdu-e7JlHBQtRA" annotatedElement="_UX9B8PoAEdu-e7JlHBQtRA">
+ <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="_UX9B8voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9B8_oAEdu-e7JlHBQtRA" general="_UXz4PvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UX9B9PoAEdu-e7JlHBQtRA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UX9CFPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B9foAEdu-e7JlHBQtRA" annotatedElement="_UX9B9PoAEdu-e7JlHBQtRA">
+ <body>The invoked behavior. It must be capable of accepting and returning control.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9B9voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9B9_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Gjgl0GveEdq4DLWZOhbdEA" name="MultiplicityElement" isAbstract="true">
+ <ownedComment xmi:id="_UTyTd_oAEdu-e7JlHBQtRA" annotatedElement="_Gjgl0GveEdq4DLWZOhbdEA">
+ <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="_UTyTePoAEdu-e7JlHBQtRA" name="upper_gt_0" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UTyTefoAEdu-e7JlHBQtRA" annotatedElement="_UTyTePoAEdu-e7JlHBQtRA">
+ <body>A multiplicity must define at least one valid cardinality that is greater than zero.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSe_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() implies upperBound() > 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UTyTfvoAEdu-e7JlHBQtRA" name="lower_ge_0" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UTyTf_oAEdu-e7JlHBQtRA" annotatedElement="_UTyTfvoAEdu-e7JlHBQtRA">
+ <body>The lower bound must be a non-negative integer literal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSfPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>lowerBound()->notEmpty() implies lowerBound() >= 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UTyTe_oAEdu-e7JlHBQtRA" name="upper_ge_lower" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UTyTfPoAEdu-e7JlHBQtRA" annotatedElement="_UTyTe_oAEdu-e7JlHBQtRA">
+ <body>The upper bound must be greater than or equal to the lower bound.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVbSffoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVkcIPoAEdu-e7JlHBQtRA" name="value_specification_no_side_effects" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UVkcIfoAEdu-e7JlHBQtRA" annotatedElement="_UVkcIPoAEdu-e7JlHBQtRA">
+ <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="_UVkcIvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVkcI_oAEdu-e7JlHBQtRA" name="value_specification_constant" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UVkcJPoAEdu-e7JlHBQtRA" annotatedElement="_UVkcI_oAEdu-e7JlHBQtRA">
+ <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="_UVkcJfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UTyTgfoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UTyTgvoAEdu-e7JlHBQtRA" name="isOrdered" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UTyTg_oAEdu-e7JlHBQtRA" annotatedElement="_UTyTgvoAEdu-e7JlHBQtRA">
+ <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UVkcJvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyThfoAEdu-e7JlHBQtRA" name="isUnique" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UTyThvoAEdu-e7JlHBQtRA" annotatedElement="_UTyThfoAEdu-e7JlHBQtRA">
+ <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UVkcJ_oAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTjfoAEdu-e7JlHBQtRA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UTyTjvoAEdu-e7JlHBQtRA" annotatedElement="_UTyTjfoAEdu-e7JlHBQtRA">
+ <body>Specifies the upper bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVkcKPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVkcKfoAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVkcKvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTiPoAEdu-e7JlHBQtRA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UTyTifoAEdu-e7JlHBQtRA" annotatedElement="_UTyTiPoAEdu-e7JlHBQtRA">
+ <body>Specifies the lower bound of the multiplicity interval.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVkcK_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVkcLPoAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_UVkcLfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UVkcLvoAEdu-e7JlHBQtRA" name="upperValue" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXgV0voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVkcL_oAEdu-e7JlHBQtRA" annotatedElement="_UVkcLvoAEdu-e7JlHBQtRA">
+ <body>The specification of the upper bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVkcMPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVkcMfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UVkcMvoAEdu-e7JlHBQtRA" name="lowerValue" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXgV1voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVkcM_oAEdu-e7JlHBQtRA" annotatedElement="_UVkcMvoAEdu-e7JlHBQtRA">
+ <body>The specification of the lower bound for this multiplicity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVkcNPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVkcNfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_qtCaIFYkEdqB6vblk3tuMA" name="setLower" visibility="protected">
+ <ownedParameter xmi:id="_scWboFYkEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vlEgEFYkEdqB6vblk3tuMA" name="setUpper" visibility="protected">
+ <ownedParameter xmi:id="_xJp4QFYkEdqB6vblk3tuMA" name="newUpper" visibility="protected" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVkcNvoAEdu-e7JlHBQtRA" name="lower" isQuery="true" bodyCondition="_UVkcOPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVkcN_oAEdu-e7JlHBQtRA" annotatedElement="_UVkcNvoAEdu-e7JlHBQtRA">
+ <body>The derived lower attribute must equal the lowerBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVkcOPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVkcNvoAEdu-e7JlHBQtRA _UTyTiPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcOfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = lowerBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVkcOvoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVkcO_oAEdu-e7JlHBQtRA" name="upper" isQuery="true" bodyCondition="_UVkcPfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVkcPPoAEdu-e7JlHBQtRA" annotatedElement="_UVkcO_oAEdu-e7JlHBQtRA">
+ <body>The derived upper attribute must equal the upperBound.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UVkcPfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UVkcO_oAEdu-e7JlHBQtRA _UTyTjfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcPvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = upperBound()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UVkcP_oAEdu-e7JlHBQtRA" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyTkvoAEdu-e7JlHBQtRA" name="isMultivalued" isQuery="true" precondition="_UTyTlPoAEdu-e7JlHBQtRA" bodyCondition="_UTyTlvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTk_oAEdu-e7JlHBQtRA" annotatedElement="_UTyTkvoAEdu-e7JlHBQtRA">
+ <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UTyTlPoAEdu-e7JlHBQtRA" constrainedElement="_UTyTkvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcQPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UTyTlvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyTkvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcQfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = upperBound() > 1</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UTyTmPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyTofoAEdu-e7JlHBQtRA" name="includesCardinality" isQuery="true" precondition="_UTyTo_oAEdu-e7JlHBQtRA" bodyCondition="_UTyTpfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTovoAEdu-e7JlHBQtRA" annotatedElement="_UTyTofoAEdu-e7JlHBQtRA">
+ <body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UTyTo_oAEdu-e7JlHBQtRA" constrainedElement="_UTyTofoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcQvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>upperBound()->notEmpty() and lowerBound()->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UTyTpfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyTofoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcQ_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (lowerBound() &lt;= C) and (upperBound() >= C)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UTyTp_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UTyTqPoAEdu-e7JlHBQtRA" name="C" type="_XqvEIGvsEdqG6fBIPwe-mw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyTmfoAEdu-e7JlHBQtRA" name="includesMultiplicity" isQuery="true" precondition="_UTyTm_oAEdu-e7JlHBQtRA" bodyCondition="_UTyTnfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTmvoAEdu-e7JlHBQtRA" annotatedElement="_UTyTmfoAEdu-e7JlHBQtRA">
+ <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UTyTm_oAEdu-e7JlHBQtRA" constrainedElement="_UTyTmfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcRPoAEdu-e7JlHBQtRA">
+ <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="_UTyTnfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyTmfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcRfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UTyTn_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UTyToPoAEdu-e7JlHBQtRA" name="M" type="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyTqfoAEdu-e7JlHBQtRA" name="lowerBound" isQuery="true" bodyCondition="_UTyTq_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTqvoAEdu-e7JlHBQtRA" annotatedElement="_UTyTqfoAEdu-e7JlHBQtRA">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UTyTq_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyTqfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcRvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UTyTrfoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyTrvoAEdu-e7JlHBQtRA" name="upperBound" isQuery="true" bodyCondition="_UTyTsPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTr_oAEdu-e7JlHBQtRA" annotatedElement="_UTyTrvoAEdu-e7JlHBQtRA">
+ <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UTyTsPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyTrvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcR_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UTyTsvoAEdu-e7JlHBQtRA" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UX9CB_oAEdu-e7JlHBQtRA" name="compatibleWith" isQuery="true" bodyCondition="_UX9CCfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CCPoAEdu-e7JlHBQtRA" annotatedElement="_UX9CB_oAEdu-e7JlHBQtRA">
+ <body>The operation compatibleWith takes another multiplicity as input. It checks if one multiplicity is compatible with another.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UX9CCfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UX9CB_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UX9CCvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UX9CC_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UX9CDPoAEdu-e7JlHBQtRA" name="other" type="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UX9CDfoAEdu-e7JlHBQtRA" name="is" isQuery="true" bodyCondition="_UX9CD_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CDvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CDfoAEdu-e7JlHBQtRA">
+ <body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UX9CD_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UX9CDfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UX9CEPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (lowerbound = self.lowerbound and upperbound = self.upperbound)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UX9CEfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UX9CEvoAEdu-e7JlHBQtRA" name="lowerbound" type="_XqvEIGvsEdqG6fBIPwe-mw"/>
+ <ownedParameter xmi:id="_UX9CE_oAEdu-e7JlHBQtRA" name="upperbound" type="_XqvEIGvsEdqG6fBIPwe-mw"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CFPoAEdu-e7JlHBQtRA" name="A_behavior_callBehaviorAction" memberEnd="_UX9B9PoAEdu-e7JlHBQtRA _UX9CFfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CFfoAEdu-e7JlHBQtRA" type="_UX9B6PoAEdu-e7JlHBQtRA" association="_UX9CFPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CFvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CF_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CGPoAEdu-e7JlHBQtRA" name="A_operation_callOperationAction" memberEnd="_UX9B4PoAEdu-e7JlHBQtRA _UX9CGfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CGfoAEdu-e7JlHBQtRA" type="_UX9B0foAEdu-e7JlHBQtRA" association="_UX9CGPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CGvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CG_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CHPoAEdu-e7JlHBQtRA" name="A_target_callOperationAction" memberEnd="_UX9B5PoAEdu-e7JlHBQtRA _UX9CHfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CHfoAEdu-e7JlHBQtRA" type="_UX9B0foAEdu-e7JlHBQtRA" association="_UX9CHPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CHvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CH_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CIPoAEdu-e7JlHBQtRA" name="A_target_sendSignalAction" memberEnd="_UX9ByfoAEdu-e7JlHBQtRA _UX9CIfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CIfoAEdu-e7JlHBQtRA" type="_UX9BwPoAEdu-e7JlHBQtRA" association="_UX9CIPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CIvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CI_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CJPoAEdu-e7JlHBQtRA" name="A_signal_sendSignalAction" memberEnd="_UX9BzfoAEdu-e7JlHBQtRA _UX9CJfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CJfoAEdu-e7JlHBQtRA" type="_UX9BwPoAEdu-e7JlHBQtRA" association="_UX9CJPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CJ_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CKPoAEdu-e7JlHBQtRA" name="A_result_callAction" memberEnd="_UXz4TfoAEdu-e7JlHBQtRA _UX9CKfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CKfoAEdu-e7JlHBQtRA" type="_UXz4PvoAEdu-e7JlHBQtRA" association="_UX9CKPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CKvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CK_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CLPoAEdu-e7JlHBQtRA" name="A_argument_invocationAction" memberEnd="_UXz4OvoAEdu-e7JlHBQtRA _UX9CLfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CLfoAEdu-e7JlHBQtRA" type="_UXz4N_oAEdu-e7JlHBQtRA" association="_UX9CLPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CLvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CL_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CMPoAEdu-e7JlHBQtRA" name="A_action_output" memberEnd="_UX9CMfoAEdu-e7JlHBQtRA _UX9B-_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CMfoAEdu-e7JlHBQtRA" type="_UX9B-PoAEdu-e7JlHBQtRA" association="_UX9CMPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CMvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CM_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CNPoAEdu-e7JlHBQtRA" name="A_action_input" memberEnd="_UX9CNfoAEdu-e7JlHBQtRA _UX9B__oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CNfoAEdu-e7JlHBQtRA" type="_UX9B-PoAEdu-e7JlHBQtRA" association="_UX9CNPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CNvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CN_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9COPoAEdu-e7JlHBQtRA" name="A_value_valuePin" memberEnd="_UXz4LfoAEdu-e7JlHBQtRA _UX9COfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9COfoAEdu-e7JlHBQtRA" type="_UXz4J_oAEdu-e7JlHBQtRA" association="_UX9COPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9COvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CO_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CPPoAEdu-e7JlHBQtRA" name="A_context_action" memberEnd="_UX9CA_oAEdu-e7JlHBQtRA _UX9CPfoAEdu-e7JlHBQtRA" isDerived="true">
+ <ownedEnd xmi:id="_UX9CPfoAEdu-e7JlHBQtRA" type="_UX9B-PoAEdu-e7JlHBQtRA" association="_UX9CPPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CPvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CP_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CQPoAEdu-e7JlHBQtRA" name="A_inputValue_opaqueAction" memberEnd="_UXz4G_oAEdu-e7JlHBQtRA _UX9CQfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CQfoAEdu-e7JlHBQtRA" type="_OUnikC7qEdutFcse1QllAQ" association="_UX9CQPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CQvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CQ_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CRPoAEdu-e7JlHBQtRA" name="A_outputValue_opaqueAction" memberEnd="_UXz4H_oAEdu-e7JlHBQtRA _UX9CRfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UX9CRfoAEdu-e7JlHBQtRA" type="_OUnikC7qEdutFcse1QllAQ" association="_UX9CRPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CRvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CR_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CffoAEdu-e7JlHBQtRA" name="A_subgroup_superGroup" memberEnd="_UX9CZfoAEdu-e7JlHBQtRA _UX9CafoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYGzGPoAEdu-e7JlHBQtRA" name="SequenceNode">
+ <ownedComment xmi:id="_UYGzGfoAEdu-e7JlHBQtRA" annotatedElement="_UYGzGPoAEdu-e7JlHBQtRA">
+ <body>A sequence node is a structured activity node that executes its actions in order.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYGzGvoAEdu-e7JlHBQtRA" general="_UX9Cl_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYGzG_oAEdu-e7JlHBQtRA" name="executableNode" type="_UYGzFfoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" redefinedProperty="_UX9CoPoAEdu-e7JlHBQtRA" association="_UYGzT_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGzHPoAEdu-e7JlHBQtRA" annotatedElement="_UYGzG_oAEdu-e7JlHBQtRA">
+ <body>An ordered set of executable nodes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzHfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzHvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz4NPoAEdu-e7JlHBQtRA" name="InputPin">
+ <ownedComment xmi:id="_UXz4NfoAEdu-e7JlHBQtRA" annotatedElement="_UXz4NPoAEdu-e7JlHBQtRA">
+ <body>An input pin is a pin that holds input values to be consumed by an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYGzJPoAEdu-e7JlHBQtRA" name="outgoing_edges_structured_only" constrainedElement="_UXz4NPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGzJfoAEdu-e7JlHBQtRA" annotatedElement="_UYGzJPoAEdu-e7JlHBQtRA">
+ <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="_UYGzJvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz4NvoAEdu-e7JlHBQtRA" general="_UXz4I_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz4MfoAEdu-e7JlHBQtRA" name="OutputPin">
+ <ownedComment xmi:id="_UXz4MvoAEdu-e7JlHBQtRA" annotatedElement="_UXz4MfoAEdu-e7JlHBQtRA">
+ <body>An output pin is a pin that holds output values produced by an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYGzJ_oAEdu-e7JlHBQtRA" name="incoming_edges_structured_only" constrainedElement="_UXz4MfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGzKPoAEdu-e7JlHBQtRA" annotatedElement="_UYGzJ_oAEdu-e7JlHBQtRA">
+ <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="_UYGzKfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz4M_oAEdu-e7JlHBQtRA" general="_UXz4I_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzKvoAEdu-e7JlHBQtRA" name="A_scope_variable" memberEnd="_UX9CifoAEdu-e7JlHBQtRA _UX9CnPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzK_oAEdu-e7JlHBQtRA" name="A_node_inStructuredNode" memberEnd="_UX9CoPoAEdu-e7JlHBQtRA _UYGzDfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzLPoAEdu-e7JlHBQtRA" name="A_clause_test" memberEnd="_UYGzLfoAEdu-e7JlHBQtRA _UYGy6foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzLfoAEdu-e7JlHBQtRA" type="_UYGy4_oAEdu-e7JlHBQtRA" association="_UYGzLPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzLvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzL_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzMPoAEdu-e7JlHBQtRA" name="A_clause_body" memberEnd="_UYGzMfoAEdu-e7JlHBQtRA _UYGy7foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzMfoAEdu-e7JlHBQtRA" type="_UYGy4_oAEdu-e7JlHBQtRA" association="_UYGzMPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzMvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzM_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzNPoAEdu-e7JlHBQtRA" name="A_predecessorClause_successorClause" memberEnd="_UYGy8foAEdu-e7JlHBQtRA _UYGy9foAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzNfoAEdu-e7JlHBQtRA" name="A_loopNode_bodyPart" memberEnd="_UYGzNvoAEdu-e7JlHBQtRA _UYGy0_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzNvoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_UYGzNfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzN_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzOPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzOfoAEdu-e7JlHBQtRA" name="A_loopNode_setupPart" memberEnd="_UYGzOvoAEdu-e7JlHBQtRA _UYGy1_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzOvoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_UYGzOfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzO_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzPPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzPfoAEdu-e7JlHBQtRA" name="A_clause_conditionalNode" memberEnd="_UYGyyfoAEdu-e7JlHBQtRA _UYGzPvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzPvoAEdu-e7JlHBQtRA" type="_UYGywPoAEdu-e7JlHBQtRA" association="_UYGzPfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzP_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzQPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzQfoAEdu-e7JlHBQtRA" name="A_decider_clause" memberEnd="_UYGy-foAEdu-e7JlHBQtRA _UYGzQvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzQvoAEdu-e7JlHBQtRA" type="_UYGy4_oAEdu-e7JlHBQtRA" association="_UYGzQfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzQ_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzRPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzRfoAEdu-e7JlHBQtRA" name="A_decider_loopNode" memberEnd="_UYGy2_oAEdu-e7JlHBQtRA _UYGzRvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzRvoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_UYGzRfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzR_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzSPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzSfoAEdu-e7JlHBQtRA" name="A_test_loopNode" memberEnd="_UYGy3_oAEdu-e7JlHBQtRA _UYGzSvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzSvoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_UYGzSfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzS_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzTPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzTfoAEdu-e7JlHBQtRA" name="A_activity_structuredNode" memberEnd="_UX9CpPoAEdu-e7JlHBQtRA _UYGy_foAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzTvoAEdu-e7JlHBQtRA" name="A_variable_activityScope" memberEnd="_UYGzAfoAEdu-e7JlHBQtRA _UX9CjfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYGzT_oAEdu-e7JlHBQtRA" name="A_executableNode_sequenceNode" memberEnd="_UYGzG_oAEdu-e7JlHBQtRA _UYGzUPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYGzUPoAEdu-e7JlHBQtRA" type="_UYGzGPoAEdu-e7JlHBQtRA" association="_UYGzT_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzUfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzUvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CevoAEdu-e7JlHBQtRA" name="A_node_activity" memberEnd="_UX9CUvoAEdu-e7JlHBQtRA _UX9CcvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_h18oENlrEduDKPkA-0jJZg" name="Usage">
+ <ownedComment xmi:id="_UYQjwfoAEdu-e7JlHBQtRA" annotatedElement="_h18oENlrEduDKPkA-0jJZg">
+ <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="_UYQjwvoAEdu-e7JlHBQtRA" general="_rEDGkGwKEdq7X4sGURiZYA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYQjw_oAEdu-e7JlHBQtRA" name="Abstraction">
+ <ownedComment xmi:id="_UYQjxPoAEdu-e7JlHBQtRA" annotatedElement="_UYQjw_oAEdu-e7JlHBQtRA">
+ <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="_UYQjxfoAEdu-e7JlHBQtRA" general="_rEDGkGwKEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UYQjxvoAEdu-e7JlHBQtRA" name="mapping" type="_ChRfcGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UYQj8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQjx_oAEdu-e7JlHBQtRA" annotatedElement="_UYQjxvoAEdu-e7JlHBQtRA">
+ <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="_UYQjyPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQjyfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rEDGkGwKEdq7X4sGURiZYA" name="Dependency">
+ <ownedComment xmi:id="_UYQjyvoAEdu-e7JlHBQtRA" annotatedElement="_rEDGkGwKEdq7X4sGURiZYA">
+ <body>A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s).</body>
+ </ownedComment>
+ <generalization xmi:id="_UYQjy_oAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <generalization xmi:id="_UYQjzPoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UYQjzfoAEdu-e7JlHBQtRA" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UYQj-foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQjzvoAEdu-e7JlHBQtRA" annotatedElement="_UYQjzfoAEdu-e7JlHBQtRA">
+ <body>The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQjz_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj0PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQj0foAEdu-e7JlHBQtRA" name="client" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA" association="_UYQj_voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQj0voAEdu-e7JlHBQtRA" annotatedElement="_UYQj0foAEdu-e7JlHBQtRA">
+ <body>The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj0_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj1PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYQj1foAEdu-e7JlHBQtRA" name="Realization">
+ <ownedComment xmi:id="_UYQj1voAEdu-e7JlHBQtRA" annotatedElement="_UYQj1foAEdu-e7JlHBQtRA">
+ <body>Realization is a specialized abstraction relationship between two sets of model elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYQj1_oAEdu-e7JlHBQtRA" general="_UYQjw_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYQj2PoAEdu-e7JlHBQtRA" name="Substitution">
+ <ownedComment xmi:id="_UYQj2foAEdu-e7JlHBQtRA" annotatedElement="_UYQj2PoAEdu-e7JlHBQtRA">
+ <body>A substitution is a relationship between two classifiers signifies that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYQj2voAEdu-e7JlHBQtRA" general="_UYQj1foAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYQj2_oAEdu-e7JlHBQtRA" name="contract" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UYQjzfoAEdu-e7JlHBQtRA" association="_UYQj9PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQj3PoAEdu-e7JlHBQtRA" annotatedElement="_UYQj2_oAEdu-e7JlHBQtRA">
+ <body>The contract with which the substituting classifier complies.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj3voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQj3_oAEdu-e7JlHBQtRA" name="substitutingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UYQj0foAEdu-e7JlHBQtRA" association="_UYQj-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQj4PoAEdu-e7JlHBQtRA" annotatedElement="_UYQj3_oAEdu-e7JlHBQtRA">
+ <body>Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj4foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj4voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZiwkoGwLEdq7X4sGURiZYA" name="Namespace" isAbstract="true">
+ <ownedComment xmi:id="_UTyTs_oAEdu-e7JlHBQtRA" annotatedElement="_ZiwkoGwLEdq7X4sGURiZYA">
+ <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="_UTyTtPoAEdu-e7JlHBQtRA" name="members_distinguishable" constrainedElement="_ZiwkoGwLEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UTyTtfoAEdu-e7JlHBQtRA" annotatedElement="_UTyTtPoAEdu-e7JlHBQtRA">
+ <body>All the members of a Namespace are distinguishable within it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXERF_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>membersAreDistinguishable()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UTyTt_oAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UTyTvPoAEdu-e7JlHBQtRA" name="elementImport" type="_RPl78GwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UUh6nvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTvfoAEdu-e7JlHBQtRA" annotatedElement="_UTyTvPoAEdu-e7JlHBQtRA">
+ <body>References the ElementImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERGPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERGfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTwPoAEdu-e7JlHBQtRA" name="packageImport" type="_SnNPIGwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UUh6n_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTwfoAEdu-e7JlHBQtRA" annotatedElement="_UTyTwPoAEdu-e7JlHBQtRA">
+ <body>References the PackageImports owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERGvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERG_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTzPoAEdu-e7JlHBQtRA" name="ownedRule" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UUrrVPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXERHPoAEdu-e7JlHBQtRA" annotatedElement="_UTyTzPoAEdu-e7JlHBQtRA">
+ <body>Specifies a set of Constraints owned by this Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERHfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERHvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTyPoAEdu-e7JlHBQtRA" name="member" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UUh61_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTyfoAEdu-e7JlHBQtRA" annotatedElement="_UTyTyPoAEdu-e7JlHBQtRA">
+ <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="_UXERIfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERIvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTuPoAEdu-e7JlHBQtRA" name="importedMember" type="_jKxnwGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" subsettedProperty="_UTyTyPoAEdu-e7JlHBQtRA" association="_UUh6kvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTufoAEdu-e7JlHBQtRA" annotatedElement="_UTyTuPoAEdu-e7JlHBQtRA">
+ <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="_UXERI_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERJPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTyTxPoAEdu-e7JlHBQtRA" name="ownedMember" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_UTyTyPoAEdu-e7JlHBQtRA _UToizPoAEdu-e7JlHBQtRA" association="_UUh61voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyTxfoAEdu-e7JlHBQtRA" annotatedElement="_UTyTxPoAEdu-e7JlHBQtRA">
+ <body>A collection of NamedElements owned by the Namespace.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj7voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj7_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_vI18QGwLEdq7X4sGURiZYA" name="createElementImport">
+ <ownedComment xmi:id="_sdLToOwlEdqYHf-imTcTdw" annotatedElement="_vI18QGwLEdq7X4sGURiZYA">
+ <body>Creates an import of the specified element into this namespace with the specified visibility.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_xwes4GwLEdq7X4sGURiZYA" type="_RPl78GwIEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_yOllMGwLEdq7X4sGURiZYA" name="element" type="_jKxnwGwLEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_5dZroPIDEdulR8T2OJRyFQ" annotatedElement="_yOllMGwLEdq7X4sGURiZYA">
+ <body>The element to import.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9mppoGwLEdq7X4sGURiZYA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_8P62kPIDEdulR8T2OJRyFQ" annotatedElement="_9mppoGwLEdq7X4sGURiZYA">
+ <body>The visibility for the new element import.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FRpmcGwMEdq7X4sGURiZYA" name="createPackageImport">
+ <ownedComment xmi:id="_t-ofUOwlEdqYHf-imTcTdw" annotatedElement="_FRpmcGwMEdq7X4sGURiZYA">
+ <body>Creates an import of the specified package into this namespace with the specified visibility.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IdWGYGwMEdq7X4sGURiZYA" type="_SnNPIGwIEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_RsevcGwMEdq7X4sGURiZYA" name="package_" type="_-cvRAGvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_-NYo0PIDEdulR8T2OJRyFQ" annotatedElement="_RsevcGwMEdq7X4sGURiZYA">
+ <body>The package to import.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OxwqwGwMEdq7X4sGURiZYA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_CiGmUPIEEdulR8T2OJRyFQ" annotatedElement="_OxwqwGwMEdq7X4sGURiZYA">
+ <body>The visibility for the new package import.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aoDYwGwLEdq7X4sGURiZYA" name="getImportedElements" isQuery="true">
+ <ownedComment xmi:id="_zNDPgOwmEdqYHf-imTcTdw" annotatedElement="_aoDYwGwLEdq7X4sGURiZYA">
+ <body>Retrieves the elements imported by this namespace.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_mL5PYGwLEdq7X4sGURiZYA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n-CicWwLEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n-CicGwLEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_2OvA4GwLEdq7X4sGURiZYA" name="getImportedPackages" isQuery="true">
+ <ownedComment xmi:id="_0UuCMOwmEdqYHf-imTcTdw" annotatedElement="_2OvA4GwLEdq7X4sGURiZYA">
+ <body>Retrieves the packages imported by this namespace.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_40lo0GwLEdq7X4sGURiZYA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6sF9AWwLEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6sF9AGwLEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyTz_oAEdu-e7JlHBQtRA" name="importedMember" isQuery="true" bodyCondition="_UTyT0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyT0PoAEdu-e7JlHBQtRA" annotatedElement="_UTyTz_oAEdu-e7JlHBQtRA">
+ <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="_UTyT0foAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyTz_oAEdu-e7JlHBQtRA _UTyTuPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXERJfoAEdu-e7JlHBQtRA">
+ <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="_UTyT0_oAEdu-e7JlHBQtRA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERJ_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyT1voAEdu-e7JlHBQtRA" name="getNamesOfMember" isQuery="true" bodyCondition="_UTyT2PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyT1_oAEdu-e7JlHBQtRA" annotatedElement="_UTyT1voAEdu-e7JlHBQtRA">
+ <body>The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UXERKPoAEdu-e7JlHBQtRA" annotatedElement="_UTyT1voAEdu-e7JlHBQtRA">
+ <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="_UTyT2PoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyT1voAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXERKfoAEdu-e7JlHBQtRA">
+ <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="_UTyT2voAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXERKvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXERK_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UTyT3foAEdu-e7JlHBQtRA" name="element" type="_csVgUGvtEdqG6fBIPwe-mw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyT8voAEdu-e7JlHBQtRA" name="membersAreDistinguishable" isQuery="true" bodyCondition="_UTyT9PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyT8_oAEdu-e7JlHBQtRA" annotatedElement="_UTyT8voAEdu-e7JlHBQtRA">
+ <body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UTyT9PoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyT8voAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa4PoAEdu-e7JlHBQtRA">
+ <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="_UTyT9voAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyT3voAEdu-e7JlHBQtRA" name="importMembers" isQuery="true" bodyCondition="_UTyT4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyT3_oAEdu-e7JlHBQtRA" annotatedElement="_UTyT3voAEdu-e7JlHBQtRA">
+ <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="_UTyT4PoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyT3voAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa4foAEdu-e7JlHBQtRA">
+ <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="_UTyT4voAEdu-e7JlHBQtRA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNa4voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNa4_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UTyT5foAEdu-e7JlHBQtRA" name="imps" type="_jKxnwGwLEdq7X4sGURiZYA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UTyT5voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UTyT5_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UTyT6PoAEdu-e7JlHBQtRA" name="excludeCollisions" isQuery="true" bodyCondition="_UTyT6voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTyT6foAEdu-e7JlHBQtRA" annotatedElement="_UTyT6PoAEdu-e7JlHBQtRA">
+ <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="_UTyT6voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UTyT6PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa5PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UTyT7PoAEdu-e7JlHBQtRA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXNa5foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXNa5voAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UTyT7_oAEdu-e7JlHBQtRA" name="imps" type="_jKxnwGwLEdq7X4sGURiZYA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UTyT8PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UTyT8foAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYQj8PoAEdu-e7JlHBQtRA" name="A_mapping_abstraction" memberEnd="_UYQjxvoAEdu-e7JlHBQtRA _UYQj8foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYQj8foAEdu-e7JlHBQtRA" type="_UYQjw_oAEdu-e7JlHBQtRA" association="_UYQj8PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj8voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj8_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYQj9PoAEdu-e7JlHBQtRA" name="A_contract_substitution" memberEnd="_UYQj2_oAEdu-e7JlHBQtRA _UYQj9foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYQj9foAEdu-e7JlHBQtRA" type="_UYQj2PoAEdu-e7JlHBQtRA" association="_UYQj9PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj9voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj9_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYQj-PoAEdu-e7JlHBQtRA" name="A_substitution_substitutingClassifier" memberEnd="_UYQj5PoAEdu-e7JlHBQtRA _UYQj3_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYQj-foAEdu-e7JlHBQtRA" name="A_supplierDependency_supplier" memberEnd="_UYQj-voAEdu-e7JlHBQtRA _UYQjzfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYQj-voAEdu-e7JlHBQtRA" name="supplierDependency" type="_rEDGkGwKEdq7X4sGURiZYA" association="_UYQj-foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQj-_oAEdu-e7JlHBQtRA" annotatedElement="_UYQj-voAEdu-e7JlHBQtRA">
+ <body>Indicates the dependencies that reference the supplier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj_PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj_foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYQj_voAEdu-e7JlHBQtRA" name="A_clientDependency_client" memberEnd="_UYQj6PoAEdu-e7JlHBQtRA _UYQj0foAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh61voAEdu-e7JlHBQtRA" name="A_ownedMember_namespace" memberEnd="_UTyTxPoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_l2mXcHLzEdqziYxiZo0YtA" name="InterfaceRealization">
+ <ownedComment xmi:id="_UYQkFPoAEdu-e7JlHBQtRA" annotatedElement="_l2mXcHLzEdqziYxiZo0YtA">
+ <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="_UYQkFfoAEdu-e7JlHBQtRA" general="_UYQj1foAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYQkFvoAEdu-e7JlHBQtRA" name="contract" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_UYQjzfoAEdu-e7JlHBQtRA" association="_UYZttfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkF_oAEdu-e7JlHBQtRA" annotatedElement="_UYQkFvoAEdu-e7JlHBQtRA">
+ <body>References the Interface specifying the conformance contract.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQkGPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkGfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQkGvoAEdu-e7JlHBQtRA" name="implementingClassifier" type="_iY7sMGvsEdqG6fBIPwe-mw" subsettedProperty="_UYQj0foAEdu-e7JlHBQtRA" association="_UYZtufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkG_oAEdu-e7JlHBQtRA" annotatedElement="_UYQkGvoAEdu-e7JlHBQtRA">
+ <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="_UYQkHPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkHfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZtsPoAEdu-e7JlHBQtRA" name="A_interface_ownedAttribute" memberEnd="_UYZtsfoAEdu-e7JlHBQtRA _UYQkBPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZtsfoAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_UUh6aPoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA" association="_UYZtsPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZtsvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZts_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZttPoAEdu-e7JlHBQtRA" name="A_interface_ownedOperation" memberEnd="_UYQkJPoAEdu-e7JlHBQtRA _UYQkCPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZttfoAEdu-e7JlHBQtRA" name="A_contract_interfaceRealization" memberEnd="_UYQkFvoAEdu-e7JlHBQtRA _UYZttvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZttvoAEdu-e7JlHBQtRA" type="_l2mXcHLzEdqziYxiZo0YtA" association="_UYZttfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZtt_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZtuPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZtufoAEdu-e7JlHBQtRA" name="A_interfaceRealization_implementingClassifier" memberEnd="_UYQkIPoAEdu-e7JlHBQtRA _UYQkGvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZtuvoAEdu-e7JlHBQtRA" name="A_nestedClassifier_interface" memberEnd="_UYQkDPoAEdu-e7JlHBQtRA _UYZtu_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZtu_oAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA _UT7dafoAEdu-e7JlHBQtRA" association="_UYZtuvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZtvPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZtvfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZtvvoAEdu-e7JlHBQtRA" name="A_interface_redefinedInterface" memberEnd="_UYZtv_oAEdu-e7JlHBQtRA _UYQkEPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZtv_oAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" association="_UYZtvvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZtwPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZtwfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FQiVsGwYEdqHKKVoxc0dlA" name="StructuredClassifier" isAbstract="true">
+ <ownedComment xmi:id="_UYZt6foAEdu-e7JlHBQtRA" annotatedElement="_FQiVsGwYEdqHKKVoxc0dlA">
+ <body>A structured classifier is an abstract metaclass that represents any classifier whose behavior can be fully or partly described by the collaboration of owned or referenced instances.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYZt6voAEdu-e7JlHBQtRA" name="multiplicities" constrainedElement="_FQiVsGwYEdqHKKVoxc0dlA">
+ <ownedComment xmi:id="_UYZt6_oAEdu-e7JlHBQtRA" annotatedElement="_UYZt6voAEdu-e7JlHBQtRA">
+ <body>The multiplicities on connected elements must be consistent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYZt7PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYZt7foAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UYZt7voAEdu-e7JlHBQtRA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UYZt9voAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA _UTfYifoAEdu-e7JlHBQtRA" association="_UYZuDPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt7_oAEdu-e7JlHBQtRA" annotatedElement="_UYZt7voAEdu-e7JlHBQtRA">
+ <body>References the properties owned by the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt8PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt8foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZt8voAEdu-e7JlHBQtRA" name="part" type="_Jp_1oGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_UYZuEPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt8_oAEdu-e7JlHBQtRA" annotatedElement="_UYZt8voAEdu-e7JlHBQtRA">
+ <body>References the properties specifying instances that the classifier owns by composition. This association is derived, selecting those owned properties where isComposite is true.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt9PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt9foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZt9voAEdu-e7JlHBQtRA" name="role" type="_UYZt_voAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UTyTyPoAEdu-e7JlHBQtRA" association="_UYZuFPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt9_oAEdu-e7JlHBQtRA" annotatedElement="_UYZt9voAEdu-e7JlHBQtRA">
+ <body>References the roles that instances may play in this classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt-PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt-foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZt-voAEdu-e7JlHBQtRA" name="ownedConnector" type="_UYZtz_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UYZuGPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt-_oAEdu-e7JlHBQtRA" annotatedElement="_UYZt-voAEdu-e7JlHBQtRA">
+ <body>References the connectors owned by the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt_PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt_foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_YorvMHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_9BZT4OwlEdqYHf-imTcTdw" annotatedElement="_YorvMHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YorvMXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_YorvMnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_GYWNMPIGEdulR8T2OJRyFQ" annotatedElement="_YorvMnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gKEUcaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gKEUcKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YorvM3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Ic0mYPIGEdulR8T2OJRyFQ" annotatedElement="_YorvM3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iJ7TYaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iJ7TYKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YorvNHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_EwVGgPIGEdulR8T2OJRyFQ" annotatedElement="_YorvNHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YorvNXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_JWfZUPIGEdulR8T2OJRyFQ" annotatedElement="_YorvNXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuCPoAEdu-e7JlHBQtRA" name="A_type_connector" memberEnd="_UYZt2_oAEdu-e7JlHBQtRA _UYZuCfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuCfoAEdu-e7JlHBQtRA" type="_UYZtz_oAEdu-e7JlHBQtRA" association="_UYZuCPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuCvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuC_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuDPoAEdu-e7JlHBQtRA" name="A_ownedAttribute_structuredClassifier" memberEnd="_UYZt7voAEdu-e7JlHBQtRA _UYZuDfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuDfoAEdu-e7JlHBQtRA" type="_FQiVsGwYEdqHKKVoxc0dlA" association="_UYZuDPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuDvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuD_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuEPoAEdu-e7JlHBQtRA" name="A_part_structuredClassifier" memberEnd="_UYZt8voAEdu-e7JlHBQtRA _UYZuEfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuEfoAEdu-e7JlHBQtRA" type="_FQiVsGwYEdqHKKVoxc0dlA" association="_UYZuEPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuEvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuE_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuFPoAEdu-e7JlHBQtRA" name="A_role_structuredClassifier" memberEnd="_UYZt9voAEdu-e7JlHBQtRA _UYZuFfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuFfoAEdu-e7JlHBQtRA" type="_FQiVsGwYEdqHKKVoxc0dlA" association="_UYZuFPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuFvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuF_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuGPoAEdu-e7JlHBQtRA" name="A_ownedConnector_structuredClassifier" memberEnd="_UYZt-voAEdu-e7JlHBQtRA _UYZuGfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuGfoAEdu-e7JlHBQtRA" type="_FQiVsGwYEdqHKKVoxc0dlA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UYZuGPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuGvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuG_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuHPoAEdu-e7JlHBQtRA" name="A_redefinedConnector_connector" memberEnd="_UYZt3_oAEdu-e7JlHBQtRA _UYZuHfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuHfoAEdu-e7JlHBQtRA" type="_UYZtz_oAEdu-e7JlHBQtRA" association="_UYZuHPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuHvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuH_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuIPoAEdu-e7JlHBQtRA" name="A_end_connector" memberEnd="_UYZt4_oAEdu-e7JlHBQtRA _UYZuIfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuIfoAEdu-e7JlHBQtRA" type="_UYZtz_oAEdu-e7JlHBQtRA" association="_UYZuIPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuIvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuI_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuJPoAEdu-e7JlHBQtRA" name="A_definingEnd_connectorEnd" memberEnd="_UYZtx_oAEdu-e7JlHBQtRA _UYZuJfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYZuJfoAEdu-e7JlHBQtRA" type="_aOgw0GveEdq4DLWZOhbdEA" association="_UYZuJPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuJ_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6Z_oAEdu-e7JlHBQtRA" name="A_attribute_classifier" memberEnd="_UTfYifoAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6aPoAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UUh6Z_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZuKfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuKvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9CgvoAEdu-e7JlHBQtRA" name="Variable">
+ <ownedComment xmi:id="_UX9Cg_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CgvoAEdu-e7JlHBQtRA">
+ <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>
+ <ownedComment xmi:id="_UYZuLvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CgvoAEdu-e7JlHBQtRA">
+ <body>A variable is considered a connectable element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UX9ChPoAEdu-e7JlHBQtRA" name="owned" constrainedElement="_UX9CgvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9ChfoAEdu-e7JlHBQtRA" annotatedElement="_UX9ChPoAEdu-e7JlHBQtRA">
+ <body>A variable is owned by a StructuredNode or Activity, but not both.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UX9ChvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9CiPoAEdu-e7JlHBQtRA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ <generalization xmi:id="_UYZuL_oAEdu-e7JlHBQtRA" general="_UYZt_voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UX9CifoAEdu-e7JlHBQtRA" name="scope" type="_UX9Cl_oAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UYGzKvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CivoAEdu-e7JlHBQtRA" annotatedElement="_UX9CifoAEdu-e7JlHBQtRA">
+ <body>A structured activity node that owns the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9Ci_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CjPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CjfoAEdu-e7JlHBQtRA" name="activityScope" type="_UX9CTPoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UYGzTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CjvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CjfoAEdu-e7JlHBQtRA">
+ <body>An activity that owns the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9Cj_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CkPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UX9CkfoAEdu-e7JlHBQtRA" name="isAccessibleBy" isQuery="true" bodyCondition="_UX9Ck_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CkvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CkfoAEdu-e7JlHBQtRA">
+ <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="_UX9Ck_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UX9CkfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UX9ClPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UX9ClfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UX9ClvoAEdu-e7JlHBQtRA" name="a" type="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjesPoAEdu-e7JlHBQtRA" name="CollaborationUse">
+ <ownedComment xmi:id="_UYjesfoAEdu-e7JlHBQtRA" annotatedElement="_UYjesPoAEdu-e7JlHBQtRA">
+ <body>A collaboration use represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration use shows how the pattern described by a collaboration is applied in a given context, by binding specific entities from that context to the roles of the collaboration. Depending on the context, these entities could be structural features of a classifier, instance specifications, or even roles in some containing collaboration. There may be multiple occurrences of a given collaboration within a classifier, each involving a different set of roles and connectors. A given role or connector may be involved in multiple occurrences of the same or different collaborations.&#xD;
+Associated dependencies map features of the collaboration type to features in the classifier. These dependencies indicate which role in the classifier plays which role in the collaboration.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYjesvoAEdu-e7JlHBQtRA" name="client_elements" constrainedElement="_UYjesPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjes_oAEdu-e7JlHBQtRA" annotatedElement="_UYjesvoAEdu-e7JlHBQtRA">
+ <body>All the client elements of a roleBinding are in one classifier and all supplier elements of a roleBinding are in one collaboration and they are compatible.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjetPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjetfoAEdu-e7JlHBQtRA" name="every_role" constrainedElement="_UYjesPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjetvoAEdu-e7JlHBQtRA" annotatedElement="_UYjetfoAEdu-e7JlHBQtRA">
+ <body>Every role in the collaboration is bound within the collaboration use to a connectable element within the classifier or operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjet_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjeuPoAEdu-e7JlHBQtRA" name="connectors" constrainedElement="_UYjesPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjeufoAEdu-e7JlHBQtRA" annotatedElement="_UYjeuPoAEdu-e7JlHBQtRA">
+ <body>The connectors in the classifier connect according to the connectors in the collaboration</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjeuvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYjeu_oAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYjevPoAEdu-e7JlHBQtRA" name="type" type="_UYjexPoAEdu-e7JlHBQtRA" association="_UYje2voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjevfoAEdu-e7JlHBQtRA" annotatedElement="_UYjevPoAEdu-e7JlHBQtRA">
+ <body>The collaboration which is used in this occurrence. The collaboration defines the cooperation between its roles which are mapped to properties of the classifier owning the collaboration use.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjevvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjev_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjewPoAEdu-e7JlHBQtRA" name="roleBinding" type="_rEDGkGwKEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UYje3voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjewfoAEdu-e7JlHBQtRA" annotatedElement="_UYjewPoAEdu-e7JlHBQtRA">
+ <body>A mapping between features of the collaboration type and features of the classifier or operation. This mapping indicates which connectable element of the classifier or operation plays which role(s) in the collaboration. A connectable element may be bound to multiple roles in the same collaboration use (that is, it may play multiple roles).&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjewvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjew_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjexPoAEdu-e7JlHBQtRA" name="Collaboration">
+ <ownedComment xmi:id="_UYjexfoAEdu-e7JlHBQtRA" annotatedElement="_UYjexPoAEdu-e7JlHBQtRA">
+ <body>A collaboration use represents the application of the pattern described by a collaboration to a specific situation involving specific classes or instances playing the roles of the collaboration.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYjex_oAEdu-e7JlHBQtRA" general="_FQiVsGwYEdqHKKVoxc0dlA"/>
+ <generalization xmi:id="_UYjeyPoAEdu-e7JlHBQtRA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYjeyfoAEdu-e7JlHBQtRA" name="collaborationRole" type="_UYZt_voAEdu-e7JlHBQtRA" subsettedProperty="_UYZt9voAEdu-e7JlHBQtRA" association="_UYje6voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjeyvoAEdu-e7JlHBQtRA" annotatedElement="_UYjeyfoAEdu-e7JlHBQtRA">
+ <body>References connectable elements (possibly owned by other classifiers) which represent roles that instances may play in this collaboration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjey_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjezPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYje2voAEdu-e7JlHBQtRA" name="A_type_collaborationUse" memberEnd="_UYjevPoAEdu-e7JlHBQtRA _UYje2_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYje2_oAEdu-e7JlHBQtRA" type="_UYjesPoAEdu-e7JlHBQtRA" association="_UYje2voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYje3PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje3foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYje3voAEdu-e7JlHBQtRA" name="A_roleBinding_collaborationUse" memberEnd="_UYjewPoAEdu-e7JlHBQtRA _UYje3_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYje3_oAEdu-e7JlHBQtRA" type="_UYjesPoAEdu-e7JlHBQtRA" association="_UYje3voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYje4PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje4foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYje4voAEdu-e7JlHBQtRA" name="A_classifier_representation" memberEnd="_UYje4_oAEdu-e7JlHBQtRA _UYjezfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYje4_oAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UYje4voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYje5PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje5foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYje5voAEdu-e7JlHBQtRA" name="A_collaborationUse_classifier" memberEnd="_UYje0foAEdu-e7JlHBQtRA _UYje5_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYje5_oAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UYje5voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYje6PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje6foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYje6voAEdu-e7JlHBQtRA" name="A_collaborationRole_collaboration" memberEnd="_UYjeyfoAEdu-e7JlHBQtRA _UYje6_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYje6_oAEdu-e7JlHBQtRA" type="_UYjexPoAEdu-e7JlHBQtRA" association="_UYje6voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYje7PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje7foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYje-PoAEdu-e7JlHBQtRA" name="ControlNode" isAbstract="true">
+ <ownedComment xmi:id="_UYje-foAEdu-e7JlHBQtRA" annotatedElement="_UYje-PoAEdu-e7JlHBQtRA">
+ <body>A control node is an abstract activity node that coordinates flows in an activity.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYje-voAEdu-e7JlHBQtRA" general="_UX9Cb_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjfGPoAEdu-e7JlHBQtRA" name="ControlFlow">
+ <ownedComment xmi:id="_UYjfGfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfGPoAEdu-e7JlHBQtRA">
+ <body>A control flow is an edge that starts an activity node after the previous one is finished.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYjfGvoAEdu-e7JlHBQtRA" name="object_nodes" constrainedElement="_UYjfGPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfG_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfGvoAEdu-e7JlHBQtRA">
+ <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="_UYjfHPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYjfHfoAEdu-e7JlHBQtRA" general="_UYje-_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjfKvoAEdu-e7JlHBQtRA" name="InitialNode">
+ <ownedComment xmi:id="_UYjfK_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfKvoAEdu-e7JlHBQtRA">
+ <body>An initial node is a control node at which flow starts when the activity is invoked.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYjfLPoAEdu-e7JlHBQtRA" name="no_incoming_edges" constrainedElement="_UYjfKvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfLfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfLPoAEdu-e7JlHBQtRA">
+ <body>An initial node has no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfLvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfL_oAEdu-e7JlHBQtRA" name="control_edges" constrainedElement="_UYjfKvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfMPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfL_oAEdu-e7JlHBQtRA">
+ <body>Only control edges can have initial nodes as source.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfMfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYjfMvoAEdu-e7JlHBQtRA" general="_UYje-PoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjfQ_oAEdu-e7JlHBQtRA" name="ActivityParameterNode">
+ <ownedComment xmi:id="_UYjfRPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfQ_oAEdu-e7JlHBQtRA">
+ <body>An activity parameter node is an object node for inputs and outputs to activities.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYjfRfoAEdu-e7JlHBQtRA" name="has_parameters" constrainedElement="_UYjfQ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfRvoAEdu-e7JlHBQtRA" annotatedElement="_UYjfRfoAEdu-e7JlHBQtRA">
+ <body>Activity parameter nodes must have parameters from the containing activity.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfR_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfSPoAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UYjfQ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfSfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfSPoAEdu-e7JlHBQtRA">
+ <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="_UYjfSvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfS_oAEdu-e7JlHBQtRA" name="no_edges" constrainedElement="_UYjfQ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfTPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfS_oAEdu-e7JlHBQtRA">
+ <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="_UYjfTfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfTvoAEdu-e7JlHBQtRA" name="no_incoming_edges" constrainedElement="_UYjfQ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfT_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfTvoAEdu-e7JlHBQtRA">
+ <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="_UYjfUPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfUfoAEdu-e7JlHBQtRA" name="no_outgoing_edges" constrainedElement="_UYjfQ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfUvoAEdu-e7JlHBQtRA" annotatedElement="_UYjfUfoAEdu-e7JlHBQtRA">
+ <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="_UYjfU_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYjfVPoAEdu-e7JlHBQtRA" general="_UYje7voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYjfVfoAEdu-e7JlHBQtRA" name="parameter" type="_KyaPMGveEdq4DLWZOhbdEA" association="_UYjffvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfVvoAEdu-e7JlHBQtRA" annotatedElement="_UYjfVfoAEdu-e7JlHBQtRA">
+ <body>The parameter the object node will be accepting or providing values for.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfV_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfWPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz4J_oAEdu-e7JlHBQtRA" name="ValuePin">
+ <ownedComment xmi:id="_UXz4KPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4J_oAEdu-e7JlHBQtRA">
+ <body>A value pin is an input pin that provides a value by evaluating a value specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXz4KfoAEdu-e7JlHBQtRA" name="compatible_type" constrainedElement="_UXz4J_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4KvoAEdu-e7JlHBQtRA" annotatedElement="_UXz4KfoAEdu-e7JlHBQtRA">
+ <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="_UXz4K_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfd_oAEdu-e7JlHBQtRA" name="no_incoming_edges" constrainedElement="_UXz4J_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfePoAEdu-e7JlHBQtRA" annotatedElement="_UYjfd_oAEdu-e7JlHBQtRA">
+ <body>Value pins have no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfefoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz4LPoAEdu-e7JlHBQtRA" general="_UXz4NPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UXz4LfoAEdu-e7JlHBQtRA" name="value" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" association="_UX9COPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4LvoAEdu-e7JlHBQtRA" annotatedElement="_UXz4LfoAEdu-e7JlHBQtRA">
+ <body>Value that the pin will provide.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4L_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4MPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYjfevoAEdu-e7JlHBQtRA" name="A_activity_edge" memberEnd="_UYjfBPoAEdu-e7JlHBQtRA _UYjfc_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYjfe_oAEdu-e7JlHBQtRA" name="A_outgoing_source" memberEnd="_UYjfXPoAEdu-e7JlHBQtRA _UYjfCPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYjffPoAEdu-e7JlHBQtRA" name="A_target_incoming" memberEnd="_UYjfDPoAEdu-e7JlHBQtRA _UYjfYPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYjffvoAEdu-e7JlHBQtRA" name="A_parameter_activityParameterNode" memberEnd="_UYjfVfoAEdu-e7JlHBQtRA _UYjff_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYjff_oAEdu-e7JlHBQtRA" type="_UYjfQ_oAEdu-e7JlHBQtRA" association="_UYjffvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfgPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfgfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYjfgvoAEdu-e7JlHBQtRA" name="A_redefinedNode_activityNode" memberEnd="_UYjfZPoAEdu-e7JlHBQtRA _UYjfg_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYjfg_oAEdu-e7JlHBQtRA" type="_UX9Cb_oAEdu-e7JlHBQtRA" association="_UYjfgvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfhPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfhfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYsooPoAEdu-e7JlHBQtRA" name="A_redefinedEdge_activityEdge" memberEnd="_UYjfFPoAEdu-e7JlHBQtRA _UYsoofoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UYsoofoAEdu-e7JlHBQtRA" type="_UYje-_oAEdu-e7JlHBQtRA" association="_UYsooPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsoovoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsoo_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gfgNwGveEdq4DLWZOhbdEA" name="Message">
+ <ownedComment xmi:id="_UYso5foAEdu-e7JlHBQtRA" annotatedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <body>A message defines a particular communication between lifelines of an interaction.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYso5voAEdu-e7JlHBQtRA" name="sending_receiving_message_event" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso5_oAEdu-e7JlHBQtRA" annotatedElement="_UYso5voAEdu-e7JlHBQtRA">
+ <body>If the sending MessageEvent and the receiving MessageEvent of the same Message are on the same Lifeline, the sending MessageEvent must be ordered before the receiving MessageEvent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso6PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYso6foAEdu-e7JlHBQtRA" name="signature_refer_to" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso6voAEdu-e7JlHBQtRA" annotatedElement="_UYso6foAEdu-e7JlHBQtRA">
+ <body>The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso6_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYso7PoAEdu-e7JlHBQtRA" name="signature_is_operation" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso7foAEdu-e7JlHBQtRA" annotatedElement="_UYso7PoAEdu-e7JlHBQtRA">
+ <body>In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso7voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYso7_oAEdu-e7JlHBQtRA" name="signature_is_signal" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso8PoAEdu-e7JlHBQtRA" annotatedElement="_UYso7_oAEdu-e7JlHBQtRA">
+ <body>In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso8foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYso8voAEdu-e7JlHBQtRA" name="arguments" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso8_oAEdu-e7JlHBQtRA" annotatedElement="_UYso8voAEdu-e7JlHBQtRA">
+ <body>Arguments of a Message must only be:
+i) attributes of the sending lifeline
+ii) constants
+iii) symbolic values (which are wildcard values representing any legal value)
+iv) explicit parameters of the enclosing Interaction
+v) attributes of the class owning the Interaction
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso9PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYso9foAEdu-e7JlHBQtRA" name="cannot_cross_boundaries" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso9voAEdu-e7JlHBQtRA" annotatedElement="_UYso9foAEdu-e7JlHBQtRA">
+ <body>Messages cannot cross bounderies of CombinedFragments or their operands.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso9_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYso-PoAEdu-e7JlHBQtRA" name="occurrence_specifications" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYso-foAEdu-e7JlHBQtRA" annotatedElement="_UYso-PoAEdu-e7JlHBQtRA">
+ <body>If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYso-voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYso-_oAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYso_PoAEdu-e7JlHBQtRA" name="messageKind" type="_Y_jskGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_UYso_foAEdu-e7JlHBQtRA" annotatedElement="_UYso_PoAEdu-e7JlHBQtRA">
+ <body>The derived kind of the Message (complete, lost, found or unknown)</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UYso_voAEdu-e7JlHBQtRA" type="_Y_jskGvtEdqG6fBIPwe-mw" instance="_UYspqvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYso__oAEdu-e7JlHBQtRA" name="messageSort" type="_UY2ZoPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspAPoAEdu-e7JlHBQtRA" annotatedElement="_UYso__oAEdu-e7JlHBQtRA">
+ <body>The sort of communication reflected by the Message</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UYspAfoAEdu-e7JlHBQtRA" type="_UY2ZoPoAEdu-e7JlHBQtRA" instance="_UY2ZovoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspAvoAEdu-e7JlHBQtRA" name="receiveEvent" type="_UYspRvoAEdu-e7JlHBQtRA" association="_UY2ZwPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspA_oAEdu-e7JlHBQtRA" annotatedElement="_UYspAvoAEdu-e7JlHBQtRA">
+ <body>References the Receiving of the Message</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspBPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspBfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspBvoAEdu-e7JlHBQtRA" name="sendEvent" type="_UYspRvoAEdu-e7JlHBQtRA" association="_UY2ZxPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspB_oAEdu-e7JlHBQtRA" annotatedElement="_UYspBvoAEdu-e7JlHBQtRA">
+ <body>References the Sending of the Message.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspCPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspCfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspCvoAEdu-e7JlHBQtRA" name="connector" type="_UYZtz_oAEdu-e7JlHBQtRA" association="_UY2Z0PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspC_oAEdu-e7JlHBQtRA" annotatedElement="_UYspCvoAEdu-e7JlHBQtRA">
+ <body>The Connector on which this Message is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspDPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspDfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspDvoAEdu-e7JlHBQtRA" name="interaction" type="_UYsopvoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UY2Z1PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspD_oAEdu-e7JlHBQtRA" annotatedElement="_UYspDvoAEdu-e7JlHBQtRA">
+ <body>The enclosing Interaction owning the Message</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspEPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspEfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspEvoAEdu-e7JlHBQtRA" name="argument" type="_UT7dj_oAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UY2Z1_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspE_oAEdu-e7JlHBQtRA" annotatedElement="_UYspEvoAEdu-e7JlHBQtRA">
+ <body>The arguments of the Message</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspFPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspFfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspFvoAEdu-e7JlHBQtRA" name="signature" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_UY2Z8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspF_oAEdu-e7JlHBQtRA" annotatedElement="_UYspFvoAEdu-e7JlHBQtRA">
+ <body>The definition of the type or signature of the Message (depending on its kind). The associated named element is derived from the message end that constitutes the sending or receiving message event. If both a sending event and a receiving message event are present, the signature is obtained from the sending event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspGPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspGfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_8U6CAFYfEdqB6vblk3tuMA" name="getMessageKind" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_-_OTMFYfEdqB6vblk3tuMA" type="_Y_jskGvtEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_R__uEFYjEdqB6vblk3tuMA" name="getSignature" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_WEKuIFYjEdqB6vblk3tuMA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YR4i4VYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YR4i4FYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspGvoAEdu-e7JlHBQtRA" name="GeneralOrdering">
+ <ownedComment xmi:id="_UYspG_oAEdu-e7JlHBQtRA" annotatedElement="_UYspGvoAEdu-e7JlHBQtRA">
+ <body>A general ordering represents a binary relation between two occurrence specifications, to describe that one occurrence specification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of occurrence cpecifications that may otherwise not have a specified order.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspHPoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYspHfoAEdu-e7JlHBQtRA" name="before" type="_UYspM_oAEdu-e7JlHBQtRA" association="_UY2Z1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspHvoAEdu-e7JlHBQtRA" annotatedElement="_UYspHfoAEdu-e7JlHBQtRA">
+ <body>The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspH_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspIPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspIfoAEdu-e7JlHBQtRA" name="after" type="_UYspM_oAEdu-e7JlHBQtRA" association="_UY2Z1voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspIvoAEdu-e7JlHBQtRA" annotatedElement="_UYspIfoAEdu-e7JlHBQtRA">
+ <body>The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspI_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspJPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspJfoAEdu-e7JlHBQtRA" name="ExecutionSpecification" isAbstract="true">
+ <ownedComment xmi:id="_UYspJvoAEdu-e7JlHBQtRA" annotatedElement="_UYspJfoAEdu-e7JlHBQtRA">
+ <body>An execution specification is a specification of the execution of a unit of behavior or action within the lifeline. The duration of an execution specification is represented by two cccurrence specifications, the start occurrence specification and the finish occurrence specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYspJ_oAEdu-e7JlHBQtRA" name="same_lifeline" constrainedElement="_UYspJfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspKPoAEdu-e7JlHBQtRA" annotatedElement="_UYspJ_oAEdu-e7JlHBQtRA">
+ <body>The startEvent and the finishEvent must be on the same Lifeline</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYspKfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>start.lifeline = finish.lifeline</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYspKvoAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspK_oAEdu-e7JlHBQtRA" name="start" type="_UYspM_oAEdu-e7JlHBQtRA" association="_UY2ZsPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspLPoAEdu-e7JlHBQtRA" annotatedElement="_UYspK_oAEdu-e7JlHBQtRA">
+ <body>References the OccurrenceSpecification that designates the start of the Action or Behavior</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspLfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspLvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspL_oAEdu-e7JlHBQtRA" name="finish" type="_UYspM_oAEdu-e7JlHBQtRA" association="_UY2ZtfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspMPoAEdu-e7JlHBQtRA" annotatedElement="_UYspL_oAEdu-e7JlHBQtRA">
+ <body>References the OccurrenceSpecification that designates the finish of the Action or Behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspMfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspMvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspM_oAEdu-e7JlHBQtRA" name="OccurrenceSpecification">
+ <ownedComment xmi:id="_UYspNPoAEdu-e7JlHBQtRA" annotatedElement="_UYspM_oAEdu-e7JlHBQtRA">
+ <body>An occurrence specification is the basic semantic unit of interactions. The sequences of occurrences specified by them are the meanings of interactions.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspNfoAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspNvoAEdu-e7JlHBQtRA" name="covered" type="_UYsouvoAEdu-e7JlHBQtRA" redefinedProperty="_UYso2foAEdu-e7JlHBQtRA" association="_UY2ZyPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspN_oAEdu-e7JlHBQtRA" annotatedElement="_UYspNvoAEdu-e7JlHBQtRA">
+ <body>References the Lifeline on which the OccurrenceSpecification appears.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspOPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspOfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspOvoAEdu-e7JlHBQtRA" name="toAfter" type="_UYspGvoAEdu-e7JlHBQtRA" association="_UY2Z1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspO_oAEdu-e7JlHBQtRA" annotatedElement="_UYspOvoAEdu-e7JlHBQtRA">
+ <body>References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspPPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspPfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspPvoAEdu-e7JlHBQtRA" name="toBefore" type="_UYspGvoAEdu-e7JlHBQtRA" association="_UY2Z1voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspP_oAEdu-e7JlHBQtRA" annotatedElement="_UYspPvoAEdu-e7JlHBQtRA">
+ <body>References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspQPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspQfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspQvoAEdu-e7JlHBQtRA" name="event" type="_UZALDfoAEdu-e7JlHBQtRA" association="_UY2aAPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspQ_oAEdu-e7JlHBQtRA" annotatedElement="_UYspQvoAEdu-e7JlHBQtRA">
+ <body>References a specification of the occurring event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspRPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspRfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspRvoAEdu-e7JlHBQtRA" name="MessageEnd" isAbstract="true">
+ <ownedComment xmi:id="_UYspR_oAEdu-e7JlHBQtRA" annotatedElement="_UYspRvoAEdu-e7JlHBQtRA">
+ <body>MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a message.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspSPoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYspSfoAEdu-e7JlHBQtRA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UY2Z_PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspSvoAEdu-e7JlHBQtRA" annotatedElement="_UYspSfoAEdu-e7JlHBQtRA">
+ <body>References a Message.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspS_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspTPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspTfoAEdu-e7JlHBQtRA" name="StateInvariant">
+ <ownedComment xmi:id="_UYspTvoAEdu-e7JlHBQtRA" annotatedElement="_UYspTfoAEdu-e7JlHBQtRA">
+ <body>A state invariant is a runtime constraint on the participants of the interaction. It may be used to specify a variety of different kinds of constraints, such as values of attributes or variables, internal or external states, and so on. A state invariant is an interaction fragment and it is placed on a lifeline.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspT_oAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspUPoAEdu-e7JlHBQtRA" name="invariant" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UY2Z2_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspUfoAEdu-e7JlHBQtRA" annotatedElement="_UYspUPoAEdu-e7JlHBQtRA">
+ <body>A Constraint that should hold at runtime for this StateInvariant</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspUvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspU_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspVPoAEdu-e7JlHBQtRA" name="covered" type="_UYsouvoAEdu-e7JlHBQtRA" redefinedProperty="_UYso2foAEdu-e7JlHBQtRA" association="_UY2Z3_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspVfoAEdu-e7JlHBQtRA" annotatedElement="_UYspVPoAEdu-e7JlHBQtRA">
+ <body>References the Lifeline on which the StateInvariant appears.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspVvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspV_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspWPoAEdu-e7JlHBQtRA" name="ActionExecutionSpecification">
+ <ownedComment xmi:id="_UYspWfoAEdu-e7JlHBQtRA" annotatedElement="_UYspWPoAEdu-e7JlHBQtRA">
+ <body>An action execution specification is a kind of execution specification representing the execution of an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYspWvoAEdu-e7JlHBQtRA" name="action_referenced" constrainedElement="_UYspWPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspW_oAEdu-e7JlHBQtRA" annotatedElement="_UYspWvoAEdu-e7JlHBQtRA">
+ <body>The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYspXPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYspXfoAEdu-e7JlHBQtRA" general="_UYspJfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspXvoAEdu-e7JlHBQtRA" name="action" type="_UX9B-PoAEdu-e7JlHBQtRA" association="_UY2Z7PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspX_oAEdu-e7JlHBQtRA" annotatedElement="_UYspXvoAEdu-e7JlHBQtRA">
+ <body>Action whose execution is occurring.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspYPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspYfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspYvoAEdu-e7JlHBQtRA" name="BehaviorExecutionSpecification">
+ <ownedComment xmi:id="_UYspY_oAEdu-e7JlHBQtRA" annotatedElement="_UYspYvoAEdu-e7JlHBQtRA">
+ <body>A behavior execution specification is a kind of execution specification representing the execution of a behavior.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspZPoAEdu-e7JlHBQtRA" general="_UYspJfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspZfoAEdu-e7JlHBQtRA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UY2Z6PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspZvoAEdu-e7JlHBQtRA" annotatedElement="_UYspZfoAEdu-e7JlHBQtRA">
+ <body>Behavior whose execution is occurring.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspZ_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspaPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspafoAEdu-e7JlHBQtRA" name="ExecutionEvent">
+ <ownedComment xmi:id="_UYspavoAEdu-e7JlHBQtRA" annotatedElement="_UYspafoAEdu-e7JlHBQtRA">
+ <body>An execution event models the start or finish of an execution occurrence.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspa_oAEdu-e7JlHBQtRA" general="_UZALDfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspbPoAEdu-e7JlHBQtRA" name="CreationEvent">
+ <ownedComment xmi:id="_UYspbfoAEdu-e7JlHBQtRA" annotatedElement="_UYspbPoAEdu-e7JlHBQtRA">
+ <body>A creation event models the creation of an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYspbvoAEdu-e7JlHBQtRA" name="no_occurrence_above" constrainedElement="_UYspbPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspb_oAEdu-e7JlHBQtRA" annotatedElement="_UYspbvoAEdu-e7JlHBQtRA">
+ <body>No othet OccurrenceSpecification may appear above an OccurrenceSpecification which references a CreationEvent on a given Lifeline in an InteractionOperand.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYspcPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYspcfoAEdu-e7JlHBQtRA" general="_UZALDfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspcvoAEdu-e7JlHBQtRA" name="DestructionEvent">
+ <ownedComment xmi:id="_UYspc_oAEdu-e7JlHBQtRA" annotatedElement="_UYspcvoAEdu-e7JlHBQtRA">
+ <body>A destruction event models the destruction of an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYspdPoAEdu-e7JlHBQtRA" name="no_occurrence_specifications_below" constrainedElement="_UYspcvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspdfoAEdu-e7JlHBQtRA" annotatedElement="_UYspdPoAEdu-e7JlHBQtRA">
+ <body>No other OccurrenceSpecifications may appear below an OccurrenceSpecification which references a DestructionEvent on a given Lifeline in an InteractionOperand.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYspdvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYspd_oAEdu-e7JlHBQtRA" general="_UZALDfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspePoAEdu-e7JlHBQtRA" name="SendOperationEvent">
+ <ownedComment xmi:id="_UYspefoAEdu-e7JlHBQtRA" annotatedElement="_UYspePoAEdu-e7JlHBQtRA">
+ <body>A send operation event models the invocation of an operation call.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspevoAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspe_oAEdu-e7JlHBQtRA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UY2Z9PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspfPoAEdu-e7JlHBQtRA" annotatedElement="_UYspe_oAEdu-e7JlHBQtRA">
+ <body>The operation associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspffoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspfvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspf_oAEdu-e7JlHBQtRA" name="SendSignalEvent">
+ <ownedComment xmi:id="_UYspgPoAEdu-e7JlHBQtRA" annotatedElement="_UYspf_oAEdu-e7JlHBQtRA">
+ <body>A send signal event models the sending of a signal.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspgfoAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspgvoAEdu-e7JlHBQtRA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_UY2Z-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspg_oAEdu-e7JlHBQtRA" annotatedElement="_UYspgvoAEdu-e7JlHBQtRA">
+ <body>The signal associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsphPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsphfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYsphvoAEdu-e7JlHBQtRA" name="MessageOccurrenceSpecification">
+ <ownedComment xmi:id="_UYsph_oAEdu-e7JlHBQtRA" annotatedElement="_UYsphvoAEdu-e7JlHBQtRA">
+ <body>A message occurrence specification pecifies the occurrence of message events, such as sending and receiving of signals or invoking or receiving of operation calls. A message occurrence specification is a kind of message end. Messages are generated either by synchronous operation calls or asynchronous signal sends. They are received by the execution of corresponding accept event actions.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspiPoAEdu-e7JlHBQtRA" general="_UYspRvoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UYspifoAEdu-e7JlHBQtRA" general="_UYspM_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspivoAEdu-e7JlHBQtRA" name="ExecutionOccurrenceSpecification">
+ <ownedComment xmi:id="_UYspi_oAEdu-e7JlHBQtRA" annotatedElement="_UYspivoAEdu-e7JlHBQtRA">
+ <body>An execution occurrence specification represents moments in time at which actions or behaviors start or finish.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspjPoAEdu-e7JlHBQtRA" general="_UYspM_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspjfoAEdu-e7JlHBQtRA" name="execution" type="_UYspJfoAEdu-e7JlHBQtRA" association="_UY2aCPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspjvoAEdu-e7JlHBQtRA" annotatedElement="_UYspjfoAEdu-e7JlHBQtRA">
+ <body>References the execution specification describing the execution that is started or finished at this execution event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspj_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspkPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYspkfoAEdu-e7JlHBQtRA" name="event" type="_UYspafoAEdu-e7JlHBQtRA" redefinedProperty="_UYspQvoAEdu-e7JlHBQtRA" association="_UY2aDPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspkvoAEdu-e7JlHBQtRA" annotatedElement="_UYspkfoAEdu-e7JlHBQtRA">
+ <body>The event referenced is restricted to an execution event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspk_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsplPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYsplfoAEdu-e7JlHBQtRA" name="ReceiveOperationEvent">
+ <ownedComment xmi:id="_UYsplvoAEdu-e7JlHBQtRA" annotatedElement="_UYsplfoAEdu-e7JlHBQtRA">
+ <body>A receive operation event specifies the event of receiving an operation invocation for a particular operation by the target entity.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspl_oAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspmPoAEdu-e7JlHBQtRA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UY2aEPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspmfoAEdu-e7JlHBQtRA" annotatedElement="_UYspmPoAEdu-e7JlHBQtRA">
+ <body>The operation associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspmvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspm_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYspnPoAEdu-e7JlHBQtRA" name="ReceiveSignalEvent">
+ <ownedComment xmi:id="_UYspnfoAEdu-e7JlHBQtRA" annotatedElement="_UYspnPoAEdu-e7JlHBQtRA">
+ <body>A receive signal event specifies the event of receiving a signal by the target entity.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYspnvoAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYspn_oAEdu-e7JlHBQtRA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_UY2aFPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYspoPoAEdu-e7JlHBQtRA" annotatedElement="_UYspn_oAEdu-e7JlHBQtRA">
+ <body>The signal associated with this event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYspofoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYspovoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Y_jskGvtEdqG6fBIPwe-mw" name="MessageKind">
+ <ownedComment xmi:id="_UYspo_oAEdu-e7JlHBQtRA" annotatedElement="_Y_jskGvtEdqG6fBIPwe-mw">
+ <body>This is an enumerated type that identifies the type of message.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UYsppPoAEdu-e7JlHBQtRA" name="complete">
+ <ownedComment xmi:id="_UYsppfoAEdu-e7JlHBQtRA" annotatedElement="_UYsppPoAEdu-e7JlHBQtRA">
+ <body>sendEvent and receiveEvent are present</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UYsppvoAEdu-e7JlHBQtRA" name="lost">
+ <ownedComment xmi:id="_UYspp_oAEdu-e7JlHBQtRA" annotatedElement="_UYsppvoAEdu-e7JlHBQtRA">
+ <body>sendEvent present and receiveEvent absent</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UYspqPoAEdu-e7JlHBQtRA" name="found">
+ <ownedComment xmi:id="_UYspqfoAEdu-e7JlHBQtRA" annotatedElement="_UYspqPoAEdu-e7JlHBQtRA">
+ <body>sendEvent absent and receiveEvent present</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UYspqvoAEdu-e7JlHBQtRA" name="unknown">
+ <ownedComment xmi:id="_UYspq_oAEdu-e7JlHBQtRA" annotatedElement="_UYspqvoAEdu-e7JlHBQtRA">
+ <body>sendEvent and receiveEvent absent (should not appear)</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UY2ZoPoAEdu-e7JlHBQtRA" name="MessageSort">
+ <ownedComment xmi:id="_UY2ZofoAEdu-e7JlHBQtRA" annotatedElement="_UY2ZoPoAEdu-e7JlHBQtRA">
+ <body>This is an enumerated type that identifies the type of communication action that was used to generate the message.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UY2ZovoAEdu-e7JlHBQtRA" name="synchCall">
+ <ownedComment xmi:id="_UY2Zo_oAEdu-e7JlHBQtRA" annotatedElement="_UY2ZovoAEdu-e7JlHBQtRA">
+ <body>The message was generated by a synchronous call to an operation.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UY2ZpPoAEdu-e7JlHBQtRA" name="asynchCall">
+ <ownedComment xmi:id="_UY2ZpfoAEdu-e7JlHBQtRA" annotatedElement="_UY2ZpPoAEdu-e7JlHBQtRA">
+ <body>The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous&#xD;
+= false.&#xD;
+</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UY2ZpvoAEdu-e7JlHBQtRA" name="asynchSignal">
+ <ownedComment xmi:id="_UY2Zp_oAEdu-e7JlHBQtRA" annotatedElement="_UY2ZpvoAEdu-e7JlHBQtRA">
+ <body>The message was generated by an asynchronous send action.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UY2ZqPoAEdu-e7JlHBQtRA" name="createMessage">
+ <ownedComment xmi:id="_UY2ZqfoAEdu-e7JlHBQtRA" annotatedElement="_UY2ZqPoAEdu-e7JlHBQtRA">
+ <body>The message designating the creation of another lifeline object.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UY2ZqvoAEdu-e7JlHBQtRA" name="deleteMessage">
+ <ownedComment xmi:id="_UY2Zq_oAEdu-e7JlHBQtRA" annotatedElement="_UY2ZqvoAEdu-e7JlHBQtRA">
+ <body>The message designating the termination of another lifeline.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UY2ZrPoAEdu-e7JlHBQtRA" name="reply">
+ <ownedComment xmi:id="_UY2ZrfoAEdu-e7JlHBQtRA" annotatedElement="_UY2ZrPoAEdu-e7JlHBQtRA">
+ <body>The message is a reply message to an operation call.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZrvoAEdu-e7JlHBQtRA" name="A_covered_coveredBy" memberEnd="_UYso2foAEdu-e7JlHBQtRA _UYsoxvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2Zr_oAEdu-e7JlHBQtRA" annotatedElement="_UY2ZrvoAEdu-e7JlHBQtRA">
+ <body>This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use.</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZsPoAEdu-e7JlHBQtRA" name="A_executionSpecification_start" memberEnd="_UY2ZsvoAEdu-e7JlHBQtRA _UYspK_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2ZsfoAEdu-e7JlHBQtRA" annotatedElement="_UY2ZsPoAEdu-e7JlHBQtRA">
+ <body>The event shows the time point at which the action begins execution.</body>
+ </ownedComment>
+ <ownedEnd xmi:id="_UY2ZsvoAEdu-e7JlHBQtRA" type="_UYspJfoAEdu-e7JlHBQtRA" association="_UY2ZsPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Zs_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2ZtPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZtfoAEdu-e7JlHBQtRA" name="A_executionSpecification_finish" memberEnd="_UY2Zt_oAEdu-e7JlHBQtRA _UYspL_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2ZtvoAEdu-e7JlHBQtRA" annotatedElement="_UY2ZtfoAEdu-e7JlHBQtRA">
+ <body>The event shows the time point at which the action completes execution.</body>
+ </ownedComment>
+ <ownedEnd xmi:id="_UY2Zt_oAEdu-e7JlHBQtRA" type="_UYspJfoAEdu-e7JlHBQtRA" association="_UY2ZtfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2ZuPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2ZufoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZuvoAEdu-e7JlHBQtRA" name="A_lifeline_represents" memberEnd="_UY2ZvPoAEdu-e7JlHBQtRA _UYsoyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2Zu_oAEdu-e7JlHBQtRA" annotatedElement="_UY2ZuvoAEdu-e7JlHBQtRA">
+ <body>If a Part has multiplicity, multiple lifelines might be used to show it.</body>
+ </ownedComment>
+ <ownedEnd xmi:id="_UY2ZvPoAEdu-e7JlHBQtRA" type="_UYsouvoAEdu-e7JlHBQtRA" association="_UY2ZuvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2ZvfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2ZvvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Zv_oAEdu-e7JlHBQtRA" name="A_lifeline_interaction" memberEnd="_UYsoqvoAEdu-e7JlHBQtRA _UYsozvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZwPoAEdu-e7JlHBQtRA" name="A_receiveEvent_message" memberEnd="_UYspAvoAEdu-e7JlHBQtRA _UY2ZwfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2ZwfoAEdu-e7JlHBQtRA" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UY2ZwPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2ZwvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Zw_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZxPoAEdu-e7JlHBQtRA" name="A_sendEvent_message" memberEnd="_UYspBvoAEdu-e7JlHBQtRA _UY2ZxfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2ZxfoAEdu-e7JlHBQtRA" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UY2ZxPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2ZxvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Zx_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZyPoAEdu-e7JlHBQtRA" name="A_events_covered" memberEnd="_UY2ZyfoAEdu-e7JlHBQtRA _UYspNvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2ZyfoAEdu-e7JlHBQtRA" name="events" type="_UYspM_oAEdu-e7JlHBQtRA" isOrdered="true" association="_UY2ZyPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2ZyvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Zy_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2ZzPoAEdu-e7JlHBQtRA" name="A_selector_lifeline" memberEnd="_UYso0voAEdu-e7JlHBQtRA _UY2ZzfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2ZzfoAEdu-e7JlHBQtRA" type="_UYsouvoAEdu-e7JlHBQtRA" association="_UY2ZzPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2ZzvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Zz_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z0PoAEdu-e7JlHBQtRA" name="A_connector_message" memberEnd="_UYspCvoAEdu-e7JlHBQtRA _UY2Z0foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z0foAEdu-e7JlHBQtRA" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UY2Z0PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z0voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z0_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z1PoAEdu-e7JlHBQtRA" name="A_message_interaction" memberEnd="_UYsorvoAEdu-e7JlHBQtRA _UYspDvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z1foAEdu-e7JlHBQtRA" name="A_before_toAfter" memberEnd="_UYspHfoAEdu-e7JlHBQtRA _UYspOvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z1voAEdu-e7JlHBQtRA" name="A_toBefore_after" memberEnd="_UYspPvoAEdu-e7JlHBQtRA _UYspIfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z1_oAEdu-e7JlHBQtRA" name="A_argument_message" memberEnd="_UYspEvoAEdu-e7JlHBQtRA _UY2Z2PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z2PoAEdu-e7JlHBQtRA" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UY2Z1_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z2foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z2voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z2_oAEdu-e7JlHBQtRA" name="A_invariant_stateInvariant" memberEnd="_UYspUPoAEdu-e7JlHBQtRA _UY2Z3PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z3PoAEdu-e7JlHBQtRA" type="_UYspTfoAEdu-e7JlHBQtRA" association="_UY2Z2_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z3voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z3_oAEdu-e7JlHBQtRA" name="A_stateInvariant_covered" memberEnd="_UY2Z4PoAEdu-e7JlHBQtRA _UYspVPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z4PoAEdu-e7JlHBQtRA" name="stateInvariant" type="_UYspTfoAEdu-e7JlHBQtRA" association="_UY2Z3_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z4foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z4voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z4_oAEdu-e7JlHBQtRA" name="A_generalOrdering_interactionFragment" memberEnd="_UYso3foAEdu-e7JlHBQtRA _UY2Z5PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z5PoAEdu-e7JlHBQtRA" type="_UYso1voAEdu-e7JlHBQtRA" association="_UY2Z4_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z5foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z5voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z5_oAEdu-e7JlHBQtRA" name="A_enclosingInteraction_fragment" memberEnd="_UYso4foAEdu-e7JlHBQtRA _UYsosvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z6PoAEdu-e7JlHBQtRA" name="A_behavior_behaviorExecutionSpecification" memberEnd="_UYspZfoAEdu-e7JlHBQtRA _UY2Z6foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z6foAEdu-e7JlHBQtRA" type="_UYspYvoAEdu-e7JlHBQtRA" association="_UY2Z6PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z6voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z6_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z7PoAEdu-e7JlHBQtRA" name="A_action_actionExecutionSpecification" memberEnd="_UYspXvoAEdu-e7JlHBQtRA _UY2Z7foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z7foAEdu-e7JlHBQtRA" type="_UYspWPoAEdu-e7JlHBQtRA" association="_UY2Z7PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z7voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z7_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z8PoAEdu-e7JlHBQtRA" name="A_signature_message" memberEnd="_UYspFvoAEdu-e7JlHBQtRA _UY2Z8foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z8foAEdu-e7JlHBQtRA" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UY2Z8PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z8voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z8_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z9PoAEdu-e7JlHBQtRA" name="A_operation_sendOperationEvent" memberEnd="_UYspe_oAEdu-e7JlHBQtRA _UY2Z9foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z9foAEdu-e7JlHBQtRA" type="_UYspePoAEdu-e7JlHBQtRA" association="_UY2Z9PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z9voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z9_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z-PoAEdu-e7JlHBQtRA" name="A_signal_sendSignalEvent" memberEnd="_UYspgvoAEdu-e7JlHBQtRA _UY2Z-foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z-foAEdu-e7JlHBQtRA" type="_UYspf_oAEdu-e7JlHBQtRA" association="_UY2Z-PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z-voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z-_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2Z_PoAEdu-e7JlHBQtRA" name="A_message_messageEnd" memberEnd="_UYspSfoAEdu-e7JlHBQtRA _UY2Z_foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2Z_foAEdu-e7JlHBQtRA" type="_UYspRvoAEdu-e7JlHBQtRA" association="_UY2Z_PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2Z_voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2Z__oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2aAPoAEdu-e7JlHBQtRA" name="A_event_occurrenceSpecification" memberEnd="_UYspQvoAEdu-e7JlHBQtRA _UY2aAfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2aAfoAEdu-e7JlHBQtRA" type="_UYspM_oAEdu-e7JlHBQtRA" association="_UY2aAPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aAvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aA_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2aBPoAEdu-e7JlHBQtRA" name="A_action_interaction" memberEnd="_UYsotvoAEdu-e7JlHBQtRA _UY2aBfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2aBfoAEdu-e7JlHBQtRA" type="_UYsopvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UY2aBPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aBvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aB_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2aCPoAEdu-e7JlHBQtRA" name="A_execution_executionOccurrenceSpecification" memberEnd="_UYspjfoAEdu-e7JlHBQtRA _UY2aCfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2aCfoAEdu-e7JlHBQtRA" type="_UYspivoAEdu-e7JlHBQtRA" association="_UY2aCPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aCvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aC_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2aDPoAEdu-e7JlHBQtRA" name="A_event_executionOccurrenceSpecification" memberEnd="_UYspkfoAEdu-e7JlHBQtRA _UY2aDfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2aDfoAEdu-e7JlHBQtRA" type="_UYspivoAEdu-e7JlHBQtRA" association="_UY2aDPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aDvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aD_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2aEPoAEdu-e7JlHBQtRA" name="A_operation_receiveOperationEvent" memberEnd="_UYspmPoAEdu-e7JlHBQtRA _UY2aEfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2aEfoAEdu-e7JlHBQtRA" type="_UYsplfoAEdu-e7JlHBQtRA" association="_UY2aEPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aEvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aE_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UY2aFPoAEdu-e7JlHBQtRA" name="A_signal_receiveSignalEvent" memberEnd="_UYspn_oAEdu-e7JlHBQtRA _UY2aFfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UY2aFfoAEdu-e7JlHBQtRA" type="_UYspnPoAEdu-e7JlHBQtRA" association="_UY2aFPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aFvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aF_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UY2aGvoAEdu-e7JlHBQtRA" name="Actor">
+ <ownedComment xmi:id="_UY2aG_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aGvoAEdu-e7JlHBQtRA">
+ <body>An actor specifies a role played by a user or any other system that interacts with the subject.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UY2aHPoAEdu-e7JlHBQtRA" name="associations" constrainedElement="_UY2aGvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aHfoAEdu-e7JlHBQtRA" annotatedElement="_UY2aHPoAEdu-e7JlHBQtRA">
+ <body>An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aHvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.ownedAttribute->forAll ( a |&#xA;(a.association->notEmpty()) implies&#xA;((a.association.memberEnd.size() = 2) and&#xA;(a.opposite.class.oclIsKindOf(UseCase) or&#xA;(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UY2aH_oAEdu-e7JlHBQtRA" name="must_have_name" constrainedElement="_UY2aGvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aIPoAEdu-e7JlHBQtRA" annotatedElement="_UY2aH_oAEdu-e7JlHBQtRA">
+ <body>An actor must have a name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aIfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>name->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UY2aIvoAEdu-e7JlHBQtRA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UY2aI_oAEdu-e7JlHBQtRA" name="Extend">
+ <ownedComment xmi:id="_UY2aJPoAEdu-e7JlHBQtRA" annotatedElement="_UY2aI_oAEdu-e7JlHBQtRA">
+ <body>A relationship from an extending use case to an extended use case that specifies how and when the behavior defined in the extending use case can be inserted into the behavior defined in the extended use case.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UY2aJfoAEdu-e7JlHBQtRA" name="extension_points" constrainedElement="_UY2aI_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aJvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aJfoAEdu-e7JlHBQtRA">
+ <body>The extension points referenced by the extend relationship must belong to the use case that is being extended.&#xD;
+&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aJ_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UY2aKPoAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <generalization xmi:id="_UY2aKfoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UY2aKvoAEdu-e7JlHBQtRA" name="extendedCase" type="_UY2aRvoAEdu-e7JlHBQtRA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UZAKpfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aK_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aKvoAEdu-e7JlHBQtRA">
+ <body>References the use case that is being extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aLPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aLfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aLvoAEdu-e7JlHBQtRA" name="extension" type="_UY2aRvoAEdu-e7JlHBQtRA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA" association="_UZAKqfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aL_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aLvoAEdu-e7JlHBQtRA">
+ <body>References the use case that represents the extension and owns the extend relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aMPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aMfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aMvoAEdu-e7JlHBQtRA" name="condition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZAKq_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aM_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aMvoAEdu-e7JlHBQtRA">
+ <body>References the condition that must hold when the first extension point is reached for the extension to take place. If no constraint is associated with the extend relationship, the extension is unconditional.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aNPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aNfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aNvoAEdu-e7JlHBQtRA" name="extensionLocation" type="_UY2abPoAEdu-e7JlHBQtRA" isOrdered="true" association="_UZAKr_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aN_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aNvoAEdu-e7JlHBQtRA">
+ <body>An ordered list of extension points belonging to the extended use case, specifying where the respective behavioral fragments of the extending use case are to be inserted. The first fragment in the extending use case is associated with the first extension point in the list, the second fragment with the second point, and so on. (Note that, in most practical cases, the extending use case has just a single behavior fragment, so that the list of extension points is trivial.)&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aOPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aOfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UY2aOvoAEdu-e7JlHBQtRA" name="Include">
+ <ownedComment xmi:id="_UY2aO_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aOvoAEdu-e7JlHBQtRA">
+ <body>An include relationship defines that a use case contains the behavior defined in another use case.</body>
+ </ownedComment>
+ <generalization xmi:id="_UY2aPPoAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <generalization xmi:id="_UY2aPfoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UY2aPvoAEdu-e7JlHBQtRA" name="includingCase" type="_UY2aRvoAEdu-e7JlHBQtRA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA" association="_UZAKoPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aP_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aPvoAEdu-e7JlHBQtRA">
+ <body>References the use case which will include the addition and owns the include relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aQPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aQfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aQvoAEdu-e7JlHBQtRA" name="addition" type="_UY2aRvoAEdu-e7JlHBQtRA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UZAKofoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aQ_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aQvoAEdu-e7JlHBQtRA">
+ <body>References the use case that is to be included.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aRPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aRfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UY2aRvoAEdu-e7JlHBQtRA" name="UseCase">
+ <ownedComment xmi:id="_UY2aR_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aRvoAEdu-e7JlHBQtRA">
+ <body>A use case is the specification of a set of actions performed by a system, which yields an observable result that is, typically, of value for one or more actors or other stakeholders of the system.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UY2aSPoAEdu-e7JlHBQtRA" name="must_have_name" constrainedElement="_UY2aRvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aSfoAEdu-e7JlHBQtRA" annotatedElement="_UY2aSPoAEdu-e7JlHBQtRA">
+ <body>A UseCase must have a name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aSvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.name -> notEmpty ()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UY2aS_oAEdu-e7JlHBQtRA" name="binary_associations" constrainedElement="_UY2aRvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aTPoAEdu-e7JlHBQtRA" annotatedElement="_UY2aS_oAEdu-e7JlHBQtRA">
+ <body>UseCases can only be involved in binary Associations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aTfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UY2aTvoAEdu-e7JlHBQtRA" name="no_association_to_use_case" constrainedElement="_UY2aRvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aT_oAEdu-e7JlHBQtRA" annotatedElement="_UY2aTvoAEdu-e7JlHBQtRA">
+ <body>UseCases can not have Associations to UseCases specifying the same subject.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aUPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UY2aUfoAEdu-e7JlHBQtRA" name="cannot_include_self" constrainedElement="_UY2aRvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aUvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aUfoAEdu-e7JlHBQtRA">
+ <body>A use case cannot include use cases that directly or indirectly include it.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aU_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.allIncludedUseCases()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UY2aVPoAEdu-e7JlHBQtRA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UY2aVfoAEdu-e7JlHBQtRA" name="include" type="_UY2aOvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZAKoPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aVvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aVfoAEdu-e7JlHBQtRA">
+ <body>References the Include relationships owned by this use case.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aV_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aWPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aWfoAEdu-e7JlHBQtRA" name="extend" type="_UY2aI_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZAKqfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aWvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aWfoAEdu-e7JlHBQtRA">
+ <body>References the Extend relationships owned by this use case.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aW_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aXPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aXfoAEdu-e7JlHBQtRA" name="extensionPoint" type="_UY2abPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZAKqvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aXvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aXfoAEdu-e7JlHBQtRA">
+ <body>References the ExtensionPoints owned by the use case.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aX_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aYPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2aYfoAEdu-e7JlHBQtRA" name="subject" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UZAKt_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aYvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aYfoAEdu-e7JlHBQtRA">
+ <body>References the subjects to which this use case applies. The subject or its parts realize all the use cases that apply to this subject. Use cases need not be attached to any specific subject, however. The subject may, but need not, own the use cases that apply to it.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aY_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aZPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UY2aZfoAEdu-e7JlHBQtRA" name="allIncludedUseCases" isQuery="true" bodyCondition="_UY2aZ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aZvoAEdu-e7JlHBQtRA" annotatedElement="_UY2aZfoAEdu-e7JlHBQtRA">
+ <body>The query allIncludedUseCases() returns the transitive closure of all use cases (directly or indirectly) included by this use case.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UY2aZ_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UY2aZfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2aaPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.include->union(self.include->collect(in | in.allIncludedUseCases()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UY2aafoAEdu-e7JlHBQtRA" type="_UY2aRvoAEdu-e7JlHBQtRA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aavoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aa_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UY2abPoAEdu-e7JlHBQtRA" name="ExtensionPoint">
+ <ownedComment xmi:id="_UY2abfoAEdu-e7JlHBQtRA" annotatedElement="_UY2abPoAEdu-e7JlHBQtRA">
+ <body>An extension point identifies a point in the behavior of a use case where that behavior can be extended by the behavior of some other (extending) use case, as specified by an extend relationship.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UY2abvoAEdu-e7JlHBQtRA" name="must_have_name" constrainedElement="_UY2abPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2ab_oAEdu-e7JlHBQtRA" annotatedElement="_UY2abvoAEdu-e7JlHBQtRA">
+ <body>An ExtensionPoint must have a name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UY2acPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.name->notEmpty ()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UY2acfoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UY2acvoAEdu-e7JlHBQtRA" name="useCase" type="_UY2aRvoAEdu-e7JlHBQtRA" association="_UZAKqvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2ac_oAEdu-e7JlHBQtRA" annotatedElement="_UY2acvoAEdu-e7JlHBQtRA">
+ <body>References the use case that owns this extension point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2adPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2adfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKoPoAEdu-e7JlHBQtRA" name="A_includingCase_include" memberEnd="_UY2aPvoAEdu-e7JlHBQtRA _UY2aVfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKofoAEdu-e7JlHBQtRA" name="A_addition_include" memberEnd="_UY2aQvoAEdu-e7JlHBQtRA _UZAKovoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZAKovoAEdu-e7JlHBQtRA" type="_UY2aOvoAEdu-e7JlHBQtRA" association="_UZAKofoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKo_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKpPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKpfoAEdu-e7JlHBQtRA" name="A_extendedCase_extend" memberEnd="_UY2aKvoAEdu-e7JlHBQtRA _UZAKpvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZAKpvoAEdu-e7JlHBQtRA" type="_UY2aI_oAEdu-e7JlHBQtRA" association="_UZAKpfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKp_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKqPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKqfoAEdu-e7JlHBQtRA" name="A_extension_extend" memberEnd="_UY2aLvoAEdu-e7JlHBQtRA _UY2aWfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKqvoAEdu-e7JlHBQtRA" name="A_extensionPoint_useCase" memberEnd="_UY2aXfoAEdu-e7JlHBQtRA _UY2acvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKq_oAEdu-e7JlHBQtRA" name="A_condition_extend" memberEnd="_UY2aMvoAEdu-e7JlHBQtRA _UZAKrPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZAKrPoAEdu-e7JlHBQtRA" type="_UY2aI_oAEdu-e7JlHBQtRA" association="_UZAKq_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKrfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKrvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKr_oAEdu-e7JlHBQtRA" name="A_extensionLocation_extension" memberEnd="_UY2aNvoAEdu-e7JlHBQtRA _UZAKsPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZAKsPoAEdu-e7JlHBQtRA" name="extension" type="_UY2aI_oAEdu-e7JlHBQtRA" association="_UZAKr_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKsfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKsvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKs_oAEdu-e7JlHBQtRA" name="A_ownedUseCase_classifier" memberEnd="_UY2ad_oAEdu-e7JlHBQtRA _UZAKtPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZAKtPoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UZAKs_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKtfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKtvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZAKt_oAEdu-e7JlHBQtRA" name="A_subject_useCase" memberEnd="_UY2aYfoAEdu-e7JlHBQtRA _UY2ae_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZAKvvoAEdu-e7JlHBQtRA" name="CallEvent">
+ <ownedComment xmi:id="_UZAKv_oAEdu-e7JlHBQtRA" annotatedElement="_UZAKvvoAEdu-e7JlHBQtRA">
+ <body>A call event models the receipt by an object of a message invoking a call of an operation.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZAKwPoAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZAKwfoAEdu-e7JlHBQtRA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_UZALHfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAKwvoAEdu-e7JlHBQtRA" annotatedElement="_UZAKwfoAEdu-e7JlHBQtRA">
+ <body>Designates the operation whose invocation raised the call event.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKw_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKxPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZAKxfoAEdu-e7JlHBQtRA" name="ChangeEvent">
+ <ownedComment xmi:id="_UZAKxvoAEdu-e7JlHBQtRA" annotatedElement="_UZAKxfoAEdu-e7JlHBQtRA">
+ <body>A change event models a change in the system configuration that makes a condition true.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZAKx_oAEdu-e7JlHBQtRA" general="_UZALDfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZAKyPoAEdu-e7JlHBQtRA" name="changeExpression" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZJUlPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAKyfoAEdu-e7JlHBQtRA" annotatedElement="_UZAKyPoAEdu-e7JlHBQtRA">
+ <body>A Boolean-valued expression that will result in a change event whenever its value changes from false to true.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKyvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKy_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZAK5PoAEdu-e7JlHBQtRA" name="Reception">
+ <ownedComment xmi:id="_UZAK5foAEdu-e7JlHBQtRA" annotatedElement="_UZAK5PoAEdu-e7JlHBQtRA">
+ <body>A reception is a declaration stating that a classifier is prepared to react to the receipt of a signal. A reception designates a signal and specifies the expected behavioral response. The details of handling a signal are specified by the behavior associated with the reception or the classifier itself.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZAK5voAEdu-e7JlHBQtRA" name="not_query" constrainedElement="_UZAK5PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK5_oAEdu-e7JlHBQtRA" annotatedElement="_UZAK5voAEdu-e7JlHBQtRA">
+ <body>A Reception can not be a query.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZAK6PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.isQuery</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZAK6foAEdu-e7JlHBQtRA" general="_rHT3YKOsEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UZAK6voAEdu-e7JlHBQtRA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_UZALGfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK6_oAEdu-e7JlHBQtRA" annotatedElement="_UZAK6voAEdu-e7JlHBQtRA">
+ <body>The signal that this reception handles.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAK7PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAK7foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Pu3O0HL0EdqziYxiZo0YtA" name="Signal">
+ <ownedComment xmi:id="_UZAK7voAEdu-e7JlHBQtRA" annotatedElement="_Pu3O0HL0EdqziYxiZo0YtA">
+ <body>A signal is a specification of send request instances communicated between objects. The receiving object handles the received request instances as specified by its receptions. The data carried by a send request (which was passed to it by the send invocation occurrence that caused that request) are represented as attributes of the signal. A signal is defined independently of the classifiers handling the signal occurrence.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZAK7_oAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UZAK8PoAEdu-e7JlHBQtRA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYifoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UZJUmvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK8foAEdu-e7JlHBQtRA" annotatedElement="_UZAK8PoAEdu-e7JlHBQtRA">
+ <body>The attributes owned by the signal.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAK8voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAK8_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_YIM4UHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_MBen4OwmEdqYHf-imTcTdw" annotatedElement="_YIM4UHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YIM4UXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_YIM4UnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_zWJHkPIFEdulR8T2OJRyFQ" annotatedElement="_YIM4UnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RAjsaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5RAjsKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YIM4U3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_1J7ZYPIFEdulR8T2OJRyFQ" annotatedElement="_YIM4U3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7g9NEaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7g9NEKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YIM4VHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_whrb4PIFEdulR8T2OJRyFQ" annotatedElement="_YIM4VHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YIM4VXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_xbf_0PIFEdulR8T2OJRyFQ" annotatedElement="_YIM4VXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZAK9PoAEdu-e7JlHBQtRA" name="SignalEvent">
+ <ownedComment xmi:id="_UZAK9foAEdu-e7JlHBQtRA" annotatedElement="_UZAK9PoAEdu-e7JlHBQtRA">
+ <body>A signal event represents the receipt of an asynchronous signal instance. A signal event may, for example, cause a state machine to trigger a transition.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZAK9voAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZAK9_oAEdu-e7JlHBQtRA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_UZALIfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK-PoAEdu-e7JlHBQtRA" annotatedElement="_UZAK9_oAEdu-e7JlHBQtRA">
+ <body>The specific signal that is associated with this event.</body>
+ </ownedComment>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZALA_oAEdu-e7JlHBQtRA" name="MessageEvent" isAbstract="true">
+ <ownedComment xmi:id="_UZALBPoAEdu-e7JlHBQtRA" annotatedElement="_UZALA_oAEdu-e7JlHBQtRA">
+ <body>A message event specifies the receipt by an object of either a call or a signal.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZALBfoAEdu-e7JlHBQtRA" general="_UZALDfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZALBvoAEdu-e7JlHBQtRA" name="AnyReceiveEvent">
+ <ownedComment xmi:id="_UZALB_oAEdu-e7JlHBQtRA" annotatedElement="_UZALBvoAEdu-e7JlHBQtRA">
+ <body>A transition trigger associated with an any receive event specifies that the transition is to be triggered by the receipt of any message that is not explicitly referenced in another transition from the same vertex.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZALCPoAEdu-e7JlHBQtRA" general="_UZALA_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iY7sMGvsEdqG6fBIPwe-mw" name="BehavioredClassifier" isAbstract="true">
+ <ownedComment xmi:id="_UYQkHvoAEdu-e7JlHBQtRA" annotatedElement="_iY7sMGvsEdqG6fBIPwe-mw">
+ <body>A behaviored classifier may have an interface realization.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UXqG__oAEdu-e7JlHBQtRA" annotatedElement="_iY7sMGvsEdqG6fBIPwe-mw">
+ <body>A classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXqHAPoAEdu-e7JlHBQtRA" name="class_behavior" constrainedElement="_iY7sMGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UXqHAfoAEdu-e7JlHBQtRA" annotatedElement="_UXqHAPoAEdu-e7JlHBQtRA">
+ <body>If a behavior is classifier behavior, it does not have a specification.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqHAvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.classifierBehavior.notEmpty() implies self.specification.isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXqHA_oAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UXqHBPoAEdu-e7JlHBQtRA" name="ownedBehavior" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UXz36voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqHBfoAEdu-e7JlHBQtRA" annotatedElement="_UXqHBPoAEdu-e7JlHBQtRA">
+ <body>References behavior specifications owned by a classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqHBvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqHB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqHCPoAEdu-e7JlHBQtRA" name="classifierBehavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_UXqHBPoAEdu-e7JlHBQtRA" association="_UXz37voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqHCfoAEdu-e7JlHBQtRA" annotatedElement="_UXqHCPoAEdu-e7JlHBQtRA">
+ <body>A behavior specification that specifies the behavior of the classifier itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqHCvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqHC_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQkIPoAEdu-e7JlHBQtRA" name="interfaceRealization" type="_l2mXcHLzEdqziYxiZo0YtA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA _UYQj6PoAEdu-e7JlHBQtRA" association="_UYZtufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkIfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkIPoAEdu-e7JlHBQtRA">
+ <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="_UYQkIvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkI_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZALCfoAEdu-e7JlHBQtRA" name="ownedTrigger" type="_UZAK2PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZJUnvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZALCvoAEdu-e7JlHBQtRA" annotatedElement="_UZALCfoAEdu-e7JlHBQtRA">
+ <body>References Trigger descriptions owned by a Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZALC_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZALDPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_dx6lQK69EdqjppZik4kD8A" name="getImplementedInterfaces">
+ <ownedComment xmi:id="_5-ADEOwfEdqYHf-imTcTdw" annotatedElement="_dx6lQK69EdqjppZik4kD8A">
+ <body>Retrieves the interfaces on which this behaviored classifier has an interface realization dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_gSQbEK69EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iwNEMa69EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iwNEMK69EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lbuPQK69EdqjppZik4kD8A" name="getAllImplementedInterfaces">
+ <ownedComment xmi:id="_-G81cOwfEdqYHf-imTcTdw" annotatedElement="_lbuPQK69EdqjppZik4kD8A">
+ <body>Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lbuPQa69EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lbuPQq69EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lbuPQ669EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZALDfoAEdu-e7JlHBQtRA" name="Event" isAbstract="true">
+ <ownedComment xmi:id="_UZALDvoAEdu-e7JlHBQtRA" annotatedElement="_UZALDfoAEdu-e7JlHBQtRA">
+ <body>An event is the specification of some occurrence that may potentially trigger effects by an object.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZALD_oAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UZALEfoAEdu-e7JlHBQtRA" name="CallConcurrencyKind">
+ <ownedComment xmi:id="_UZALEvoAEdu-e7JlHBQtRA" annotatedElement="_UZALEfoAEdu-e7JlHBQtRA">
+ <body>CallConcurrencyKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UZALE_oAEdu-e7JlHBQtRA" name="sequential">
+ <ownedComment xmi:id="_UZALFPoAEdu-e7JlHBQtRA" annotatedElement="_UZALE_oAEdu-e7JlHBQtRA">
+ <body>No concurrency management mechanism is associated with the operation and, therefore, concurrency conflicts may occur. Instances that invoke a behavioral feature need to coordinate so that only one invocation to a target on any behavioral feature occurs at once.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZALFfoAEdu-e7JlHBQtRA" name="guarded">
+ <ownedComment xmi:id="_UZALFvoAEdu-e7JlHBQtRA" annotatedElement="_UZALFfoAEdu-e7JlHBQtRA">
+ <body>Multiple invocations of a behavioral feature may occur simultaneously to one instance, but only one is allowed to commence. The others are blocked until the performance of the first behavioral feature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocks.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZALF_oAEdu-e7JlHBQtRA" name="concurrent">
+ <ownedComment xmi:id="_UZALGPoAEdu-e7JlHBQtRA" annotatedElement="_UZALF_oAEdu-e7JlHBQtRA">
+ <body>Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZALGfoAEdu-e7JlHBQtRA" name="A_reception_signal" memberEnd="_UZALGvoAEdu-e7JlHBQtRA _UZAK6voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZALGvoAEdu-e7JlHBQtRA" type="_UZAK5PoAEdu-e7JlHBQtRA" association="_UZALGfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZALG_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZALHPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZALHfoAEdu-e7JlHBQtRA" name="A_operation_callEvent" memberEnd="_UZAKwfoAEdu-e7JlHBQtRA _UZALHvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZALHvoAEdu-e7JlHBQtRA" type="_UZAKvvoAEdu-e7JlHBQtRA" association="_UZALHfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZALH_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZALIPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZALIfoAEdu-e7JlHBQtRA" name="A_signal_signalEvent" memberEnd="_UZAK9_oAEdu-e7JlHBQtRA _UZALIvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZALIvoAEdu-e7JlHBQtRA" type="_UZAK9PoAEdu-e7JlHBQtRA" association="_UZALIfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZALI_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZALJPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZALJfoAEdu-e7JlHBQtRA" name="A_ownedReception_interface" memberEnd="_UZAK4PoAEdu-e7JlHBQtRA _UZALJvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZALJvoAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" association="_UZALJfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZALJ_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZALKPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZALKfoAEdu-e7JlHBQtRA" name="A_ownedReception_class" memberEnd="_UZAK1PoAEdu-e7JlHBQtRA _UZALKvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZALKvoAEdu-e7JlHBQtRA" type="_00owUGvdEdq4DLWZOhbdEA" association="_UZALKfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZALK_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZALLPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZJUlPoAEdu-e7JlHBQtRA" name="A_changeExpression_changeEvent" memberEnd="_UZAKyPoAEdu-e7JlHBQtRA _UZJUlfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZJUlfoAEdu-e7JlHBQtRA" type="_UZAKxfoAEdu-e7JlHBQtRA" association="_UZJUlPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJUlvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJUl_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UUh6jvoAEdu-e7JlHBQtRA" name="A_raisedException_behavioralFeature" memberEnd="_UUO_3PoAEdu-e7JlHBQtRA _UUh6j_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UUh6j_oAEdu-e7JlHBQtRA" type="_rHT3YKOsEdqi_5gqUMOQtA" association="_UUh6jvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJUmPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJUmfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZJUmvoAEdu-e7JlHBQtRA" name="A_ownedAttribute_owningSignal" memberEnd="_UZAK8PoAEdu-e7JlHBQtRA _UZJUm_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZJUm_oAEdu-e7JlHBQtRA" name="owningSignal" type="_Pu3O0HL0EdqziYxiZo0YtA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA" association="_UZJUmvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJUnPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJUnfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZJUnvoAEdu-e7JlHBQtRA" name="A_ownedTrigger_behavioredClassifier" memberEnd="_UZALCfoAEdu-e7JlHBQtRA _UZJUn_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZJUn_oAEdu-e7JlHBQtRA" type="_iY7sMGvsEdqG6fBIPwe-mw" association="_UZJUnvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJUoPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJUofoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZJUovoAEdu-e7JlHBQtRA" name="A_event_trigger" memberEnd="_UZAK2_oAEdu-e7JlHBQtRA _UZJUo_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZJUo_oAEdu-e7JlHBQtRA" type="_UZAK2PoAEdu-e7JlHBQtRA" association="_UZJUovoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJUpPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJUpfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJUpvoAEdu-e7JlHBQtRA" name="ForkNode">
+ <ownedComment xmi:id="_UZJUp_oAEdu-e7JlHBQtRA" annotatedElement="_UZJUpvoAEdu-e7JlHBQtRA">
+ <body>A fork node is a control node that splits a flow into multiple concurrent flows.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZJUqPoAEdu-e7JlHBQtRA" name="one_incoming_edge" constrainedElement="_UZJUpvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUqfoAEdu-e7JlHBQtRA" annotatedElement="_UZJUqPoAEdu-e7JlHBQtRA">
+ <body>A fork node has one incoming edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZJUqvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJUq_oAEdu-e7JlHBQtRA" name="edges" constrainedElement="_UZJUpvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUrPoAEdu-e7JlHBQtRA" annotatedElement="_UZJUq_oAEdu-e7JlHBQtRA">
+ <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="_UZJUrfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZJUrvoAEdu-e7JlHBQtRA" general="_UYje-PoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJUr_oAEdu-e7JlHBQtRA" name="FlowFinalNode">
+ <ownedComment xmi:id="_UZJUsPoAEdu-e7JlHBQtRA" annotatedElement="_UZJUr_oAEdu-e7JlHBQtRA">
+ <body>A flow final node is a final node that terminates a flow.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZJUsfoAEdu-e7JlHBQtRA" general="_UZJVCPoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJUsvoAEdu-e7JlHBQtRA" name="CentralBufferNode">
+ <ownedComment xmi:id="_UZJUs_oAEdu-e7JlHBQtRA" annotatedElement="_UZJUsvoAEdu-e7JlHBQtRA">
+ <body>A central buffer node is an object node for managing flows from multiple sources and destinations.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZJUtPoAEdu-e7JlHBQtRA" general="_UYje7voAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJUtfoAEdu-e7JlHBQtRA" name="ActivityPartition">
+ <ownedComment xmi:id="_UZJUtvoAEdu-e7JlHBQtRA" annotatedElement="_UZJUtfoAEdu-e7JlHBQtRA">
+ <body>An activity partition is a kind of activity group for identifying actions that have some characteristic in common.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZJUt_oAEdu-e7JlHBQtRA" name="dimension_not_contained" constrainedElement="_UZJUtfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUuPoAEdu-e7JlHBQtRA" annotatedElement="_UZJUt_oAEdu-e7JlHBQtRA">
+ <body>A partition with isDimension = true may not be contained by another partition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZJUufoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJUuvoAEdu-e7JlHBQtRA" name="represents_part" constrainedElement="_UZJUtfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUu_oAEdu-e7JlHBQtRA" annotatedElement="_UZJUuvoAEdu-e7JlHBQtRA">
+ <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="_UZJUvPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJUvfoAEdu-e7JlHBQtRA" name="represents_classifier" constrainedElement="_UZJUtfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUvvoAEdu-e7JlHBQtRA" annotatedElement="_UZJUvfoAEdu-e7JlHBQtRA">
+ <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="_UZJUv_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJUwPoAEdu-e7JlHBQtRA" name="represents_part_and_is_contained" constrainedElement="_UZJUtfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUwfoAEdu-e7JlHBQtRA" annotatedElement="_UZJUwPoAEdu-e7JlHBQtRA">
+ <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="_UZJUwvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZJUw_oAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <generalization xmi:id="_UZJUxPoAEdu-e7JlHBQtRA" general="_UX9CWvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZJUxfoAEdu-e7JlHBQtRA" name="isDimension" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZJUxvoAEdu-e7JlHBQtRA" annotatedElement="_UZJUxfoAEdu-e7JlHBQtRA">
+ <body>Tells whether the partition groups other partitions along a dimension.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZJUx_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJUyPoAEdu-e7JlHBQtRA" name="isExternal" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZJUyfoAEdu-e7JlHBQtRA" annotatedElement="_UZJUyPoAEdu-e7JlHBQtRA">
+ <body>Tells whether the partition represents an entity to which the partitioning structure does not apply.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZJUyvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJUy_oAEdu-e7JlHBQtRA" name="edge" type="_UYje-_oAEdu-e7JlHBQtRA" subsettedProperty="_UYjfP_oAEdu-e7JlHBQtRA" association="_UZTFmPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJUzPoAEdu-e7JlHBQtRA" annotatedElement="_UZJUy_oAEdu-e7JlHBQtRA">
+ <body>Edges immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJUzfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJUzvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJUz_oAEdu-e7JlHBQtRA" name="node" type="_UX9Cb_oAEdu-e7JlHBQtRA" subsettedProperty="_UX9CXfoAEdu-e7JlHBQtRA" association="_UZTFmfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU0PoAEdu-e7JlHBQtRA" annotatedElement="_UZJUz_oAEdu-e7JlHBQtRA">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU0foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU0voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJU0_oAEdu-e7JlHBQtRA" name="subpartition" type="_UZJUtfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9CZfoAEdu-e7JlHBQtRA" association="_UZTFmvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU1PoAEdu-e7JlHBQtRA" annotatedElement="_UZJU0_oAEdu-e7JlHBQtRA">
+ <body>Partitions immediately contained in the partition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU1foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU1voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJU1_oAEdu-e7JlHBQtRA" name="superPartition" type="_UZJUtfoAEdu-e7JlHBQtRA" subsettedProperty="_UX9CafoAEdu-e7JlHBQtRA" association="_UZTFmvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU2PoAEdu-e7JlHBQtRA" annotatedElement="_UZJU1_oAEdu-e7JlHBQtRA">
+ <body>Partition immediately containing the partition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU2foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU2voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJU2_oAEdu-e7JlHBQtRA" name="represents" type="_kl90MGvbEdq4DLWZOhbdEA" association="_UZTFm_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU3PoAEdu-e7JlHBQtRA" annotatedElement="_UZJU2_oAEdu-e7JlHBQtRA">
+ <body>An element constraining behaviors invoked by nodes in the partition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU3voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJU7_oAEdu-e7JlHBQtRA" name="MergeNode">
+ <ownedComment xmi:id="_UZJU8PoAEdu-e7JlHBQtRA" annotatedElement="_UZJU7_oAEdu-e7JlHBQtRA">
+ <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="_UZJU8foAEdu-e7JlHBQtRA" name="one_outgoing_edge" constrainedElement="_UZJU7_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU8voAEdu-e7JlHBQtRA" annotatedElement="_UZJU8foAEdu-e7JlHBQtRA">
+ <body>A merge node has one outgoing edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZJU8_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJU9PoAEdu-e7JlHBQtRA" name="edges" constrainedElement="_UZJU7_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU9foAEdu-e7JlHBQtRA" annotatedElement="_UZJU9PoAEdu-e7JlHBQtRA">
+ <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="_UZJU9voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZJU9_oAEdu-e7JlHBQtRA" general="_UYje-PoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJU-PoAEdu-e7JlHBQtRA" name="DecisionNode">
+ <ownedComment xmi:id="_UZJU-foAEdu-e7JlHBQtRA" annotatedElement="_UZJU-PoAEdu-e7JlHBQtRA">
+ <body>A decision node is a control node that chooses between outgoing flows.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZJU-voAEdu-e7JlHBQtRA" name="one_incoming_edge" constrainedElement="_UZJU-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU-_oAEdu-e7JlHBQtRA" annotatedElement="_UZJU-voAEdu-e7JlHBQtRA">
+ <body>A decision node has one incoming edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZJU_PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJU_foAEdu-e7JlHBQtRA" name="input_parameter" constrainedElement="_UZJU-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU_voAEdu-e7JlHBQtRA" annotatedElement="_UZJU_foAEdu-e7JlHBQtRA">
+ <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="_UZJU__oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZJVAPoAEdu-e7JlHBQtRA" name="edges" constrainedElement="_UZJU-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJVAfoAEdu-e7JlHBQtRA" annotatedElement="_UZJVAPoAEdu-e7JlHBQtRA">
+ <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="_UZJVAvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZJVA_oAEdu-e7JlHBQtRA" general="_UYje-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZJVBPoAEdu-e7JlHBQtRA" name="decisionInput" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UZTFo_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJVBfoAEdu-e7JlHBQtRA" annotatedElement="_UZJVBPoAEdu-e7JlHBQtRA">
+ <body>Provides input to guard specifications on edges outgoing from the decision node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJVBvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJVB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJVCPoAEdu-e7JlHBQtRA" name="FinalNode" isAbstract="true">
+ <ownedComment xmi:id="_UZJVCfoAEdu-e7JlHBQtRA" annotatedElement="_UZJVCPoAEdu-e7JlHBQtRA">
+ <body>A final node is an abstract control node at which a flow in an activity stops.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZJVCvoAEdu-e7JlHBQtRA" name="no_outgoing_edges" constrainedElement="_UZJVCPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJVC_oAEdu-e7JlHBQtRA" annotatedElement="_UZJVCvoAEdu-e7JlHBQtRA">
+ <body>A final node has no outgoing edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZJVDPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZJVDfoAEdu-e7JlHBQtRA" general="_UYje-PoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjfM_oAEdu-e7JlHBQtRA" name="ActivityFinalNode">
+ <ownedComment xmi:id="_UYjfNPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfM_oAEdu-e7JlHBQtRA">
+ <body>An activity final node is a final node that stops all flows in an activity.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZJVDvoAEdu-e7JlHBQtRA" general="_UZJVCPoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFmPoAEdu-e7JlHBQtRA" name="A_edge_inPartition" memberEnd="_UZJUy_oAEdu-e7JlHBQtRA _UZJU3_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFmfoAEdu-e7JlHBQtRA" name="A_inPartition_node" memberEnd="_UZJU6foAEdu-e7JlHBQtRA _UZJUz_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFmvoAEdu-e7JlHBQtRA" name="A_subpartition_superPartition" memberEnd="_UZJU0_oAEdu-e7JlHBQtRA _UZJU1_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFm_oAEdu-e7JlHBQtRA" name="A_represents_activityPartition" memberEnd="_UZJU2_oAEdu-e7JlHBQtRA _UZTFnPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTFnPoAEdu-e7JlHBQtRA" type="_UZJUtfoAEdu-e7JlHBQtRA" association="_UZTFm_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFnfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFnvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFn_oAEdu-e7JlHBQtRA" name="A_activityEdge_guard" memberEnd="_UZTFoPoAEdu-e7JlHBQtRA _UZJU4_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTFoPoAEdu-e7JlHBQtRA" type="_UYje-_oAEdu-e7JlHBQtRA" association="_UZTFn_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFofoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFovoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFo_oAEdu-e7JlHBQtRA" name="A_decisionInput_decisionNode" memberEnd="_UZJVBPoAEdu-e7JlHBQtRA _UZTFpPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTFpPoAEdu-e7JlHBQtRA" type="_UZJU-PoAEdu-e7JlHBQtRA" association="_UZTFo_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFpfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFpvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTFp_oAEdu-e7JlHBQtRA" name="A_partition_activity" memberEnd="_UZTFkvoAEdu-e7JlHBQtRA _UZTFqPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTFqPoAEdu-e7JlHBQtRA" type="_UX9CTPoAEdu-e7JlHBQtRA" association="_UZTFp_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFqfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFqvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9CfPoAEdu-e7JlHBQtRA" name="A_group_inActivity" memberEnd="_UX9CVvoAEdu-e7JlHBQtRA _UX9CYfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZTFy_oAEdu-e7JlHBQtRA" name="EncapsulatedClassifier" isAbstract="true">
+ <ownedComment xmi:id="_UZTFzPoAEdu-e7JlHBQtRA" annotatedElement="_UZTFy_oAEdu-e7JlHBQtRA">
+ <body>A classifier has the ability to own ports as specific and type checked interaction points.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZTFzfoAEdu-e7JlHBQtRA" general="_FQiVsGwYEdqHKKVoxc0dlA"/>
+ <ownedAttribute xmi:id="_UZTFzvoAEdu-e7JlHBQtRA" name="ownedPort" type="_ZAuvEGveEdq4DLWZOhbdEA" isDerived="true" aggregation="composite" subsettedProperty="_UYZt7voAEdu-e7JlHBQtRA" association="_UZTF3_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTFz_oAEdu-e7JlHBQtRA" annotatedElement="_UZTFzvoAEdu-e7JlHBQtRA">
+ <body>References a set of ports that an encapsulated classifier owns.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF0PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF0foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTF3_oAEdu-e7JlHBQtRA" name="A_encapsulatedClassifier_ownedPort" memberEnd="_UZTF4PoAEdu-e7JlHBQtRA _UZTFzvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTF4PoAEdu-e7JlHBQtRA" type="_UZTFy_oAEdu-e7JlHBQtRA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UZTF3_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF4foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF4voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTF4_oAEdu-e7JlHBQtRA" name="A_required_port" memberEnd="_UZTFv_oAEdu-e7JlHBQtRA _UZTF5PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTF5PoAEdu-e7JlHBQtRA" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_UZTF4_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF5foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF5voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTF5_oAEdu-e7JlHBQtRA" name="A_redefinedPort_port" memberEnd="_UZTFw_oAEdu-e7JlHBQtRA _UZTF6PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTF6PoAEdu-e7JlHBQtRA" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_UZTF5_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF6foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF6voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTF6_oAEdu-e7JlHBQtRA" name="A_provided_port" memberEnd="_UZTFx_oAEdu-e7JlHBQtRA _UZTF7PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTF7PoAEdu-e7JlHBQtRA" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_UZTF6_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF7foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF7voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZTF7_oAEdu-e7JlHBQtRA" name="A_partWithPort_connectorEnd" memberEnd="_UZTF2_oAEdu-e7JlHBQtRA _UZTF8PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZTF8PoAEdu-e7JlHBQtRA" type="_aOgw0GveEdq4DLWZOhbdEA" association="_UZTF7_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF8foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF8voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc2rPoAEdu-e7JlHBQtRA" name="ComponentRealization">
+ <ownedComment xmi:id="_UZc2rfoAEdu-e7JlHBQtRA" annotatedElement="_UZc2rPoAEdu-e7JlHBQtRA">
+ <body>The realization concept is specialized to (optionally) define the classifiers that realize the contract offered by a component in terms of its provided and required interfaces. The component forms an abstraction from these various classifiers.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc2rvoAEdu-e7JlHBQtRA" general="_UYQj1foAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZc2r_oAEdu-e7JlHBQtRA" name="abstraction" type="_DAbfwa69EdqjppZik4kD8A" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA _UYQj0foAEdu-e7JlHBQtRA" association="_UZc23foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2sPoAEdu-e7JlHBQtRA" annotatedElement="_UZc2r_oAEdu-e7JlHBQtRA">
+ <body>The Component that owns this ComponentRealization and which is implemented by its realizing classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2sfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2svoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc2s_oAEdu-e7JlHBQtRA" name="realizingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UYQjzfoAEdu-e7JlHBQtRA" association="_UZc23voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2tPoAEdu-e7JlHBQtRA" annotatedElement="_UZc2s_oAEdu-e7JlHBQtRA">
+ <body>A classifier that is involved in the implementation of the Component that owns this ComponentRealization.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2tfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2tvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYZtz_oAEdu-e7JlHBQtRA" name="Connector">
+ <ownedComment xmi:id="_UYZt0PoAEdu-e7JlHBQtRA" annotatedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <body>Specifies a link that enables communication between two or more instances. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance. The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZc2t_oAEdu-e7JlHBQtRA" annotatedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <body>A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the internal realization of that behavior by the component's parts. It represents the forwarding of signals (operation requests and events): a signal that arrives at a port that has a delegation connector to a part or to another port will be passed on to that target for handling.&#xD;
+An assembly connector is a connector between two components that defines that one component provides the services that another component requires. An assembly connector is a connector that is defined from a required interface or port to a provided interface or port.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYZt0foAEdu-e7JlHBQtRA" name="types" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt0voAEdu-e7JlHBQtRA" annotatedElement="_UYZt0foAEdu-e7JlHBQtRA">
+ <body>The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYZt0_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYZt1PoAEdu-e7JlHBQtRA" name="compatible" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt1foAEdu-e7JlHBQtRA" annotatedElement="_UYZt1PoAEdu-e7JlHBQtRA">
+ <body>The connectable elements attached to the ends of a connector must be compatible.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYZt1voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYZt1_oAEdu-e7JlHBQtRA" name="roles" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt2PoAEdu-e7JlHBQtRA" annotatedElement="_UYZt1_oAEdu-e7JlHBQtRA">
+ <body>The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYZt2foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc2uPoAEdu-e7JlHBQtRA" name="between_interfaces_ports" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2ufoAEdu-e7JlHBQtRA" annotatedElement="_UZc2uPoAEdu-e7JlHBQtRA">
+ <body>A delegation connector must only be defined between used Interfaces or Ports of the same kind, e.g. between two provided Ports or between two required Ports.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2uvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc2u_oAEdu-e7JlHBQtRA" name="between_interface_port_implements" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2vPoAEdu-e7JlHBQtRA" annotatedElement="_UZc2u_oAEdu-e7JlHBQtRA">
+ <body>If a delegation connector is defined between a used Interface or Port and an internal Part Classifier, then that Classifier must have an 'implements' relationship to the Interface type of that Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2vfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc2vvoAEdu-e7JlHBQtRA" name="between_interface_port_signature" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2v_oAEdu-e7JlHBQtRA" annotatedElement="_UZc2vvoAEdu-e7JlHBQtRA">
+ <body>If a delegation connector is defined between a source Interface or Port and a target Interface or Port, then the target Interface must support a signature compatible subset of Operations of the source Interface or Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2wPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc2wfoAEdu-e7JlHBQtRA" name="union_signature_compatible" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2wvoAEdu-e7JlHBQtRA" annotatedElement="_UZc2wfoAEdu-e7JlHBQtRA">
+ <body>In a complete model, if a source Port has delegation connectors to a set of delegated target Ports, then the union of the Interfaces of these target Ports must be signature compatible with the Interface that types the source Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2w_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc2xPoAEdu-e7JlHBQtRA" name="assembly_connector" constrainedElement="_UYZtz_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2xfoAEdu-e7JlHBQtRA" annotatedElement="_UZc2xPoAEdu-e7JlHBQtRA">
+ <body>An assembly connector must only be defined from a required Interface or Ports to a provided Interface or Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2xvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYZt2voAEdu-e7JlHBQtRA" general="_UTyTcPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYZt2_oAEdu-e7JlHBQtRA" name="type" type="_AwvxoGwNEdq7X4sGURiZYA" association="_UYZuCPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt3PoAEdu-e7JlHBQtRA" annotatedElement="_UYZt2_oAEdu-e7JlHBQtRA">
+ <body>An optional association that specifies the link corresponding to this connector.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt3voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZt3_oAEdu-e7JlHBQtRA" name="redefinedConnector" type="_UYZtz_oAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UYZuHPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt4PoAEdu-e7JlHBQtRA" annotatedElement="_UYZt3_oAEdu-e7JlHBQtRA">
+ <body>A connector may be redefined when its containing classifier is specialized. The redefining connector may have a type that specializes the type of the redefined connector. The types of the connector ends of the redefining connector may specialize the types of the connector ends of the redefined connector. The properties of the connector ends of the redefining connector may be replaced.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt4foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt4voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZt4_oAEdu-e7JlHBQtRA" name="end" type="_aOgw0GveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UYZuIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZt5PoAEdu-e7JlHBQtRA" annotatedElement="_UYZt4_oAEdu-e7JlHBQtRA">
+ <body>A connector consists of at least two connector ends, each representing the participation of instances of the classifiers typing the connectable elements attached to this end. The set of connector ends is ordered.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZt5foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZt5voAEdu-e7JlHBQtRA" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc2x_oAEdu-e7JlHBQtRA" name="kind" type="_UZc2z_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2yPoAEdu-e7JlHBQtRA" annotatedElement="_UZc2x_oAEdu-e7JlHBQtRA">
+ <body>Indicates the kind of connector.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2yfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2yvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc2y_oAEdu-e7JlHBQtRA" name="contract" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UZc24voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2zPoAEdu-e7JlHBQtRA" annotatedElement="_UZc2y_oAEdu-e7JlHBQtRA">
+ <body>The set of Behaviors that specify the valid interaction patterns across the connector.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2zfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2zvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UZc2z_oAEdu-e7JlHBQtRA" name="ConnectorKind">
+ <ownedComment xmi:id="_UZc20PoAEdu-e7JlHBQtRA" annotatedElement="_UZc2z_oAEdu-e7JlHBQtRA">
+ <body>ConnectorKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UZc20foAEdu-e7JlHBQtRA" name="assembly">
+ <ownedComment xmi:id="_UZc20voAEdu-e7JlHBQtRA" annotatedElement="_UZc20foAEdu-e7JlHBQtRA">
+ <body>Indicates that the connector is an assembly connector.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZc20_oAEdu-e7JlHBQtRA" name="delegation">
+ <ownedComment xmi:id="_UZc21PoAEdu-e7JlHBQtRA" annotatedElement="_UZc20_oAEdu-e7JlHBQtRA">
+ <body>Indicates that the connector is a delegation connector.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc21foAEdu-e7JlHBQtRA" name="A_required_component" memberEnd="_UZTF_voAEdu-e7JlHBQtRA _UZc21voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc21voAEdu-e7JlHBQtRA" type="_DAbfwa69EdqjppZik4kD8A" association="_UZc21foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc21_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc22PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc22foAEdu-e7JlHBQtRA" name="A_provided_component" memberEnd="_UZTGAvoAEdu-e7JlHBQtRA _UZc22voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc22voAEdu-e7JlHBQtRA" type="_DAbfwa69EdqjppZik4kD8A" association="_UZc22foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc22_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc23PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc23foAEdu-e7JlHBQtRA" name="A_realization_abstraction" memberEnd="_UZTGBvoAEdu-e7JlHBQtRA _UZc2r_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc23voAEdu-e7JlHBQtRA" name="A_realizingClassifier_componentRealization" memberEnd="_UZc2s_oAEdu-e7JlHBQtRA _UZc23_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc23_oAEdu-e7JlHBQtRA" type="_UZc2rPoAEdu-e7JlHBQtRA" association="_UZc23voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc24PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc24foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc24voAEdu-e7JlHBQtRA" name="A_contract_connector" memberEnd="_UZc2y_oAEdu-e7JlHBQtRA _UZc24_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc24_oAEdu-e7JlHBQtRA" type="_UYZtz_oAEdu-e7JlHBQtRA" association="_UZc24voAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc25PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc25foAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3AvoAEdu-e7JlHBQtRA" name="Manifestation">
+ <ownedComment xmi:id="_UZc3A_oAEdu-e7JlHBQtRA" annotatedElement="_UZc3AvoAEdu-e7JlHBQtRA">
+ <body>A manifestation is the concrete physical rendering of one or more model elements by an artifact.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc3BPoAEdu-e7JlHBQtRA" general="_UYQjw_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZc3BfoAEdu-e7JlHBQtRA" name="utilizedElement" type="_jKxnwGwLEdq7X4sGURiZYA" subsettedProperty="_UYQjzfoAEdu-e7JlHBQtRA" association="_UZc3CfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3BvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3BfoAEdu-e7JlHBQtRA">
+ <body>The model element that is utilized in the manifestation in an Artifact.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3B_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3CPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc3CfoAEdu-e7JlHBQtRA" name="A_utilizedElement_manifestation" memberEnd="_UZc3BfoAEdu-e7JlHBQtRA _UZc3CvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc3CvoAEdu-e7JlHBQtRA" type="_UZc3AvoAEdu-e7JlHBQtRA" association="_UZc3CfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3C_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3DPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc3DfoAEdu-e7JlHBQtRA" name="A_nestedArtifact_artifact" memberEnd="_UZc28voAEdu-e7JlHBQtRA _UZc3DvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc3DvoAEdu-e7JlHBQtRA" type="_-lGRgHLzEdqziYxiZo0YtA" association="_UZc3DfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3D_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3EPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc3EfoAEdu-e7JlHBQtRA" name="A_manifestation_artifact" memberEnd="_UZc29voAEdu-e7JlHBQtRA _UZc3EvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc3EvoAEdu-e7JlHBQtRA" type="_-lGRgHLzEdqziYxiZo0YtA" association="_UZc3EfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3E_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3FPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc3FfoAEdu-e7JlHBQtRA" name="A_ownedOperation_artifact" memberEnd="_UZc2-voAEdu-e7JlHBQtRA _UZc3FvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc3FvoAEdu-e7JlHBQtRA" type="_-lGRgHLzEdqziYxiZo0YtA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA" association="_UZc3FfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3F_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3GPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZc3GfoAEdu-e7JlHBQtRA" name="A_ownedAttribute_artifact" memberEnd="_UZc2_voAEdu-e7JlHBQtRA _UZc3GvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZc3GvoAEdu-e7JlHBQtRA" type="_-lGRgHLzEdqziYxiZo0YtA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA" association="_UZc3GfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3G_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3HPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3KfoAEdu-e7JlHBQtRA" name="Node">
+ <ownedComment xmi:id="_UZc3KvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3KfoAEdu-e7JlHBQtRA">
+ <body>A node is computational resource upon which artifacts may be deployed for execution.&#xD;
+Nodes can be interconnected through communication paths to define network structures.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZc3K_oAEdu-e7JlHBQtRA" name="internal_structure" constrainedElement="_UZc3KfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3LPoAEdu-e7JlHBQtRA" annotatedElement="_UZc3K_oAEdu-e7JlHBQtRA">
+ <body>The internal structure of a Node (if defined) consists solely of parts of type Node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc3LfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZc3LvoAEdu-e7JlHBQtRA" general="_00owUGvdEdq4DLWZOhbdEA"/>
+ <generalization xmi:id="_UZc3L_oAEdu-e7JlHBQtRA" general="_UZc3OvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZc3MPoAEdu-e7JlHBQtRA" name="nestedNode" type="_UZc3KfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZmAh_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3MfoAEdu-e7JlHBQtRA" annotatedElement="_UZc3MPoAEdu-e7JlHBQtRA">
+ <body>The Nodes that are defined (nested) within the Node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3MvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3M_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3NPoAEdu-e7JlHBQtRA" name="Device">
+ <ownedComment xmi:id="_UZc3NfoAEdu-e7JlHBQtRA" annotatedElement="_UZc3NPoAEdu-e7JlHBQtRA">
+ <body>A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices).</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc3NvoAEdu-e7JlHBQtRA" general="_UZc3KfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3N_oAEdu-e7JlHBQtRA" name="ExecutionEnvironment">
+ <ownedComment xmi:id="_UZc3OPoAEdu-e7JlHBQtRA" annotatedElement="_UZc3N_oAEdu-e7JlHBQtRA">
+ <body>An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc3OfoAEdu-e7JlHBQtRA" general="_UZc3KfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3OvoAEdu-e7JlHBQtRA" name="DeploymentTarget" isAbstract="true">
+ <ownedComment xmi:id="_UZc3O_oAEdu-e7JlHBQtRA" annotatedElement="_UZc3OvoAEdu-e7JlHBQtRA">
+ <body>A deployment target is the location for a deployed artifact.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc3PPoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UZc3PfoAEdu-e7JlHBQtRA" name="deployment" type="_UZc3HvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA _UYQj6PoAEdu-e7JlHBQtRA" association="_UZmAhvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3PvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3PfoAEdu-e7JlHBQtRA">
+ <body>The set of Deployments for a DeploymentTarget.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3P_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3QPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc3QfoAEdu-e7JlHBQtRA" name="deployedElement" type="_jKxnwGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" association="_UZmAi_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3QvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3QfoAEdu-e7JlHBQtRA">
+ <body>The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3Q_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3RPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UZc3RfoAEdu-e7JlHBQtRA" name="deployedElement" isQuery="true" bodyCondition="_UZc3RvoAEdu-e7JlHBQtRA">
+ <ownedRule xmi:id="_UZc3RvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UZc3RfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc3R_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = ((self.deployment->collect(deployedArtifact))->collect(manifestation))->collect(utilizedElement)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UZc3SPoAEdu-e7JlHBQtRA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3SfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3SvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3S_oAEdu-e7JlHBQtRA" name="DeployedArtifact" isAbstract="true">
+ <ownedComment xmi:id="_UZc3TPoAEdu-e7JlHBQtRA" annotatedElement="_UZc3S_oAEdu-e7JlHBQtRA">
+ <body>A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc3TfoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3TvoAEdu-e7JlHBQtRA" name="CommunicationPath">
+ <ownedComment xmi:id="_UZc3T_oAEdu-e7JlHBQtRA" annotatedElement="_UZc3TvoAEdu-e7JlHBQtRA">
+ <body>A communication path is an association between two deployment targets, through which they are able to exchange signals and messages.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZc3UPoAEdu-e7JlHBQtRA" name="association_ends" constrainedElement="_UZc3TvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3UfoAEdu-e7JlHBQtRA" annotatedElement="_UZc3UPoAEdu-e7JlHBQtRA">
+ <body>The association ends of a CommunicationPath are typed by DeploymentTargets.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc3UvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.endType->forAll (t | t.oclIsKindOf(DeploymentTarget))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZc3U_oAEdu-e7JlHBQtRA" general="_AwvxoGwNEdq7X4sGURiZYA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UWnlDfoAEdu-e7JlHBQtRA" name="InstanceSpecification">
+ <ownedComment xmi:id="_UWnlDvoAEdu-e7JlHBQtRA" annotatedElement="_UWnlDfoAEdu-e7JlHBQtRA">
+ <body>An instance specification is a model element that represents an instance in a modeled system.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZc3WfoAEdu-e7JlHBQtRA" annotatedElement="_UWnlDfoAEdu-e7JlHBQtRA">
+ <body>An instance specification has the capability of being a deployment target in a deployment relationship, in the case that it is an instance of a node. It is also has the capability of being a deployed artifact, if it is an instance of an artifact.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UWnlD_oAEdu-e7JlHBQtRA" name="defining_feature" constrainedElement="_UWnlDfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlEPoAEdu-e7JlHBQtRA" annotatedElement="_UWnlD_oAEdu-e7JlHBQtRA">
+ <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="_UWnlEfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UWnlEvoAEdu-e7JlHBQtRA" name="structural_feature" constrainedElement="_UWnlDfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlE_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlEvoAEdu-e7JlHBQtRA">
+ <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="_UWnlFPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc3WvoAEdu-e7JlHBQtRA" name="deployment_target" constrainedElement="_UWnlDfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3W_oAEdu-e7JlHBQtRA" annotatedElement="_UZc3WvoAEdu-e7JlHBQtRA">
+ <body>An InstanceSpecification can be a DeploymentTarget if it is the instance specification of a Node and functions as a part in the internal structure of an encompassing Node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc3XPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc3XfoAEdu-e7JlHBQtRA" name="deployment_artifact" constrainedElement="_UWnlDfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3XvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3XfoAEdu-e7JlHBQtRA">
+ <body>An InstanceSpecification can be a DeployedArtifact if it is the instance specification of an Artifact.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc3X_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UWnlFfoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <generalization xmi:id="_UZc3YPoAEdu-e7JlHBQtRA" general="_UZc3OvoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UZc3YfoAEdu-e7JlHBQtRA" general="_UZc3S_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UWnlFvoAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UXXL-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlF_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlFvoAEdu-e7JlHBQtRA">
+ <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="_UWnlGPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlGfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWnlGvoAEdu-e7JlHBQtRA" name="slot" type="_UWnlIvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXXL_PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlG_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlGvoAEdu-e7JlHBQtRA">
+ <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="_UWnlHPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlHfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWnlHvoAEdu-e7JlHBQtRA" name="specification" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXgV5PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlH_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlHvoAEdu-e7JlHBQtRA">
+ <body>A specification of how to compute, derive, or construct the instance.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlIPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlIfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-lGRgHLzEdqziYxiZo0YtA" name="Artifact">
+ <ownedComment xmi:id="_UZc26_oAEdu-e7JlHBQtRA" annotatedElement="_-lGRgHLzEdqziYxiZo0YtA">
+ <body>An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZmAgPoAEdu-e7JlHBQtRA" annotatedElement="_-lGRgHLzEdqziYxiZo0YtA">
+ <body>An artifact is the source of a deployment to a node.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc27PoAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <generalization xmi:id="_UZmAgfoAEdu-e7JlHBQtRA" general="_UZc3S_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZc27voAEdu-e7JlHBQtRA" name="fileName" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZc27_oAEdu-e7JlHBQtRA" annotatedElement="_UZc27voAEdu-e7JlHBQtRA">
+ <body>A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc28PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc28foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc28voAEdu-e7JlHBQtRA" name="nestedArtifact" type="_-lGRgHLzEdqziYxiZo0YtA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZc3DfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc28_oAEdu-e7JlHBQtRA" annotatedElement="_UZc28voAEdu-e7JlHBQtRA">
+ <body>The Artifacts that are defined (nested) within the Artifact.&#xD;
+The association is a specialization of the ownedMember association from Namespace to NamedElement.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc29PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc29foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc29voAEdu-e7JlHBQtRA" name="manifestation" type="_UZc3AvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UYQj6PoAEdu-e7JlHBQtRA _UToizPoAEdu-e7JlHBQtRA" association="_UZc3EfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc29_oAEdu-e7JlHBQtRA" annotatedElement="_UZc29voAEdu-e7JlHBQtRA">
+ <body>The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2-PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2-foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc2-voAEdu-e7JlHBQtRA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UZc3FfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2-_oAEdu-e7JlHBQtRA" annotatedElement="_UZc2-voAEdu-e7JlHBQtRA">
+ <body>The Operations defined for the Artifact. The association is a specialization of the ownedMember association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2_PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2_foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc2_voAEdu-e7JlHBQtRA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYifoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UZc3GfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2__oAEdu-e7JlHBQtRA" annotatedElement="_UZc2_voAEdu-e7JlHBQtRA">
+ <body>The attributes or association ends defined for the Artifact.&#xD;
+The association is a specialization of the ownedMember association.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3APoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3AfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_C-IuUHL0EdqziYxiZo0YtA" name="createOwnedOperation">
+ <ownedComment xmi:id="_DUnlcOwmEdqYHf-imTcTdw" annotatedElement="_C-IuUHL0EdqziYxiZo0YtA">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_C-IuUXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_C-IuUnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_VYNN0PH9EdulR8T2OJRyFQ" annotatedElement="_C-IuUnL0EdqziYxiZo0YtA">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m8S2MaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m8S2MKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_C-IuVHL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_X6VMUPH9EdulR8T2OJRyFQ" annotatedElement="_C-IuVHL0EdqziYxiZo0YtA">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-IuVXL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-IuVnL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_C-IuV3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_f7aG0PH9EdulR8T2OJRyFQ" annotatedElement="_C-IuV3L0EdqziYxiZo0YtA">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-IuWHL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-IuWXL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_C-IuU3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_njmAMPH9EdulR8T2OJRyFQ" annotatedElement="_C-IuU3L0EdqziYxiZo0YtA">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o7P2MaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o7P2MKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_U7wxgHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="__9c1UOwlEdqYHf-imTcTdw" annotatedElement="_U7wxgHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_U7wxgXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_U7wxgnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_QGYH0PH9EdulR8T2OJRyFQ" annotatedElement="_U7wxgnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUSKIaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rUSKIKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_U7wxg3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Rw7lIPH9EdulR8T2OJRyFQ" annotatedElement="_U7wxg3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tO6q0aOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tO6q0KOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_U7wxhHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_OtHO0fH9EdulR8T2OJRyFQ" annotatedElement="_U7wxhHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_U7wxhXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_TYfY0PH9EdulR8T2OJRyFQ" annotatedElement="_U7wxhXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmAgvoAEdu-e7JlHBQtRA" name="A_deployedArtifact_deployment" memberEnd="_UZc3IfoAEdu-e7JlHBQtRA _UZmAg_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmAg_oAEdu-e7JlHBQtRA" type="_UZc3HvoAEdu-e7JlHBQtRA" association="_UZmAgvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAhPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAhfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmAhvoAEdu-e7JlHBQtRA" name="A_deployment_location" memberEnd="_UZc3PfoAEdu-e7JlHBQtRA _UZc3JfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmAh_oAEdu-e7JlHBQtRA" name="A_nestedNode_node" memberEnd="_UZc3MPoAEdu-e7JlHBQtRA _UZmAiPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmAiPoAEdu-e7JlHBQtRA" type="_UZc3KfoAEdu-e7JlHBQtRA" association="_UZmAh_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAifoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAivoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmAi_oAEdu-e7JlHBQtRA" name="A_deployedElement_deploymentTarget" memberEnd="_UZc3QfoAEdu-e7JlHBQtRA _UZmAjPoAEdu-e7JlHBQtRA" isDerived="true">
+ <ownedEnd xmi:id="_UZmAjPoAEdu-e7JlHBQtRA" type="_UZc3OvoAEdu-e7JlHBQtRA" association="_UZmAi_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAjfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAjvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmAkfoAEdu-e7JlHBQtRA" name="InteractionUse">
+ <ownedComment xmi:id="_UZmAkvoAEdu-e7JlHBQtRA" annotatedElement="_UZmAkfoAEdu-e7JlHBQtRA">
+ <body>An interaction use refers to an interaction. The interaction use is a shorthand for copying the contents of the referenced interaction where the interaction use is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal gates with the actual ones.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmAk_oAEdu-e7JlHBQtRA" name="gates_match" constrainedElement="_UZmAkfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAlPoAEdu-e7JlHBQtRA" annotatedElement="_UZmAk_oAEdu-e7JlHBQtRA">
+ <body>Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAlfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAlvoAEdu-e7JlHBQtRA" name="all_lifelines" constrainedElement="_UZmAkfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAl_oAEdu-e7JlHBQtRA" annotatedElement="_UZmAlvoAEdu-e7JlHBQtRA">
+ <body>The InteractionUse must cover all Lifelines of the enclosing Interaction which appear within the referred Interaction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAmPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAmfoAEdu-e7JlHBQtRA" name="arguments_correspond_to_parameters" constrainedElement="_UZmAkfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAmvoAEdu-e7JlHBQtRA" annotatedElement="_UZmAmfoAEdu-e7JlHBQtRA">
+ <body>The arguments of the InteractionUse must correspond to parameters of the referred Interaction</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAm_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAnPoAEdu-e7JlHBQtRA" name="arguments_are_constants" constrainedElement="_UZmAkfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAnfoAEdu-e7JlHBQtRA" annotatedElement="_UZmAnPoAEdu-e7JlHBQtRA">
+ <body>The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAnvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmAn_oAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZmAoPoAEdu-e7JlHBQtRA" name="refersTo" type="_UYsopvoAEdu-e7JlHBQtRA" association="_UZmBVvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAofoAEdu-e7JlHBQtRA" annotatedElement="_UZmAoPoAEdu-e7JlHBQtRA">
+ <body>Refers to the Interaction that defines its meaning</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAovoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAo_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmApPoAEdu-e7JlHBQtRA" name="actualGate" type="_UZmA5_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZmBXvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmApfoAEdu-e7JlHBQtRA" annotatedElement="_UZmApPoAEdu-e7JlHBQtRA">
+ <body>The actual gates of the InteractionUse</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmApvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAp_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmAqPoAEdu-e7JlHBQtRA" name="argument" type="_UX9B-PoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" association="_UZmBbvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAqfoAEdu-e7JlHBQtRA" annotatedElement="_UZmAqPoAEdu-e7JlHBQtRA">
+ <body>The actual arguments of the Interaction</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAqvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAq_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmArPoAEdu-e7JlHBQtRA" name="PartDecomposition">
+ <ownedComment xmi:id="_UZmArfoAEdu-e7JlHBQtRA" annotatedElement="_UZmArPoAEdu-e7JlHBQtRA">
+ <body>A part decomposition is a description of the internal interactions of one lifeline relative to an interaction.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmArvoAEdu-e7JlHBQtRA" name="parts_of_internal_structures" constrainedElement="_UZmArPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAr_oAEdu-e7JlHBQtRA" annotatedElement="_UZmArvoAEdu-e7JlHBQtRA">
+ <body>PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAsPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAsfoAEdu-e7JlHBQtRA" name="assume" constrainedElement="_UZmArPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAsvoAEdu-e7JlHBQtRA" annotatedElement="_UZmAsfoAEdu-e7JlHBQtRA">
+ <body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order.&#xD;
+&#xD;
+i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D&#xD;
+ii) An InteractionUse covering L are matched with a global (i.e. covering all Lifelines) InteractionUse in D.&#xD;
+iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAs_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAtPoAEdu-e7JlHBQtRA" name="commutativity_of_decomposition" constrainedElement="_UZmArPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAtfoAEdu-e7JlHBQtRA" annotatedElement="_UZmAtPoAEdu-e7JlHBQtRA">
+ <body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an&#xD;
+InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition)&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAtvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmAt_oAEdu-e7JlHBQtRA" general="_UZmAkfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmAuPoAEdu-e7JlHBQtRA" name="InteractionOperand">
+ <ownedComment xmi:id="_UZmAufoAEdu-e7JlHBQtRA" annotatedElement="_UZmAuPoAEdu-e7JlHBQtRA">
+ <body>An interaction operand is contained in a combined fragment. An interaction operand represents one operand of the expression given by the enclosing combined fragment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmAuvoAEdu-e7JlHBQtRA" name="guard_directly_prior" constrainedElement="_UZmAuPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAu_oAEdu-e7JlHBQtRA" annotatedElement="_UZmAuvoAEdu-e7JlHBQtRA">
+ <body>The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAvPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAvfoAEdu-e7JlHBQtRA" name="guard_contain_references" constrainedElement="_UZmAuPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAvvoAEdu-e7JlHBQtRA" annotatedElement="_UZmAvfoAEdu-e7JlHBQtRA">
+ <body>The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAv_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmAwPoAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UZmAwfoAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UZmAwvoAEdu-e7JlHBQtRA" name="guard" type="_UZmAyvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZmBTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAw_oAEdu-e7JlHBQtRA" annotatedElement="_UZmAwvoAEdu-e7JlHBQtRA">
+ <body>Constraint of the operand.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAxPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAxfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmAxvoAEdu-e7JlHBQtRA" name="fragment" type="_UYso1voAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZmBcvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAx_oAEdu-e7JlHBQtRA" annotatedElement="_UZmAxvoAEdu-e7JlHBQtRA">
+ <body>The fragments of the operand.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmAyPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmAyfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmAyvoAEdu-e7JlHBQtRA" name="InteractionConstraint">
+ <ownedComment xmi:id="_UZmAy_oAEdu-e7JlHBQtRA" annotatedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <body>An interaction constraint is a Boolean expression that guards an operand in a combined fragment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmAzPoAEdu-e7JlHBQtRA" name="dynamic_variables" constrainedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmAzfoAEdu-e7JlHBQtRA" annotatedElement="_UZmAzPoAEdu-e7JlHBQtRA">
+ <body>The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmAzvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmAz_oAEdu-e7JlHBQtRA" name="global_data" constrainedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA0PoAEdu-e7JlHBQtRA" annotatedElement="_UZmAz_oAEdu-e7JlHBQtRA">
+ <body>The constraint may contain references to global data or write-once data.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA0foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA0voAEdu-e7JlHBQtRA" name="minint_maxint" constrainedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA0_oAEdu-e7JlHBQtRA" annotatedElement="_UZmA0voAEdu-e7JlHBQtRA">
+ <body>Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA1PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA1foAEdu-e7JlHBQtRA" name="minint_non_negative" constrainedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA1voAEdu-e7JlHBQtRA" annotatedElement="_UZmA1foAEdu-e7JlHBQtRA">
+ <body>If minint is specified, then the expression must evaluate to a non-negative integer.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA1_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA2PoAEdu-e7JlHBQtRA" name="maxint_positive" constrainedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA2foAEdu-e7JlHBQtRA" annotatedElement="_UZmA2PoAEdu-e7JlHBQtRA">
+ <body>If maxint is specified, then the expression must evaluate to a positive integer.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA2voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA2_oAEdu-e7JlHBQtRA" name="maxint_greater_equal_minint" constrainedElement="_UZmAyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA3PoAEdu-e7JlHBQtRA" annotatedElement="_UZmA2_oAEdu-e7JlHBQtRA">
+ <body>If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA3foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmA3voAEdu-e7JlHBQtRA" general="_UUFO7voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZmA3_oAEdu-e7JlHBQtRA" name="minint" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZmBZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA4PoAEdu-e7JlHBQtRA" annotatedElement="_UZmA3_oAEdu-e7JlHBQtRA">
+ <body>The minimum number of iterations of a loop</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmA4foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmA4voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmA4_oAEdu-e7JlHBQtRA" name="maxint" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZmBavoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA5PoAEdu-e7JlHBQtRA" annotatedElement="_UZmA4_oAEdu-e7JlHBQtRA">
+ <body>The maximum number of iterations of a loop</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmA5foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmA5voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmA5_oAEdu-e7JlHBQtRA" name="Gate">
+ <ownedComment xmi:id="_UZmA6PoAEdu-e7JlHBQtRA" annotatedElement="_UZmA5_oAEdu-e7JlHBQtRA">
+ <body>A gate is a connection point for relating a message outside an interaction fragment with a message inside the interaction fragment.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmA6foAEdu-e7JlHBQtRA" name="messages_actual_gate" constrainedElement="_UZmA5_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA6voAEdu-e7JlHBQtRA" annotatedElement="_UZmA6foAEdu-e7JlHBQtRA">
+ <body>The message leading to/from an actualGate of an InteractionUse must correspond to the message leading from/to the formalGate with the same name of the Interaction referenced by the InteractionUse.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA6_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA7PoAEdu-e7JlHBQtRA" name="messages_combined_fragment" constrainedElement="_UZmA5_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA7foAEdu-e7JlHBQtRA" annotatedElement="_UZmA7PoAEdu-e7JlHBQtRA">
+ <body>The message leading to/from an (expression) Gate within a CombinedFragment must correspond to the message leading from/to the CombinedFragment on its outside.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA7voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmA7_oAEdu-e7JlHBQtRA" general="_UYspRvoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmA8PoAEdu-e7JlHBQtRA" name="CombinedFragment">
+ <ownedComment xmi:id="_UZmA8foAEdu-e7JlHBQtRA" annotatedElement="_UZmA8PoAEdu-e7JlHBQtRA">
+ <body>A combined fragment defines an expression of interaction fragments. A combined fragment is defined by an interaction operator and corresponding interaction operands. Through the use of combined fragments the user will be able to describe a number of traces in a compact and concise manner.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmA8voAEdu-e7JlHBQtRA" name="opt_loop_break_neg" constrainedElement="_UZmA8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA8_oAEdu-e7JlHBQtRA" annotatedElement="_UZmA8voAEdu-e7JlHBQtRA">
+ <body>If the interactionOperator is opt, loop, break, or neg there must be exactly one operand</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA9PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA9foAEdu-e7JlHBQtRA" name="minint_and_maxint" constrainedElement="_UZmA8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA9voAEdu-e7JlHBQtRA" annotatedElement="_UZmA9foAEdu-e7JlHBQtRA">
+ <body>The InteractionConstraint with minint and maxint only apply when attached to an InteractionOperand where the interactionOperator is loop.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA9_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA-PoAEdu-e7JlHBQtRA" name="break" constrainedElement="_UZmA8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA-foAEdu-e7JlHBQtRA" annotatedElement="_UZmA-PoAEdu-e7JlHBQtRA">
+ <body>If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines within the enclosing InteractionFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA-voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmA-_oAEdu-e7JlHBQtRA" name="consider_and_ignore" constrainedElement="_UZmA8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmA_PoAEdu-e7JlHBQtRA" annotatedElement="_UZmA-_oAEdu-e7JlHBQtRA">
+ <body>The interaction operators 'consider' and 'ignore' can only be used for the CombineIgnoreFragment subtype of CombinedFragment</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmA_foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmA_voAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZmA__oAEdu-e7JlHBQtRA" name="interactionOperator" type="_UZmBMvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBAPoAEdu-e7JlHBQtRA" annotatedElement="_UZmA__oAEdu-e7JlHBQtRA">
+ <body>Specifies the operation which defines the semantics of this combination of InteractionFragments.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UZmBAfoAEdu-e7JlHBQtRA" type="_UZmBMvoAEdu-e7JlHBQtRA" instance="_UZmBNPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmBAvoAEdu-e7JlHBQtRA" name="operand" type="_UZmAuPoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZmBUvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBA_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBAvoAEdu-e7JlHBQtRA">
+ <body>The set of operands of the combined fragment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBBPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBBfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmBBvoAEdu-e7JlHBQtRA" name="cfragmentGate" type="_UZmA5_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZmBWvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBB_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBBvoAEdu-e7JlHBQtRA">
+ <body>Specifies the gates that form the interface between this CombinedFragment and its surroundings</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBCPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBCfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYsopvoAEdu-e7JlHBQtRA" name="Interaction">
+ <ownedComment xmi:id="_UYsop_oAEdu-e7JlHBQtRA" annotatedElement="_UYsopvoAEdu-e7JlHBQtRA">
+ <body>An interaction is a unit of behavior that focuses on the observable exchange of information between connectable elements.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYsoqPoAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UYsoqfoAEdu-e7JlHBQtRA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UYsoqvoAEdu-e7JlHBQtRA" name="lifeline" type="_UYsouvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UY2Zv_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsoq_oAEdu-e7JlHBQtRA" annotatedElement="_UYsoqvoAEdu-e7JlHBQtRA">
+ <body>Specifies the participants in this Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsorPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsorfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYsorvoAEdu-e7JlHBQtRA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UY2Z1PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsor_oAEdu-e7JlHBQtRA" annotatedElement="_UYsorvoAEdu-e7JlHBQtRA">
+ <body>The Messages contained in this Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsosPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsosfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYsosvoAEdu-e7JlHBQtRA" name="fragment" type="_UYso1voAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UY2Z5_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsos_oAEdu-e7JlHBQtRA" annotatedElement="_UYsosvoAEdu-e7JlHBQtRA">
+ <body>The ordered set of fragments in the Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsotPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsotfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYsotvoAEdu-e7JlHBQtRA" name="action" type="_UX9B-PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UY2aBPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsot_oAEdu-e7JlHBQtRA" annotatedElement="_UYsotvoAEdu-e7JlHBQtRA">
+ <body>Actions owned by the Interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsouPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsoufoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmBCvoAEdu-e7JlHBQtRA" name="formalGate" type="_UZmA5_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZmBYvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBC_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBCvoAEdu-e7JlHBQtRA">
+ <body>Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBDPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBDfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYsouvoAEdu-e7JlHBQtRA" name="Lifeline">
+ <ownedComment xmi:id="_UYsou_oAEdu-e7JlHBQtRA" annotatedElement="_UYsouvoAEdu-e7JlHBQtRA">
+ <body>A lifeline represents an individual participant in the interaction. While parts and structural features may have multiplicity greater than 1, lifelines represent only one interacting entity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYsovPoAEdu-e7JlHBQtRA" name="interaction_uses_share_lifeline" constrainedElement="_UYsouvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsovfoAEdu-e7JlHBQtRA" annotatedElement="_UYsovPoAEdu-e7JlHBQtRA">
+ <body>If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYsovvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYsov_oAEdu-e7JlHBQtRA" name="selector_specified" constrainedElement="_UYsouvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsowPoAEdu-e7JlHBQtRA" annotatedElement="_UYsov_oAEdu-e7JlHBQtRA">
+ <body>The selector for a Lifeline must only be specified if the referenced Part is multivalued.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYsowfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.selector->isEmpty() implies not self.represents.isMultivalued()) or&#xA;(not self.selector->isEmpty() implies self.represents.isMultivalued())&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYsowvoAEdu-e7JlHBQtRA" name="same_classifier" constrainedElement="_UYsouvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsow_oAEdu-e7JlHBQtRA" annotatedElement="_UYsowvoAEdu-e7JlHBQtRA">
+ <body>The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYsoxPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>if (represents->notEmpty()) then&#xA;(if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued())&#xA;</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYsoxfoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYsoxvoAEdu-e7JlHBQtRA" name="coveredBy" type="_UYso1voAEdu-e7JlHBQtRA" association="_UY2ZrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsox_oAEdu-e7JlHBQtRA" annotatedElement="_UYsoxvoAEdu-e7JlHBQtRA">
+ <body>References the InteractionFragments in which this Lifeline takes part.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsoyPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsoyfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYsoyvoAEdu-e7JlHBQtRA" name="represents" type="_UYZt_voAEdu-e7JlHBQtRA" association="_UY2ZuvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsoy_oAEdu-e7JlHBQtRA" annotatedElement="_UYsoyvoAEdu-e7JlHBQtRA">
+ <body>References the ConnectableElement within the classifier that contains the enclosing interaction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYsozPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYsozfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYsozvoAEdu-e7JlHBQtRA" name="interaction" type="_UYsopvoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UY2Zv_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYsoz_oAEdu-e7JlHBQtRA" annotatedElement="_UYsozvoAEdu-e7JlHBQtRA">
+ <body>References the Interaction enclosing this Lifeline.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYso0PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYso0foAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYso0voAEdu-e7JlHBQtRA" name="selector" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UY2ZzPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYso0_oAEdu-e7JlHBQtRA" annotatedElement="_UYso0voAEdu-e7JlHBQtRA">
+ <body>If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYso1PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYso1foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmBDvoAEdu-e7JlHBQtRA" name="decomposedAs" type="_UZmArPoAEdu-e7JlHBQtRA" association="_UZmBTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBD_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBDvoAEdu-e7JlHBQtRA">
+ <body>References the Interaction that represents the decomposition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBEPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBEfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmBEvoAEdu-e7JlHBQtRA" name="Continuation">
+ <ownedComment xmi:id="_UZmBE_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBEvoAEdu-e7JlHBQtRA">
+ <body>A continuation is a syntactic way to define continuations of different branches of an alternative combined fragment. Continuations is intuitively similar to labels representing intermediate points in a flow of control.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmBFPoAEdu-e7JlHBQtRA" name="same_name" constrainedElement="_UZmBEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBFfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBFPoAEdu-e7JlHBQtRA">
+ <body>Continuations with the same name may only cover the same set of Lifelines (within one Classifier).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmBFvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmBF_oAEdu-e7JlHBQtRA" name="global" constrainedElement="_UZmBEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBGPoAEdu-e7JlHBQtRA" annotatedElement="_UZmBF_oAEdu-e7JlHBQtRA">
+ <body>Continuations are always global in the enclosing InteractionFragment e.g. it always covers all Lifelines covered by the enclosing InteractionFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmBGfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmBGvoAEdu-e7JlHBQtRA" name="first_or_last_interaction_fragment" constrainedElement="_UZmBEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBG_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBGvoAEdu-e7JlHBQtRA">
+ <body>Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionFragment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmBHPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmBHfoAEdu-e7JlHBQtRA" general="_UYso1voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZmBHvoAEdu-e7JlHBQtRA" name="setting" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZmBH_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBHvoAEdu-e7JlHBQtRA">
+ <body>True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZmBIPoAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYso1voAEdu-e7JlHBQtRA" name="InteractionFragment" isAbstract="true">
+ <ownedComment xmi:id="_UYso1_oAEdu-e7JlHBQtRA" annotatedElement="_UYso1voAEdu-e7JlHBQtRA">
+ <body>InteractionFragment is an abstract notion of the most general interaction unit. An interaction fragment is a piece of an interaction. Each interaction fragment is conceptually like an interaction by itself.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYso2PoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UYso2foAEdu-e7JlHBQtRA" name="covered" type="_UYsouvoAEdu-e7JlHBQtRA" association="_UY2ZrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYso2voAEdu-e7JlHBQtRA" annotatedElement="_UYso2foAEdu-e7JlHBQtRA">
+ <body>References the Lifelines that the InteractionFragment involves.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYso2_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYso3PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYso3foAEdu-e7JlHBQtRA" name="generalOrdering" type="_UYspGvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UY2Z4_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYso3voAEdu-e7JlHBQtRA" annotatedElement="_UYso3foAEdu-e7JlHBQtRA">
+ <body>The general ordering relationships contained in this fragment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYso3_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYso4PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYso4foAEdu-e7JlHBQtRA" name="enclosingInteraction" type="_UYsopvoAEdu-e7JlHBQtRA" association="_UY2Z5_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYso4voAEdu-e7JlHBQtRA" annotatedElement="_UYso4foAEdu-e7JlHBQtRA">
+ <body>The Interaction enclosing this InteractionFragment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYso4_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYso5PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZmBIfoAEdu-e7JlHBQtRA" name="enclosingOperand" type="_UZmAuPoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UZmBcvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBIvoAEdu-e7JlHBQtRA" annotatedElement="_UZmBIfoAEdu-e7JlHBQtRA">
+ <body>The operand enclosing this InteractionFragment (they may nest recursively)</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBI_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBJPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZmBJfoAEdu-e7JlHBQtRA" name="ConsiderIgnoreFragment">
+ <ownedComment xmi:id="_UZmBJvoAEdu-e7JlHBQtRA" annotatedElement="_UZmBJfoAEdu-e7JlHBQtRA">
+ <body>A consider ignore fragment is a kind of combined fragment that is used for the consider and ignore cases, which require lists of pertinent messages to be specified.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZmBJ_oAEdu-e7JlHBQtRA" name="consider_or_ignore" constrainedElement="_UZmBJfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBKPoAEdu-e7JlHBQtRA" annotatedElement="_UZmBJ_oAEdu-e7JlHBQtRA">
+ <body>The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmBKfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(interactionOperator = #consider) or (interactionOperator = #ignore)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZmBKvoAEdu-e7JlHBQtRA" name="type" constrainedElement="_UZmBJfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBK_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBKvoAEdu-e7JlHBQtRA">
+ <body>The NamedElements must be of a type of element that identifies a message (e.g., an Operation, Reception, or a Signal).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZmBLPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZmBLfoAEdu-e7JlHBQtRA" general="_UZmA8PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZmBLvoAEdu-e7JlHBQtRA" name="message" type="_csVgUGvtEdqG6fBIPwe-mw" association="_UZmBc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZmBL_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBLvoAEdu-e7JlHBQtRA">
+ <body>The set of messages that apply to this fragment</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBMPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBMfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UZmBMvoAEdu-e7JlHBQtRA" name="InteractionOperatorKind">
+ <ownedComment xmi:id="_UZmBM_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBMvoAEdu-e7JlHBQtRA">
+ <body>InteractionOperatorKind is an enumeration designating the different kinds of operators of combined fragments. The interaction operand defines the type of operator of a combined fragment.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UZmBNPoAEdu-e7JlHBQtRA" name="seq">
+ <ownedComment xmi:id="_UZmBNfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBNPoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBNvoAEdu-e7JlHBQtRA" name="alt">
+ <ownedComment xmi:id="_UZmBN_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBNvoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBOPoAEdu-e7JlHBQtRA" name="opt">
+ <ownedComment xmi:id="_UZmBOfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBOPoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBOvoAEdu-e7JlHBQtRA" name="break">
+ <ownedComment xmi:id="_UZmBO_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBOvoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBPPoAEdu-e7JlHBQtRA" name="par">
+ <ownedComment xmi:id="_UZmBPfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBPPoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBPvoAEdu-e7JlHBQtRA" name="strict">
+ <ownedComment xmi:id="_UZmBP_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBPvoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBQPoAEdu-e7JlHBQtRA" name="loop">
+ <ownedComment xmi:id="_UZmBQfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBQPoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBQvoAEdu-e7JlHBQtRA" name="critical">
+ <ownedComment xmi:id="_UZmBQ_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBQvoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as e.g. with par-operator, this is prevented by defining a region.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBRPoAEdu-e7JlHBQtRA" name="neg">
+ <ownedComment xmi:id="_UZmBRfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBRPoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator neg designates that the CombinedFragment represents traces that are defined to be invalid.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBRvoAEdu-e7JlHBQtRA" name="assert">
+ <ownedComment xmi:id="_UZmBR_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBRvoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBSPoAEdu-e7JlHBQtRA" name="ignore">
+ <ownedComment xmi:id="_UZmBSfoAEdu-e7JlHBQtRA" annotatedElement="_UZmBSPoAEdu-e7JlHBQtRA">
+ <body>The interacionOperator ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UZmBSvoAEdu-e7JlHBQtRA" name="consider">
+ <ownedComment xmi:id="_UZmBS_oAEdu-e7JlHBQtRA" annotatedElement="_UZmBSvoAEdu-e7JlHBQtRA">
+ <body>The interactionOperator consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBTPoAEdu-e7JlHBQtRA" name="A_lifeline_decomposedAs" memberEnd="_UZmBTfoAEdu-e7JlHBQtRA _UZmBDvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBTfoAEdu-e7JlHBQtRA" type="_UYsouvoAEdu-e7JlHBQtRA" association="_UZmBTPoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBTvoAEdu-e7JlHBQtRA" name="A_guard_interactionOperand" memberEnd="_UZmAwvoAEdu-e7JlHBQtRA _UZmBT_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBT_oAEdu-e7JlHBQtRA" type="_UZmAuPoAEdu-e7JlHBQtRA" association="_UZmBTvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBUPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBUfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBUvoAEdu-e7JlHBQtRA" name="A_operand_combinedFragment" memberEnd="_UZmBAvoAEdu-e7JlHBQtRA _UZmBU_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBU_oAEdu-e7JlHBQtRA" type="_UZmA8PoAEdu-e7JlHBQtRA" association="_UZmBUvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBVPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBVfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBVvoAEdu-e7JlHBQtRA" name="A_refersTo_interactionUse" memberEnd="_UZmAoPoAEdu-e7JlHBQtRA _UZmBV_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBV_oAEdu-e7JlHBQtRA" type="_UZmAkfoAEdu-e7JlHBQtRA" association="_UZmBVvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBWPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBWfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBWvoAEdu-e7JlHBQtRA" name="A_cfragmentGate_combinedFragment" memberEnd="_UZmBBvoAEdu-e7JlHBQtRA _UZmBW_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBW_oAEdu-e7JlHBQtRA" type="_UZmA8PoAEdu-e7JlHBQtRA" association="_UZmBWvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBXPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBXfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBXvoAEdu-e7JlHBQtRA" name="A_interactionUse_actualGate" memberEnd="_UZmBX_oAEdu-e7JlHBQtRA _UZmApPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBX_oAEdu-e7JlHBQtRA" type="_UZmAkfoAEdu-e7JlHBQtRA" association="_UZmBXvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBYPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBYfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBYvoAEdu-e7JlHBQtRA" name="A_formalGate_interaction" memberEnd="_UZmBCvoAEdu-e7JlHBQtRA _UZmBY_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBY_oAEdu-e7JlHBQtRA" type="_UYsopvoAEdu-e7JlHBQtRA" association="_UZmBYvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBZPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBZfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBZvoAEdu-e7JlHBQtRA" name="A_minint_interactionConstraint" memberEnd="_UZmA3_oAEdu-e7JlHBQtRA _UZmBZ_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBZ_oAEdu-e7JlHBQtRA" type="_UZmAyvoAEdu-e7JlHBQtRA" association="_UZmBZvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBaPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBafoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBavoAEdu-e7JlHBQtRA" name="A_maxint_interactionConstraint" memberEnd="_UZmA4_oAEdu-e7JlHBQtRA _UZmBa_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBa_oAEdu-e7JlHBQtRA" type="_UZmAyvoAEdu-e7JlHBQtRA" association="_UZmBavoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBbPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBbfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBbvoAEdu-e7JlHBQtRA" name="A_argument_interactionUse" memberEnd="_UZmAqPoAEdu-e7JlHBQtRA _UZmBb_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBb_oAEdu-e7JlHBQtRA" type="_UZmAkfoAEdu-e7JlHBQtRA" association="_UZmBbvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBcPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBcfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBcvoAEdu-e7JlHBQtRA" name="A_fragment_enclosingOperand" memberEnd="_UZmAxvoAEdu-e7JlHBQtRA _UZmBIfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZmBc_oAEdu-e7JlHBQtRA" name="A_message_considerIgnoreFragment" memberEnd="_UZmBLvoAEdu-e7JlHBQtRA _UZmBdPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZmBdPoAEdu-e7JlHBQtRA" type="_UZmBJfoAEdu-e7JlHBQtRA" association="_UZmBc_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZmBdfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZmBdvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvxgPoAEdu-e7JlHBQtRA" name="CreateObjectAction">
+ <ownedComment xmi:id="_UZvxgfoAEdu-e7JlHBQtRA" annotatedElement="_UZvxgPoAEdu-e7JlHBQtRA">
+ <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="_UZvxgvoAEdu-e7JlHBQtRA" name="classifier_not_abstract" constrainedElement="_UZvxgPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxg_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxgvoAEdu-e7JlHBQtRA">
+ <body>The classifier cannot be abstract.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxhPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not (self.classifier.isAbstract = #true)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxhfoAEdu-e7JlHBQtRA" name="classifier_not_association_class" constrainedElement="_UZvxgPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxhvoAEdu-e7JlHBQtRA" annotatedElement="_UZvxhfoAEdu-e7JlHBQtRA">
+ <body>The classifier cannot be an association class</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxh_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.classifier.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxiPoAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UZvxgPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxifoAEdu-e7JlHBQtRA" annotatedElement="_UZvxiPoAEdu-e7JlHBQtRA">
+ <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="_UZvxivoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type = self.classifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxi_oAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvxgPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxjPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxi_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxjfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvxjvoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvxj_oAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UZ47gfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxkPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxj_oAEdu-e7JlHBQtRA">
+ <body>Classifier to be instantiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvxkfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvxkvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvxk_oAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UZ47hfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxlPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxk_oAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvxlfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvxlvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvxl_oAEdu-e7JlHBQtRA" name="DestroyObjectAction">
+ <ownedComment xmi:id="_UZvxmPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxl_oAEdu-e7JlHBQtRA">
+ <body>A destroy object action is an action that destroys objects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvxmfoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvxl_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxmvoAEdu-e7JlHBQtRA" annotatedElement="_UZvxmfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxm_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.target.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxnPoAEdu-e7JlHBQtRA" name="no_type" constrainedElement="_UZvxl_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxnfoAEdu-e7JlHBQtRA" annotatedElement="_UZvxnPoAEdu-e7JlHBQtRA">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxnvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.target.type->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvxn_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvxoPoAEdu-e7JlHBQtRA" name="isDestroyLinks" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZvxofoAEdu-e7JlHBQtRA" annotatedElement="_UZvxoPoAEdu-e7JlHBQtRA">
+ <body>Specifies whether links in which the object participates are destroyed along with the object.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZvxovoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvxo_oAEdu-e7JlHBQtRA" name="isDestroyOwnedObjects" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZvxpPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxo_oAEdu-e7JlHBQtRA">
+ <body>Specifies whether objects owned by the object are destroyed along with the object.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZvxpfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvxpvoAEdu-e7JlHBQtRA" name="target" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47ifoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxp_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxpvoAEdu-e7JlHBQtRA">
+ <body>The input pin providing the object to be destroyed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvxqPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvxqfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvxqvoAEdu-e7JlHBQtRA" name="TestIdentityAction">
+ <ownedComment xmi:id="_UZvxq_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxqvoAEdu-e7JlHBQtRA">
+ <body>A test identity action is an action that tests if two values are identical objects.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvxrPoAEdu-e7JlHBQtRA" name="no_type" constrainedElement="_UZvxqvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxrfoAEdu-e7JlHBQtRA" annotatedElement="_UZvxrPoAEdu-e7JlHBQtRA">
+ <body>The input pins have no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxrvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxr_oAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvxqvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxsPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxr_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pins is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxsfoAEdu-e7JlHBQtRA">
+ <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="_UZvxsvoAEdu-e7JlHBQtRA" name="result_is_boolean" constrainedElement="_UZvxqvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxs_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxsvoAEdu-e7JlHBQtRA">
+ <body>The type of the result is Boolean.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxtPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type.oclIsTypeOf(Boolean)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvxtfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvxtvoAEdu-e7JlHBQtRA" name="first" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47jfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxt_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxtvoAEdu-e7JlHBQtRA">
+ <body>Gives the pin on which an object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvxuPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvxufoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvxuvoAEdu-e7JlHBQtRA" name="second" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47kfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxu_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxuvoAEdu-e7JlHBQtRA">
+ <body>Gives the pin on which an object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvxvPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvxvfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvxvvoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UZ47lfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxv_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxvvoAEdu-e7JlHBQtRA">
+ <body>Tells whether the two input objects are identical.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvxwPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvxwfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvxwvoAEdu-e7JlHBQtRA" name="ReadSelfAction">
+ <ownedComment xmi:id="_UZvxw_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxwvoAEdu-e7JlHBQtRA">
+ <body>A read self action is an action that retrieves the host object of an action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvxxPoAEdu-e7JlHBQtRA" name="contained" constrainedElement="_UZvxwvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxxfoAEdu-e7JlHBQtRA" annotatedElement="_UZvxxPoAEdu-e7JlHBQtRA">
+ <body>The action must be contained in an behavior that has a host classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxxvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.context->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxx_oAEdu-e7JlHBQtRA" name="not_static" constrainedElement="_UZvxwvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxyPoAEdu-e7JlHBQtRA" annotatedElement="_UZvxx_oAEdu-e7JlHBQtRA">
+ <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="_UZvxyfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxyvoAEdu-e7JlHBQtRA" name="type" constrainedElement="_UZvxwvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxy_oAEdu-e7JlHBQtRA" annotatedElement="_UZvxyvoAEdu-e7JlHBQtRA">
+ <body>The type of the result output pin is the host classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxzPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type = self.context</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvxzfoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvxwvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvxzvoAEdu-e7JlHBQtRA" annotatedElement="_UZvxzfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvxz_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvx0PoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvx0foAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UZ47mfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx0voAEdu-e7JlHBQtRA" annotatedElement="_UZvx0foAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the hosting object is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvx0_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvx1PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvx1foAEdu-e7JlHBQtRA" name="StructuralFeatureAction" isAbstract="true">
+ <ownedComment xmi:id="_UZvx1voAEdu-e7JlHBQtRA" annotatedElement="_UZvx1foAEdu-e7JlHBQtRA">
+ <body>StructuralFeatureAction is an abstract class for all structural feature actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvx1_oAEdu-e7JlHBQtRA" name="not_static" constrainedElement="_UZvx1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx2PoAEdu-e7JlHBQtRA" annotatedElement="_UZvx1_oAEdu-e7JlHBQtRA">
+ <body>The structural feature must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvx2foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.structuralFeature.isStatic = #false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvx2voAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UZvx1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx2_oAEdu-e7JlHBQtRA" annotatedElement="_UZvx2voAEdu-e7JlHBQtRA">
+ <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="_UZvx3PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvx3foAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvx1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx3voAEdu-e7JlHBQtRA" annotatedElement="_UZvx3foAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin must be 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvx3_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvx4PoAEdu-e7JlHBQtRA" name="visibility" constrainedElement="_UZvx1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx4foAEdu-e7JlHBQtRA" annotatedElement="_UZvx4PoAEdu-e7JlHBQtRA">
+ <body>Visibility of structural feature must allow access to the object performing the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvx4voAEdu-e7JlHBQtRA">
+ <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="_UZvx4_oAEdu-e7JlHBQtRA" name="one_featuring_classifier" constrainedElement="_UZvx1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx5PoAEdu-e7JlHBQtRA" annotatedElement="_UZvx4_oAEdu-e7JlHBQtRA">
+ <body>A structural feature has exactly one featuringClassifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvx5foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.structuralFeature.featuringClassifier->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvx5voAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvx5_oAEdu-e7JlHBQtRA" name="structuralFeature" type="_UT7dg_oAEdu-e7JlHBQtRA" association="_UZ47nfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx6PoAEdu-e7JlHBQtRA" annotatedElement="_UZvx5_oAEdu-e7JlHBQtRA">
+ <body>Structural feature to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvx6foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvx6voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvx6_oAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47ofoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx7PoAEdu-e7JlHBQtRA" annotatedElement="_UZvx6_oAEdu-e7JlHBQtRA">
+ <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="_UZvx7foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvx7voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvx7_oAEdu-e7JlHBQtRA" name="ReadStructuralFeatureAction">
+ <ownedComment xmi:id="_UZvx8PoAEdu-e7JlHBQtRA" annotatedElement="_UZvx7_oAEdu-e7JlHBQtRA">
+ <body>A read structural feature action is a structural feature action that retrieves the values of a structural feature.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvx8foAEdu-e7JlHBQtRA" name="type_and_ordering" constrainedElement="_UZvx7_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx8voAEdu-e7JlHBQtRA" annotatedElement="_UZvx8foAEdu-e7JlHBQtRA">
+ <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="_UZvx8_oAEdu-e7JlHBQtRA">
+ <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="_UZvx9PoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvx7_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx9foAEdu-e7JlHBQtRA" annotatedElement="_UZvx9PoAEdu-e7JlHBQtRA">
+ <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="_UZvx9voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvx9_oAEdu-e7JlHBQtRA" general="_UZvx1foAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvx-PoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UZ47pfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx-foAEdu-e7JlHBQtRA" annotatedElement="_UZvx-PoAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvx-voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvx-_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvx_PoAEdu-e7JlHBQtRA" name="WriteStructuralFeatureAction" isAbstract="true">
+ <ownedComment xmi:id="_UZvx_foAEdu-e7JlHBQtRA" annotatedElement="_UZvx_PoAEdu-e7JlHBQtRA">
+ <body>WriteStructuralFeatureAction is an abstract class for structural feature actions that change structural feature values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvx_voAEdu-e7JlHBQtRA" name="input_pin" constrainedElement="_UZvx_PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvx__oAEdu-e7JlHBQtRA" annotatedElement="_UZvx_voAEdu-e7JlHBQtRA">
+ <body>The type input pin is the same as the classifier of the structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyAPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.type = self.structuralFeature.featuringClassifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyAfoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvx_PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyAvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyAfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyA_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvyBPoAEdu-e7JlHBQtRA" general="_UZvx1foAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyBfoAEdu-e7JlHBQtRA" name="value" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47qfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyBvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyBfoAEdu-e7JlHBQtRA">
+ <body>Value to be added or removed from the structural feature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvyB_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyCPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyCfoAEdu-e7JlHBQtRA" name="ClearStructuralFeatureAction">
+ <ownedComment xmi:id="_UZvyCvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyCfoAEdu-e7JlHBQtRA">
+ <body>A clear structural feature action is a structural feature action that removes all values of a structural feature.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZvyC_oAEdu-e7JlHBQtRA" general="_UZvx1foAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyDPoAEdu-e7JlHBQtRA" name="RemoveStructuralFeatureValueAction">
+ <ownedComment xmi:id="_UZvyDfoAEdu-e7JlHBQtRA" annotatedElement="_UZvyDPoAEdu-e7JlHBQtRA">
+ <body>A remove structural feature value action is a write structural feature action that removes values from structural features.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvyDvoAEdu-e7JlHBQtRA" name="non_unique_removal" constrainedElement="_UZvyDPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyD_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyDvoAEdu-e7JlHBQtRA">
+ <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="_UZvyEPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvyEfoAEdu-e7JlHBQtRA" general="_UZvx_PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyEvoAEdu-e7JlHBQtRA" name="isRemoveDuplicates" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZvyE_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyEvoAEdu-e7JlHBQtRA">
+ <body>Specifies whether to remove duplicates of the value in nonunique structural features.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZvyFPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvyFfoAEdu-e7JlHBQtRA" name="removeAt" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ473foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyFvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyFfoAEdu-e7JlHBQtRA">
+ <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="_UZvyF_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyGPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyGfoAEdu-e7JlHBQtRA" name="AddStructuralFeatureValueAction">
+ <ownedComment xmi:id="_UZvyGvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyGfoAEdu-e7JlHBQtRA">
+ <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="_UZvyG_oAEdu-e7JlHBQtRA" name="unlimited_natural_and_multiplicity" constrainedElement="_UZvyGfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyHPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyG_oAEdu-e7JlHBQtRA">
+ <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="_UZvyHfoAEdu-e7JlHBQtRA">
+ <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="_UZvyHvoAEdu-e7JlHBQtRA" general="_UZvx_PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyH_oAEdu-e7JlHBQtRA" name="isReplaceAll" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZvyIPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyH_oAEdu-e7JlHBQtRA">
+ <body>Specifies whether existing values of the structural feature of the object should be removed before adding the new value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZvyIfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvyIvoAEdu-e7JlHBQtRA" name="insertAt" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47rfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyI_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyIvoAEdu-e7JlHBQtRA">
+ <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="_UZvyJPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyJfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyJvoAEdu-e7JlHBQtRA" name="LinkAction" isAbstract="true">
+ <ownedComment xmi:id="_UZvyJ_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyJvoAEdu-e7JlHBQtRA">
+ <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="_UZvyKPoAEdu-e7JlHBQtRA" name="same_association" constrainedElement="_UZvyJvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyKfoAEdu-e7JlHBQtRA" annotatedElement="_UZvyKPoAEdu-e7JlHBQtRA">
+ <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="_UZvyKvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.endData->collect(end) = self.association()->collect(connection))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyK_oAEdu-e7JlHBQtRA" name="not_static" constrainedElement="_UZvyJvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyLPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyK_oAEdu-e7JlHBQtRA">
+ <body>The association ends of the link end data must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyLfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyLvoAEdu-e7JlHBQtRA" name="same_pins" constrainedElement="_UZvyJvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyL_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyLvoAEdu-e7JlHBQtRA">
+ <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="_UZvyMPoAEdu-e7JlHBQtRA">
+ <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="_UZvyMfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyMvoAEdu-e7JlHBQtRA" name="endData" type="_UZvyP_oAEdu-e7JlHBQtRA" aggregation="composite" association="_UZ47sfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyM_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyMvoAEdu-e7JlHBQtRA">
+ <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="_UZvyNPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyNfoAEdu-e7JlHBQtRA" value="2"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvyNvoAEdu-e7JlHBQtRA" name="inputValue" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ478foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyN_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyNvoAEdu-e7JlHBQtRA">
+ <body>Pins taking end objects and qualifier values as input.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvyOPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyOfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UZvyOvoAEdu-e7JlHBQtRA" name="association" isQuery="true" bodyCondition="_UZvyPPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyO_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyOvoAEdu-e7JlHBQtRA">
+ <body>The association operates on LinkAction. It returns the association of the action.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvyPPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UZvyOvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyPfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.endData->asSequence().first().end.association</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UZvyPvoAEdu-e7JlHBQtRA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyU_oAEdu-e7JlHBQtRA" name="ReadLinkAction">
+ <ownedComment xmi:id="_UZvyVPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyU_oAEdu-e7JlHBQtRA">
+ <body>A read link action is a link action that navigates across associations to retrieve objects on one end.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvyVfoAEdu-e7JlHBQtRA" name="one_open_end" constrainedElement="_UZvyU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyVvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyVfoAEdu-e7JlHBQtRA">
+ <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="_UZvyV_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.endData->select(ed | ed.value->size() = 0)->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyWPoAEdu-e7JlHBQtRA" name="type_and_ordering" constrainedElement="_UZvyU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyWfoAEdu-e7JlHBQtRA" annotatedElement="_UZvyWPoAEdu-e7JlHBQtRA">
+ <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="_UZvyWvoAEdu-e7JlHBQtRA">
+ <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="_UZvyW_oAEdu-e7JlHBQtRA" name="compatible_multiplicity" constrainedElement="_UZvyU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyXPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyW_oAEdu-e7JlHBQtRA">
+ <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="_UZvyXfoAEdu-e7JlHBQtRA">
+ <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="_UZvyXvoAEdu-e7JlHBQtRA" name="navigable_open_end" constrainedElement="_UZvyU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyX_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyXvoAEdu-e7JlHBQtRA">
+ <body>The open end must be navigable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyYPoAEdu-e7JlHBQtRA">
+ <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="_UZvyYfoAEdu-e7JlHBQtRA" name="visibility" constrainedElement="_UZvyU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyYvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyYfoAEdu-e7JlHBQtRA">
+ <body>Visibility of the open end must allow access to the object performing the action.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyY_oAEdu-e7JlHBQtRA">
+ <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="_UZvyZPoAEdu-e7JlHBQtRA" general="_UZvyJvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyZfoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UZ47vfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyZvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyZfoAEdu-e7JlHBQtRA">
+ <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="_UZvyZ_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyaPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyafoAEdu-e7JlHBQtRA" name="LinkEndCreationData">
+ <ownedComment xmi:id="_UZvyavoAEdu-e7JlHBQtRA" annotatedElement="_UZvyafoAEdu-e7JlHBQtRA">
+ <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="_UZvya_oAEdu-e7JlHBQtRA" name="create_link_action" constrainedElement="_UZvyafoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvybPoAEdu-e7JlHBQtRA" annotatedElement="_UZvya_oAEdu-e7JlHBQtRA">
+ <body>LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvybfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.LinkAction.oclIsKindOf(CreateLinkAction)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvybvoAEdu-e7JlHBQtRA" name="single_input_pin" constrainedElement="_UZvyafoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyb_oAEdu-e7JlHBQtRA" annotatedElement="_UZvybvoAEdu-e7JlHBQtRA">
+ <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="_UZvycPoAEdu-e7JlHBQtRA">
+ <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="_UZvycfoAEdu-e7JlHBQtRA" general="_UZvyP_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvycvoAEdu-e7JlHBQtRA" name="isReplaceAll" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZvyc_oAEdu-e7JlHBQtRA" annotatedElement="_UZvycvoAEdu-e7JlHBQtRA">
+ <body>Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZvydPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvydfoAEdu-e7JlHBQtRA" name="insertAt" type="_UXz4NPoAEdu-e7JlHBQtRA" association="_UZ47wfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvydvoAEdu-e7JlHBQtRA" annotatedElement="_UZvydfoAEdu-e7JlHBQtRA">
+ <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="_UZvyd_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyePoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyefoAEdu-e7JlHBQtRA" name="CreateLinkAction">
+ <ownedComment xmi:id="_UZvyevoAEdu-e7JlHBQtRA" annotatedElement="_UZvyefoAEdu-e7JlHBQtRA">
+ <body>A create link action is a write link action for creating links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvye_oAEdu-e7JlHBQtRA" name="association_not_abstract" constrainedElement="_UZvyefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyfPoAEdu-e7JlHBQtRA" annotatedElement="_UZvye_oAEdu-e7JlHBQtRA">
+ <body>The association cannot be an abstract classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyffoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.association().isAbstract = #false</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvyfvoAEdu-e7JlHBQtRA" general="_UZvyivoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyf_oAEdu-e7JlHBQtRA" name="endData" type="_UZvyafoAEdu-e7JlHBQtRA" aggregation="composite" redefinedProperty="_UZvyMvoAEdu-e7JlHBQtRA" association="_UZ47xfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvygPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyf_oAEdu-e7JlHBQtRA">
+ <body>Specifies ends of association and inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvygfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvygvoAEdu-e7JlHBQtRA" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyg_oAEdu-e7JlHBQtRA" name="DestroyLinkAction">
+ <ownedComment xmi:id="_UZvyhPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyg_oAEdu-e7JlHBQtRA">
+ <body>A destroy link action is a write link action that destroys links and link objects.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZvyhfoAEdu-e7JlHBQtRA" general="_UZvyivoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyhvoAEdu-e7JlHBQtRA" name="endData" type="_UZvyufoAEdu-e7JlHBQtRA" aggregation="composite" redefinedProperty="_UZvyMvoAEdu-e7JlHBQtRA" association="_UZ475foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyh_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyhvoAEdu-e7JlHBQtRA">
+ <body>Specifies ends of association and inputs.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvyiPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyifoAEdu-e7JlHBQtRA" value="2"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyivoAEdu-e7JlHBQtRA" name="WriteLinkAction" isAbstract="true">
+ <ownedComment xmi:id="_UZvyi_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyivoAEdu-e7JlHBQtRA">
+ <body>WriteLinkAction is an abstract class for link actions that create and destroy links.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZvyjPoAEdu-e7JlHBQtRA" name="allow_access" constrainedElement="_UZvyivoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyjfoAEdu-e7JlHBQtRA" annotatedElement="_UZvyjPoAEdu-e7JlHBQtRA">
+ <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="_UZvyjvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvyj_oAEdu-e7JlHBQtRA" general="_UZvyJvoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvykPoAEdu-e7JlHBQtRA" name="ClearAssociationAction">
+ <ownedComment xmi:id="_UZvykfoAEdu-e7JlHBQtRA" annotatedElement="_UZvykPoAEdu-e7JlHBQtRA">
+ <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="_UZvykvoAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UZvykPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyk_oAEdu-e7JlHBQtRA" annotatedElement="_UZvykvoAEdu-e7JlHBQtRA">
+ <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="_UZvylPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.association->exists(end.type = self.object.type)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvylfoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvykPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvylvoAEdu-e7JlHBQtRA" annotatedElement="_UZvylfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyl_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvymPoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvymfoAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ47yfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvymvoAEdu-e7JlHBQtRA" annotatedElement="_UZvymfoAEdu-e7JlHBQtRA">
+ <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="_UZvym_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvynPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvynfoAEdu-e7JlHBQtRA" name="association" type="_AwvxoGwNEdq7X4sGURiZYA" association="_UZ47zfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvynvoAEdu-e7JlHBQtRA" annotatedElement="_UZvynfoAEdu-e7JlHBQtRA">
+ <body>Association to be cleared.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvyn_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyoPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyofoAEdu-e7JlHBQtRA" name="BroadcastSignalAction">
+ <ownedComment xmi:id="_UZvyovoAEdu-e7JlHBQtRA" annotatedElement="_UZvyofoAEdu-e7JlHBQtRA">
+ <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="_UZvyo_oAEdu-e7JlHBQtRA" name="number_and_order" constrainedElement="_UZvyofoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvypPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyo_oAEdu-e7JlHBQtRA">
+ <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="_UZvypfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvypvoAEdu-e7JlHBQtRA" name="type_ordering_multiplicity" constrainedElement="_UZvyofoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyp_oAEdu-e7JlHBQtRA" annotatedElement="_UZvypvoAEdu-e7JlHBQtRA">
+ <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="_UZvyqPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvyqfoAEdu-e7JlHBQtRA" general="_UXz4N_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvyqvoAEdu-e7JlHBQtRA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_UZ472foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyq_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyqvoAEdu-e7JlHBQtRA">
+ <body>The specification of signal object transmitted to the target objects.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvyrPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyrfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyrvoAEdu-e7JlHBQtRA" name="SendObjectAction">
+ <ownedComment xmi:id="_UZvyr_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyrvoAEdu-e7JlHBQtRA">
+ <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="_UZvysPoAEdu-e7JlHBQtRA" general="_UXz4N_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvysfoAEdu-e7JlHBQtRA" name="target" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UZ470foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvysvoAEdu-e7JlHBQtRA" annotatedElement="_UZvysfoAEdu-e7JlHBQtRA">
+ <body>The target object to which the object is sent.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvys_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvytPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvytfoAEdu-e7JlHBQtRA" name="request" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" redefinedProperty="_UXz4OvoAEdu-e7JlHBQtRA" association="_UZ471foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvytvoAEdu-e7JlHBQtRA" annotatedElement="_UZvytfoAEdu-e7JlHBQtRA">
+ <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="_UZvyt_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyuPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyufoAEdu-e7JlHBQtRA" name="LinkEndDestructionData">
+ <ownedComment xmi:id="_UZvyuvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyufoAEdu-e7JlHBQtRA">
+ <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="_UZvyu_oAEdu-e7JlHBQtRA" name="destroy_link_action" constrainedElement="_UZvyufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyvPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyu_oAEdu-e7JlHBQtRA">
+ <body>LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyvfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyvvoAEdu-e7JlHBQtRA" name="unlimited_natural_and_multiplicity" constrainedElement="_UZvyufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyv_oAEdu-e7JlHBQtRA" annotatedElement="_UZvyvvoAEdu-e7JlHBQtRA">
+ <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="_UZvywPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvywfoAEdu-e7JlHBQtRA" general="_UZvyP_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZvywvoAEdu-e7JlHBQtRA" name="isDestroyDuplicates" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZvyw_oAEdu-e7JlHBQtRA" annotatedElement="_UZvywvoAEdu-e7JlHBQtRA">
+ <body>Specifies whether to destroy duplicates of the value in nonunique association ends.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZvyxPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvyxfoAEdu-e7JlHBQtRA" name="destroyAt" type="_UXz4NPoAEdu-e7JlHBQtRA" association="_UZ474foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyxvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyxfoAEdu-e7JlHBQtRA">
+ <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="_UZvyx_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyyPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZ47cPoAEdu-e7JlHBQtRA" name="ValueSpecificationAction">
+ <ownedComment xmi:id="_UZ47cfoAEdu-e7JlHBQtRA" annotatedElement="_UZ47cPoAEdu-e7JlHBQtRA">
+ <body>A value specification action is an action that evaluates a value specification.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZ47cvoAEdu-e7JlHBQtRA" name="compatible_type" constrainedElement="_UZ47cPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZ47c_oAEdu-e7JlHBQtRA" annotatedElement="_UZ47cvoAEdu-e7JlHBQtRA">
+ <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="_UZ47dPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZ47dfoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZ47cPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZ47dvoAEdu-e7JlHBQtRA" annotatedElement="_UZ47dfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the result pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZ47d_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZ47ePoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZ47efoAEdu-e7JlHBQtRA" name="value" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" association="_UZ476foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZ47evoAEdu-e7JlHBQtRA" annotatedElement="_UZ47efoAEdu-e7JlHBQtRA">
+ <body>Value specification to be evaluated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47e_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47fPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZ47ffoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UZ477foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZ47fvoAEdu-e7JlHBQtRA" annotatedElement="_UZ47ffoAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47f_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47gPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47gfoAEdu-e7JlHBQtRA" name="A_classifier_createObjectAction" memberEnd="_UZvxj_oAEdu-e7JlHBQtRA _UZ47gvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47gvoAEdu-e7JlHBQtRA" type="_UZvxgPoAEdu-e7JlHBQtRA" association="_UZ47gfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47g_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47hPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47hfoAEdu-e7JlHBQtRA" name="A_result_createObjectAction" memberEnd="_UZvxk_oAEdu-e7JlHBQtRA _UZ47hvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47hvoAEdu-e7JlHBQtRA" type="_UZvxgPoAEdu-e7JlHBQtRA" association="_UZ47hfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47h_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47iPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47ifoAEdu-e7JlHBQtRA" name="A_target_destroyObjectAction" memberEnd="_UZvxpvoAEdu-e7JlHBQtRA _UZ47ivoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47ivoAEdu-e7JlHBQtRA" type="_UZvxl_oAEdu-e7JlHBQtRA" association="_UZ47ifoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47i_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47jPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47jfoAEdu-e7JlHBQtRA" name="A_first_testIdentityAction" memberEnd="_UZvxtvoAEdu-e7JlHBQtRA _UZ47jvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47jvoAEdu-e7JlHBQtRA" type="_UZvxqvoAEdu-e7JlHBQtRA" association="_UZ47jfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47j_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47kPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47kfoAEdu-e7JlHBQtRA" name="A_second_testIdentityAction" memberEnd="_UZvxuvoAEdu-e7JlHBQtRA _UZ47kvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47kvoAEdu-e7JlHBQtRA" type="_UZvxqvoAEdu-e7JlHBQtRA" association="_UZ47kfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47k_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47lPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47lfoAEdu-e7JlHBQtRA" name="A_result_testIdentityAction" memberEnd="_UZvxvvoAEdu-e7JlHBQtRA _UZ47lvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47lvoAEdu-e7JlHBQtRA" type="_UZvxqvoAEdu-e7JlHBQtRA" association="_UZ47lfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47l_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47mPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47mfoAEdu-e7JlHBQtRA" name="A_result_readSelfAction" memberEnd="_UZvx0foAEdu-e7JlHBQtRA _UZ47mvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47mvoAEdu-e7JlHBQtRA" type="_UZvxwvoAEdu-e7JlHBQtRA" association="_UZ47mfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47m_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47nPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47nfoAEdu-e7JlHBQtRA" name="A_structuralFeatureAction_structuralFeature" memberEnd="_UZ47nvoAEdu-e7JlHBQtRA _UZvx5_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47nvoAEdu-e7JlHBQtRA" type="_UZvx1foAEdu-e7JlHBQtRA" association="_UZ47nfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47n_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47oPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47ofoAEdu-e7JlHBQtRA" name="A_object_structuralFeatureAction" memberEnd="_UZvx6_oAEdu-e7JlHBQtRA _UZ47ovoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47ovoAEdu-e7JlHBQtRA" type="_UZvx1foAEdu-e7JlHBQtRA" association="_UZ47ofoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47o_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47pPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47pfoAEdu-e7JlHBQtRA" name="A_result_readStructuralFeatureAction" memberEnd="_UZvx-PoAEdu-e7JlHBQtRA _UZ47pvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47pvoAEdu-e7JlHBQtRA" type="_UZvx7_oAEdu-e7JlHBQtRA" association="_UZ47pfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47p_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47qPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47qfoAEdu-e7JlHBQtRA" name="A_value_writeStructuralFeatureAction" memberEnd="_UZvyBfoAEdu-e7JlHBQtRA _UZ47qvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47qvoAEdu-e7JlHBQtRA" type="_UZvx_PoAEdu-e7JlHBQtRA" association="_UZ47qfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47q_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47rPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47rfoAEdu-e7JlHBQtRA" name="A_insertAt_addStructuralFeatureValueAction" memberEnd="_UZvyIvoAEdu-e7JlHBQtRA _UZ47rvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47rvoAEdu-e7JlHBQtRA" type="_UZvyGfoAEdu-e7JlHBQtRA" association="_UZ47rfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47r_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47sPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47sfoAEdu-e7JlHBQtRA" name="A_endData_linkAction" memberEnd="_UZvyMvoAEdu-e7JlHBQtRA _UZ47svoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47svoAEdu-e7JlHBQtRA" type="_UZvyJvoAEdu-e7JlHBQtRA" association="_UZ47sfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47s_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47tPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47tfoAEdu-e7JlHBQtRA" name="A_value_linkEndData" memberEnd="_UZvyS_oAEdu-e7JlHBQtRA _UZ47tvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47tvoAEdu-e7JlHBQtRA" type="_UZvyP_oAEdu-e7JlHBQtRA" association="_UZ47tfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47t_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47uPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47ufoAEdu-e7JlHBQtRA" name="A_end_linkEndData" memberEnd="_UZvyT_oAEdu-e7JlHBQtRA _UZ47uvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47uvoAEdu-e7JlHBQtRA" type="_UZvyP_oAEdu-e7JlHBQtRA" association="_UZ47ufoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47u_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47vPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47vfoAEdu-e7JlHBQtRA" name="A_result_readLinkAction" memberEnd="_UZvyZfoAEdu-e7JlHBQtRA _UZ47vvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47vvoAEdu-e7JlHBQtRA" type="_UZvyU_oAEdu-e7JlHBQtRA" association="_UZ47vfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47v_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47wPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47wfoAEdu-e7JlHBQtRA" name="A_insertAt_linkEndCreationData" memberEnd="_UZvydfoAEdu-e7JlHBQtRA _UZ47wvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47wvoAEdu-e7JlHBQtRA" type="_UZvyafoAEdu-e7JlHBQtRA" association="_UZ47wfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47w_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47xPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47xfoAEdu-e7JlHBQtRA" name="A_endData_createLinkAction" memberEnd="_UZvyf_oAEdu-e7JlHBQtRA _UZ47xvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47xvoAEdu-e7JlHBQtRA" type="_UZvyefoAEdu-e7JlHBQtRA" association="_UZ47xfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47x_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47yPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47yfoAEdu-e7JlHBQtRA" name="A_object_clearAssociationAction" memberEnd="_UZvymfoAEdu-e7JlHBQtRA _UZ47yvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47yvoAEdu-e7JlHBQtRA" type="_UZvykPoAEdu-e7JlHBQtRA" association="_UZ47yfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47y_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ47zPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ47zfoAEdu-e7JlHBQtRA" name="A_association_clearAssociationAction" memberEnd="_UZvynfoAEdu-e7JlHBQtRA _UZ47zvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ47zvoAEdu-e7JlHBQtRA" type="_UZvykPoAEdu-e7JlHBQtRA" association="_UZ47zfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ47z_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ470PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ470foAEdu-e7JlHBQtRA" name="A_target_sendObjectAction" memberEnd="_UZvysfoAEdu-e7JlHBQtRA _UZ470voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ470voAEdu-e7JlHBQtRA" type="_UZvyrvoAEdu-e7JlHBQtRA" association="_UZ470foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ470_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ471PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ471foAEdu-e7JlHBQtRA" name="A_request_sendObjectAction" memberEnd="_UZvytfoAEdu-e7JlHBQtRA _UZ471voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ471voAEdu-e7JlHBQtRA" type="_UZvyrvoAEdu-e7JlHBQtRA" association="_UZ471foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ471_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ472PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ472foAEdu-e7JlHBQtRA" name="A_signal_broadcastSignalAction" memberEnd="_UZvyqvoAEdu-e7JlHBQtRA _UZ472voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ472voAEdu-e7JlHBQtRA" type="_UZvyofoAEdu-e7JlHBQtRA" association="_UZ472foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ472_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ473PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ473foAEdu-e7JlHBQtRA" name="A_removeAt_removeStructuralFeatureValueAction" memberEnd="_UZvyFfoAEdu-e7JlHBQtRA _UZ473voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ473voAEdu-e7JlHBQtRA" type="_UZvyDPoAEdu-e7JlHBQtRA" association="_UZ473foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ473_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ474PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ474foAEdu-e7JlHBQtRA" name="A_destroyAt_linkEndDestructionData" memberEnd="_UZvyxfoAEdu-e7JlHBQtRA _UZ474voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ474voAEdu-e7JlHBQtRA" type="_UZvyufoAEdu-e7JlHBQtRA" association="_UZ474foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ474_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ475PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ475foAEdu-e7JlHBQtRA" name="A_endData_destroyLinkAction" memberEnd="_UZvyhvoAEdu-e7JlHBQtRA _UZ475voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ475voAEdu-e7JlHBQtRA" type="_UZvyg_oAEdu-e7JlHBQtRA" association="_UZ475foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ475_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ476PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ476foAEdu-e7JlHBQtRA" name="A_value_valueSpecificationAction" memberEnd="_UZ47efoAEdu-e7JlHBQtRA _UZ476voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ476voAEdu-e7JlHBQtRA" type="_UZ47cPoAEdu-e7JlHBQtRA" association="_UZ476foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ476_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ477PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ477foAEdu-e7JlHBQtRA" name="A_result_valueSpecificationAction" memberEnd="_UZ47ffoAEdu-e7JlHBQtRA _UZ477voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ477voAEdu-e7JlHBQtRA" type="_UZ47cPoAEdu-e7JlHBQtRA" association="_UZ477foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ477_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ478PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZ478foAEdu-e7JlHBQtRA" name="A_inputValue_linkAction" memberEnd="_UZvyNvoAEdu-e7JlHBQtRA _UZ478voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZ478voAEdu-e7JlHBQtRA" type="_UZvyJvoAEdu-e7JlHBQtRA" association="_UZ478foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZ478_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZ479PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DylKEH4YEdq7cMP_l1l5Gg" name="TimeExpression">
+ <ownedComment xmi:id="_UaCscPoAEdu-e7JlHBQtRA" annotatedElement="_DylKEH4YEdq7cMP_l1l5Gg">
+ <body>A time expression defines a value specification that represents a time value.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCscfoAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCscvoAEdu-e7JlHBQtRA" name="expr" type="_UT7dj_oAEdu-e7JlHBQtRA" association="_UaCtDvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsc_oAEdu-e7JlHBQtRA" annotatedElement="_UaCscvoAEdu-e7JlHBQtRA">
+ <body>The value of the time expression.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsdPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsdfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCsdvoAEdu-e7JlHBQtRA" name="observation" type="_UaCsxPoAEdu-e7JlHBQtRA" association="_UaCtCPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsd_oAEdu-e7JlHBQtRA" annotatedElement="_UaCsdvoAEdu-e7JlHBQtRA">
+ <body>Refers to the time and duration observations that are involved in expr.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsePoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsefoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_JdkW8H4YEdq7cMP_l1l5Gg" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_JdkW8X4YEdq7cMP_l1l5Gg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-Ixo8H4XEdq7cMP_l1l5Gg" name="Duration">
+ <ownedComment xmi:id="_UaCsevoAEdu-e7JlHBQtRA" annotatedElement="_-Ixo8H4XEdq7cMP_l1l5Gg">
+ <body>Duration defines a value specification that specifies the temporal distance between two time instants.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCse_oAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCsfPoAEdu-e7JlHBQtRA" name="expr" type="_UT7dj_oAEdu-e7JlHBQtRA" association="_UaCtEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsffoAEdu-e7JlHBQtRA" annotatedElement="_UaCsfPoAEdu-e7JlHBQtRA">
+ <body>The value of the Duration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsfvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsf_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCsgPoAEdu-e7JlHBQtRA" name="observation" type="_UaCsxPoAEdu-e7JlHBQtRA" association="_UaCtBPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsgfoAEdu-e7JlHBQtRA" annotatedElement="_UaCsgPoAEdu-e7JlHBQtRA">
+ <body>Refers to the time and duration observations that are involved in expr.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsgvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsg_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_I3a88H4YEdq7cMP_l1l5Gg" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_I3a88X4YEdq7cMP_l1l5Gg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCshPoAEdu-e7JlHBQtRA" name="DurationInterval">
+ <ownedComment xmi:id="_UaCshfoAEdu-e7JlHBQtRA" annotatedElement="_UaCshPoAEdu-e7JlHBQtRA">
+ <body>A duration interval defines the range between two durations.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCshvoAEdu-e7JlHBQtRA" general="_UaCstPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCsh_oAEdu-e7JlHBQtRA" name="min" type="_-Ixo8H4XEdq7cMP_l1l5Gg" redefinedProperty="_UaCst_oAEdu-e7JlHBQtRA" association="_UaCs4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsiPoAEdu-e7JlHBQtRA" annotatedElement="_UaCsh_oAEdu-e7JlHBQtRA">
+ <body>Refers to the Duration denoting the minimum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCsifoAEdu-e7JlHBQtRA" name="max" type="_-Ixo8H4XEdq7cMP_l1l5Gg" redefinedProperty="_UaCsu_oAEdu-e7JlHBQtRA" association="_UaCs5PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsivoAEdu-e7JlHBQtRA" annotatedElement="_UaCsifoAEdu-e7JlHBQtRA">
+ <body>Refers to the Duration denoting the maximum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCsi_oAEdu-e7JlHBQtRA" name="TimeConstraint">
+ <ownedComment xmi:id="_UaCsjPoAEdu-e7JlHBQtRA" annotatedElement="_UaCsi_oAEdu-e7JlHBQtRA">
+ <body>A time constraint is a constraint that refers to a time interval.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCsjfoAEdu-e7JlHBQtRA" general="_UaCsrfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCsjvoAEdu-e7JlHBQtRA" name="specification" type="_UaCsl_oAEdu-e7JlHBQtRA" aggregation="composite" redefinedProperty="_UaCssPoAEdu-e7JlHBQtRA" association="_UaCs8PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsj_oAEdu-e7JlHBQtRA" annotatedElement="_UaCsjvoAEdu-e7JlHBQtRA">
+ <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="_UaCskPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCskfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCskvoAEdu-e7JlHBQtRA" name="firstEvent" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UaCsk_oAEdu-e7JlHBQtRA" annotatedElement="_UaCskvoAEdu-e7JlHBQtRA">
+ <body>The value of firstEvent is related to constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within constrainedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCslPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCslfoAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UaCslvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCsl_oAEdu-e7JlHBQtRA" name="TimeInterval">
+ <ownedComment xmi:id="_UaCsmPoAEdu-e7JlHBQtRA" annotatedElement="_UaCsl_oAEdu-e7JlHBQtRA">
+ <body>A time interval defines the range between two time expressions.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCsmfoAEdu-e7JlHBQtRA" general="_UaCstPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCsmvoAEdu-e7JlHBQtRA" name="max" type="_DylKEH4YEdq7cMP_l1l5Gg" redefinedProperty="_UaCsu_oAEdu-e7JlHBQtRA" association="_UaCs6PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsm_oAEdu-e7JlHBQtRA" annotatedElement="_UaCsmvoAEdu-e7JlHBQtRA">
+ <body>Refers to the TimeExpression denoting the maximum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCsnPoAEdu-e7JlHBQtRA" name="min" type="_DylKEH4YEdq7cMP_l1l5Gg" redefinedProperty="_UaCst_oAEdu-e7JlHBQtRA" association="_UaCs7PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsnfoAEdu-e7JlHBQtRA" annotatedElement="_UaCsnPoAEdu-e7JlHBQtRA">
+ <body>Refers to the TimeExpression denoting the minimum value of the range.</body>
+ </ownedComment>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCsnvoAEdu-e7JlHBQtRA" name="DurationConstraint">
+ <ownedComment xmi:id="_UaCsn_oAEdu-e7JlHBQtRA" annotatedElement="_UaCsnvoAEdu-e7JlHBQtRA">
+ <body>A duration constraint is a constraint that refers to a duration interval.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaCsoPoAEdu-e7JlHBQtRA" name="first_event_multiplicity" constrainedElement="_UaCsnvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsofoAEdu-e7JlHBQtRA" annotatedElement="_UaCsoPoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaCsovoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>if (constrainedElement->size() =2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UaCso_oAEdu-e7JlHBQtRA" general="_UaCsrfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCspPoAEdu-e7JlHBQtRA" name="specification" type="_UaCshPoAEdu-e7JlHBQtRA" aggregation="composite" redefinedProperty="_UaCssPoAEdu-e7JlHBQtRA" association="_UaCs9PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCspfoAEdu-e7JlHBQtRA" annotatedElement="_UaCspPoAEdu-e7JlHBQtRA">
+ <body>The interval constraining the duration.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCspvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsp_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCsqPoAEdu-e7JlHBQtRA" name="firstEvent" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UaCsqfoAEdu-e7JlHBQtRA" annotatedElement="_UaCsqPoAEdu-e7JlHBQtRA">
+ <body>The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i]. Default value is true applied when constrainedElement[i] refers an element that represents only one time instant.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsqvoAEdu-e7JlHBQtRA" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsq_oAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UaCsrPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCsrfoAEdu-e7JlHBQtRA" name="IntervalConstraint">
+ <ownedComment xmi:id="_UaCsrvoAEdu-e7JlHBQtRA" annotatedElement="_UaCsrfoAEdu-e7JlHBQtRA">
+ <body>An interval constraint is a constraint that refers to an interval.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCsr_oAEdu-e7JlHBQtRA" general="_UUFO7voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCssPoAEdu-e7JlHBQtRA" name="specification" type="_UaCstPoAEdu-e7JlHBQtRA" aggregation="composite" redefinedProperty="_UUFO-_oAEdu-e7JlHBQtRA" association="_UaCtAPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCssfoAEdu-e7JlHBQtRA" annotatedElement="_UaCssPoAEdu-e7JlHBQtRA">
+ <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="_UaCssvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCss_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCstPoAEdu-e7JlHBQtRA" name="Interval">
+ <ownedComment xmi:id="_UaCstfoAEdu-e7JlHBQtRA" annotatedElement="_UaCstPoAEdu-e7JlHBQtRA">
+ <body>An interval defines the range between two value specifications.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCstvoAEdu-e7JlHBQtRA" general="_UT7dj_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCst_oAEdu-e7JlHBQtRA" name="min" type="_UT7dj_oAEdu-e7JlHBQtRA" association="_UaCs-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsuPoAEdu-e7JlHBQtRA" annotatedElement="_UaCst_oAEdu-e7JlHBQtRA">
+ <body>Refers to the ValueSpecification denoting the minimum value of the range.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsufoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsuvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCsu_oAEdu-e7JlHBQtRA" name="max" type="_UT7dj_oAEdu-e7JlHBQtRA" association="_UaCs_PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsvPoAEdu-e7JlHBQtRA" annotatedElement="_UaCsu_oAEdu-e7JlHBQtRA">
+ <body>Refers to the ValueSpecification denoting the maximum value of the range.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCsvfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsvvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCsxPoAEdu-e7JlHBQtRA" name="Observation" isAbstract="true">
+ <ownedComment xmi:id="_UaCsxfoAEdu-e7JlHBQtRA" annotatedElement="_UaCsxPoAEdu-e7JlHBQtRA">
+ <body>Observation is a superclass of TimeObservation and DurationObservation in order for TimeExpression and Duration to refer to either in a simple way.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCsxvoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCsx_oAEdu-e7JlHBQtRA" name="TimeObservation">
+ <ownedComment xmi:id="_UaCsyPoAEdu-e7JlHBQtRA" annotatedElement="_UaCsx_oAEdu-e7JlHBQtRA">
+ <body>A time observation is a reference to a time instant during an execution. It points out the element in the model to observe and whether the observation is when this model element is entered or when it is exited.</body>
+ </ownedComment>
+ <generalization xmi:id="_UaCsyfoAEdu-e7JlHBQtRA" general="_UaCsxPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCsyvoAEdu-e7JlHBQtRA" name="event" type="_csVgUGvtEdqG6fBIPwe-mw" association="_UaCtFvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCsy_oAEdu-e7JlHBQtRA" annotatedElement="_UaCsyvoAEdu-e7JlHBQtRA">
+ <body>The observation is determined by the entering or exiting of the event element during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCszPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCszfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCszvoAEdu-e7JlHBQtRA" name="firstEvent" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UaCsz_oAEdu-e7JlHBQtRA" annotatedElement="_UaCszvoAEdu-e7JlHBQtRA">
+ <body>The value of firstEvent is related to event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters event. If firstEvent is false, then the corresponding observation event is the time instant the execution exits event.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UaCs0PoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaCs0foAEdu-e7JlHBQtRA" name="DurationObservation">
+ <ownedComment xmi:id="_UaCs0voAEdu-e7JlHBQtRA" annotatedElement="_UaCs0foAEdu-e7JlHBQtRA">
+ <body>A duration observation is a reference to a duration during an execution. It points out the element(s) in the model to observe and whether the observations are when this model element is entered or when it is exited.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaCs0_oAEdu-e7JlHBQtRA" name="first_event_multiplicity" constrainedElement="_UaCs0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCs1PoAEdu-e7JlHBQtRA" annotatedElement="_UaCs0_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaCs1foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>if (event->size() = 2)&#xD;&#xA; then (firstEvent->size() = 2) else (firstEvent->size() = 0)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UaCs1voAEdu-e7JlHBQtRA" general="_UaCsxPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UaCs1_oAEdu-e7JlHBQtRA" name="event" type="_csVgUGvtEdqG6fBIPwe-mw" association="_UaCtGvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCs2PoAEdu-e7JlHBQtRA" annotatedElement="_UaCs1_oAEdu-e7JlHBQtRA">
+ <body>The observation is determined by the entering or exiting of the event element during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs2foAEdu-e7JlHBQtRA" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs2voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaCs2_oAEdu-e7JlHBQtRA" name="firstEvent" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UaCs3PoAEdu-e7JlHBQtRA" annotatedElement="_UaCs2_oAEdu-e7JlHBQtRA">
+ <body>The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i]. Default value is true applied when event[i] refers an element that represents only one time instant.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs3foAEdu-e7JlHBQtRA" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs3voAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UaCs3_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" value="true"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs4PoAEdu-e7JlHBQtRA" name="A_min_durationInterval" memberEnd="_UaCsh_oAEdu-e7JlHBQtRA _UaCs4foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs4foAEdu-e7JlHBQtRA" type="_UaCshPoAEdu-e7JlHBQtRA" association="_UaCs4PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs4voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs4_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs5PoAEdu-e7JlHBQtRA" name="A_max_durationInterval" memberEnd="_UaCsifoAEdu-e7JlHBQtRA _UaCs5foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs5foAEdu-e7JlHBQtRA" type="_UaCshPoAEdu-e7JlHBQtRA" association="_UaCs5PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs5voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs5_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs6PoAEdu-e7JlHBQtRA" name="A_max_timeInterval" memberEnd="_UaCsmvoAEdu-e7JlHBQtRA _UaCs6foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs6foAEdu-e7JlHBQtRA" type="_UaCsl_oAEdu-e7JlHBQtRA" association="_UaCs6PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs6voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs6_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs7PoAEdu-e7JlHBQtRA" name="A_min_timeInterval" memberEnd="_UaCsnPoAEdu-e7JlHBQtRA _UaCs7foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs7foAEdu-e7JlHBQtRA" type="_UaCsl_oAEdu-e7JlHBQtRA" association="_UaCs7PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs7voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs7_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs8PoAEdu-e7JlHBQtRA" name="A_specification_timeConstraint" memberEnd="_UaCsjvoAEdu-e7JlHBQtRA _UaCs8foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs8foAEdu-e7JlHBQtRA" type="_UaCsi_oAEdu-e7JlHBQtRA" association="_UaCs8PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs8voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs8_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs9PoAEdu-e7JlHBQtRA" name="A_specification_durationConstraint" memberEnd="_UaCspPoAEdu-e7JlHBQtRA _UaCs9foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs9foAEdu-e7JlHBQtRA" type="_UaCsnvoAEdu-e7JlHBQtRA" association="_UaCs9PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs9voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs9_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs-PoAEdu-e7JlHBQtRA" name="A_min_interval" memberEnd="_UaCst_oAEdu-e7JlHBQtRA _UaCs-foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs-foAEdu-e7JlHBQtRA" type="_UaCstPoAEdu-e7JlHBQtRA" association="_UaCs-PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs-voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs-_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCs_PoAEdu-e7JlHBQtRA" name="A_max_interval" memberEnd="_UaCsu_oAEdu-e7JlHBQtRA _UaCs_foAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCs_foAEdu-e7JlHBQtRA" type="_UaCstPoAEdu-e7JlHBQtRA" association="_UaCs_PoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCs_voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCs__oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtAPoAEdu-e7JlHBQtRA" name="A_specification_intervalConstraint" memberEnd="_UaCssPoAEdu-e7JlHBQtRA _UaCtAfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtAfoAEdu-e7JlHBQtRA" type="_UaCsrfoAEdu-e7JlHBQtRA" association="_UaCtAPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtAvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtA_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtBPoAEdu-e7JlHBQtRA" name="A_observation_duration" memberEnd="_UaCsgPoAEdu-e7JlHBQtRA _UaCtBfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtBfoAEdu-e7JlHBQtRA" type="_-Ixo8H4XEdq7cMP_l1l5Gg" association="_UaCtBPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtBvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtB_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtCPoAEdu-e7JlHBQtRA" name="A_observation_timeExpression" memberEnd="_UaCsdvoAEdu-e7JlHBQtRA _UaCtCfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtCfoAEdu-e7JlHBQtRA" type="_DylKEH4YEdq7cMP_l1l5Gg" association="_UaCtCPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtCvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtC_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UZJUkPoAEdu-e7JlHBQtRA" name="A_when_timeEvent" memberEnd="_UZAK__oAEdu-e7JlHBQtRA _UZJUkfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UZJUkfoAEdu-e7JlHBQtRA" type="_UZAK-foAEdu-e7JlHBQtRA" association="_UZJUkPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtDPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtDfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtDvoAEdu-e7JlHBQtRA" name="A_expr_timeExpression" memberEnd="_UaCscvoAEdu-e7JlHBQtRA _UaCtD_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtD_oAEdu-e7JlHBQtRA" type="_DylKEH4YEdq7cMP_l1l5Gg" association="_UaCtDvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtEPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtEfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtEvoAEdu-e7JlHBQtRA" name="A_expr_duration" memberEnd="_UaCsfPoAEdu-e7JlHBQtRA _UaCtE_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtE_oAEdu-e7JlHBQtRA" type="_-Ixo8H4XEdq7cMP_l1l5Gg" association="_UaCtEvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtFPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtFfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtFvoAEdu-e7JlHBQtRA" name="A_event_timeObservation" memberEnd="_UaCsyvoAEdu-e7JlHBQtRA _UaCtF_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtF_oAEdu-e7JlHBQtRA" type="_UaCsx_oAEdu-e7JlHBQtRA" association="_UaCtFvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtGPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtGfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaCtGvoAEdu-e7JlHBQtRA" name="A_event_durationObservation" memberEnd="_UaCs1_oAEdu-e7JlHBQtRA _UaCtG_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaCtG_oAEdu-e7JlHBQtRA" type="_UaCs0foAEdu-e7JlHBQtRA" association="_UaCtGvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCtHPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCtHfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz4N_oAEdu-e7JlHBQtRA" name="InvocationAction" isAbstract="true">
+ <ownedComment xmi:id="_UXz4OPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4N_oAEdu-e7JlHBQtRA">
+ <body>InvocationAction is an abstract class for the various actions that invoke behavior.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UaMdcPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4N_oAEdu-e7JlHBQtRA">
+ <body>In addition to targeting an object, invocation actions can also invoke behavioral features on ports from where the invocation requests are routed onwards on links deriving from attached connectors. Invocation actions may also be sent to a target via a given port, either on the sending object or on another object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaMdcfoAEdu-e7JlHBQtRA" name="on_port_receiver" constrainedElement="_UXz4N_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdcvoAEdu-e7JlHBQtRA" annotatedElement="_UaMdcfoAEdu-e7JlHBQtRA">
+ <body>The onPort must be a port on the receiver object.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdc_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz4OfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UXz4OvoAEdu-e7JlHBQtRA" name="argument" type="_UXz4NPoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UX9CLPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz4O_oAEdu-e7JlHBQtRA" annotatedElement="_UXz4OvoAEdu-e7JlHBQtRA">
+ <body>Specification of the ordered set of argument values that appears during execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz4PPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz4PfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaMddPoAEdu-e7JlHBQtRA" name="onPort" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_UaMdgfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMddfoAEdu-e7JlHBQtRA" annotatedElement="_UaMddPoAEdu-e7JlHBQtRA">
+ <body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMddvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdd_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZAK2PoAEdu-e7JlHBQtRA" name="Trigger">
+ <ownedComment xmi:id="_UZAK2foAEdu-e7JlHBQtRA" annotatedElement="_UZAK2PoAEdu-e7JlHBQtRA">
+ <body>A trigger relates an event to a behavior that may affect an instance of the classifier.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UaMdePoAEdu-e7JlHBQtRA" annotatedElement="_UZAK2PoAEdu-e7JlHBQtRA">
+ <body>A trigger specification may be qualified by the port on which the event occurred.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZAK2voAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UZAK2_oAEdu-e7JlHBQtRA" name="event" type="_UZALDfoAEdu-e7JlHBQtRA" association="_UZJUovoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK3PoAEdu-e7JlHBQtRA" annotatedElement="_UZAK2_oAEdu-e7JlHBQtRA">
+ <body>The event that causes the trigger.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAK3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAK3voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaMdefoAEdu-e7JlHBQtRA" name="port" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_UaMdffoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdevoAEdu-e7JlHBQtRA" annotatedElement="_UaMdefoAEdu-e7JlHBQtRA">
+ <body>A optional port of the receiver object on which the behavioral feature is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMde_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdfPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaMdffoAEdu-e7JlHBQtRA" name="A_port_trigger" memberEnd="_UaMdefoAEdu-e7JlHBQtRA _UaMdfvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaMdfvoAEdu-e7JlHBQtRA" type="_UZAK2PoAEdu-e7JlHBQtRA" association="_UaMdffoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMdf_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdgPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UaMdgfoAEdu-e7JlHBQtRA" name="A_onPort_invocationAction" memberEnd="_UaMddPoAEdu-e7JlHBQtRA _UaMdgvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UaMdgvoAEdu-e7JlHBQtRA" type="_UXz4N_oAEdu-e7JlHBQtRA" association="_UaMdgfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMdg_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdhPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UaMdhfoAEdu-e7JlHBQtRA" name="StateMachine">
+ <ownedComment xmi:id="_UaMdhvoAEdu-e7JlHBQtRA" annotatedElement="_UaMdhfoAEdu-e7JlHBQtRA">
+ <body>State machines can be used to express the behavior of part of a system. Behavior is modeled as a traversal of a graph of state nodes interconnected by one or more joined transition arcs that are triggered by the dispatching of series of (event) occurrences. During this traversal, the state machine executes a series of activities associated with various elements of the state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaMdh_oAEdu-e7JlHBQtRA" name="classifier_context" constrainedElement="_UaMdhfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdiPoAEdu-e7JlHBQtRA" annotatedElement="_UaMdh_oAEdu-e7JlHBQtRA">
+ <body>The classifier context of a state machine cannot be an interface.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdifoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>context->notEmpty() implies not context.oclIsKindOf(Interface)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UaMdivoAEdu-e7JlHBQtRA" name="context_classifier" constrainedElement="_UaMdhfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdi_oAEdu-e7JlHBQtRA" annotatedElement="_UaMdivoAEdu-e7JlHBQtRA">
+ <body>The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdjPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UaMdjfoAEdu-e7JlHBQtRA" name="connection_points" constrainedElement="_UaMdhfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdjvoAEdu-e7JlHBQtRA" annotatedElement="_UaMdjfoAEdu-e7JlHBQtRA">
+ <body>The connection points of a state machine are pseudostates of kind entry point or exit point.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdj_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UaMdkPoAEdu-e7JlHBQtRA" name="method" constrainedElement="_UaMdhfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdkfoAEdu-e7JlHBQtRA" annotatedElement="_UaMdkPoAEdu-e7JlHBQtRA">
+ <body>A state machine as the method for a behavioral feature cannot have entry/exit connection points.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdkvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>specification->notEmpty() implies connectionPoint->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UaMdk_oAEdu-e7JlHBQtRA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UaMdlPoAEdu-e7JlHBQtRA" name="region" type="_UayTo_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UayUH_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdlfoAEdu-e7JlHBQtRA" annotatedElement="_UaMdlPoAEdu-e7JlHBQtRA">
+ <body>The regions owned directly by the state machine.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMdlvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdl_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaMdmPoAEdu-e7JlHBQtRA" name="connectionPoint" type="_UayTUPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UayUIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdmfoAEdu-e7JlHBQtRA" annotatedElement="_UaMdmPoAEdu-e7JlHBQtRA">
+ <body>The connection points defined for this state machine. They represent the interface of the state machine when used as part of submachine state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMdmvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdm_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaMdnPoAEdu-e7JlHBQtRA" name="extendedStateMachine" type="_UaMdhfoAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UayUJvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdnfoAEdu-e7JlHBQtRA" annotatedElement="_UaMdnPoAEdu-e7JlHBQtRA">
+ <body>The state machines of which this is an extension.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMdnvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdn_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UaMdoPoAEdu-e7JlHBQtRA" name="submachineState" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayUDfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdofoAEdu-e7JlHBQtRA" annotatedElement="_UaMdoPoAEdu-e7JlHBQtRA">
+ <body>References the submachine(s) in case of a submachine state. Multiple machines are referenced in case of a concurrent state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaMdovoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaMdo_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UaMdpPoAEdu-e7JlHBQtRA" name="LCA" isQuery="true" bodyCondition="_UaMdpvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdpfoAEdu-e7JlHBQtRA" annotatedElement="_UaMdpPoAEdu-e7JlHBQtRA">
+ <body>The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaMdpvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UaMdpPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdp_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UaMdqPoAEdu-e7JlHBQtRA" type="_ZiwkoGwLEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_UaMdqfoAEdu-e7JlHBQtRA" name="s1" type="_UapJZvoAEdu-e7JlHBQtRA"/>
+ <ownedParameter xmi:id="_UaMdqvoAEdu-e7JlHBQtRA" name="s2" type="_UapJZvoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UaMdq_oAEdu-e7JlHBQtRA" name="ancestor" isQuery="true" bodyCondition="_UaMdrfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMdrPoAEdu-e7JlHBQtRA" annotatedElement="_UaMdq_oAEdu-e7JlHBQtRA">
+ <body>The query ancestor(s1, s2) checks whether s2 is an ancestor state of state s1. context StateMachine::ancestor (s1 : State, s2 : State) : Boolean&#xD;
+</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaMdrfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UaMdq_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdrvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if (s2 = s1) then&#xA;true&#xA;else if (s1.container->isEmpty) then&#xA;true&#xA;else if (s2.container->isEmpty) then&#xA;false&#xA;else (ancestor (s1, s2.container))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UaMdr_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UaMdsPoAEdu-e7JlHBQtRA" name="s1" type="_UapJZvoAEdu-e7JlHBQtRA"/>
+ <ownedParameter xmi:id="_UaMdsfoAEdu-e7JlHBQtRA" name="s2" type="_UapJZvoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UaMdsvoAEdu-e7JlHBQtRA" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="_UT7dd_oAEdu-e7JlHBQtRA" bodyCondition="_UaMdtPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaMds_oAEdu-e7JlHBQtRA" annotatedElement="_UaMdsvoAEdu-e7JlHBQtRA">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a statemachine are properly related to the redefinition contexts of the specified statemachine to allow this element to redefine the other. The containing classifier of a redefining statemachine must redefine the containing classifier of the redefined statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaMdtPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UaMdsvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaMdtfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UaMdtvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UaMdt_oAEdu-e7JlHBQtRA" name="redefined" type="_UaMdhfoAEdu-e7JlHBQtRA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJYPoAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UapJYvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJYfoAEdu-e7JlHBQtRA" annotatedElement="_UapJYPoAEdu-e7JlHBQtRA">
+ <body>The query isConsistentWith() specifies that a redefining state machine is consistent with a redefined state machine provided that the redefining state machine is an extension of the redefined state machine: Regions are inherited and regions can be added, inherited regions can be redefined. In case of multiple redefining state machines, extension implies that the redefining state machine gets orthogonal regions for each of the redefined state machines.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJYvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJYPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJY_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJZPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UapJZfoAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UayTUPoAEdu-e7JlHBQtRA" name="Pseudostate">
+ <ownedComment xmi:id="_UayTUfoAEdu-e7JlHBQtRA" annotatedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <body>A pseudostate is an abstraction that encompasses different types of transient vertices in the state machine graph.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayTUvoAEdu-e7JlHBQtRA" name="initial_vertex" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTU_oAEdu-e7JlHBQtRA" annotatedElement="_UayTUvoAEdu-e7JlHBQtRA">
+ <body>An initial vertex can have at most one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTVPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #initial) implies (self.outgoing->size &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTVfoAEdu-e7JlHBQtRA" name="history_vertices" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTVvoAEdu-e7JlHBQtRA" annotatedElement="_UayTVfoAEdu-e7JlHBQtRA">
+ <body>History vertices can have at most one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTV_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies&#xA;(self.outgoing->size &lt;= 1)&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTWPoAEdu-e7JlHBQtRA" name="join_vertex" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTWfoAEdu-e7JlHBQtRA" annotatedElement="_UayTWPoAEdu-e7JlHBQtRA">
+ <body>In a complete statemachine, a join vertex must have at least two incoming transitions and exactly one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTWvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #join) implies&#xA;((self.outgoing->size = 1) and (self.incoming->size >= 2))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTW_oAEdu-e7JlHBQtRA" name="transitions_incoming" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTXPoAEdu-e7JlHBQtRA" annotatedElement="_UayTW_oAEdu-e7JlHBQtRA">
+ <body>All transitions incoming a join vertex must originate in different regions of an orthogonal state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTXfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #join) implies&#xA; self.incoming->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTXvoAEdu-e7JlHBQtRA" name="fork_vertex" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTX_oAEdu-e7JlHBQtRA" annotatedElement="_UayTXvoAEdu-e7JlHBQtRA">
+ <body>In a complete statemachine, a fork vertex must have at least two outgoing transitions and exactly one incoming transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTYPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #fork) implies&#xA;((self.incoming->size = 1) and (self.outgoing->size >= 2))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTYfoAEdu-e7JlHBQtRA" name="transitions_outgoing" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTYvoAEdu-e7JlHBQtRA" annotatedElement="_UayTYfoAEdu-e7JlHBQtRA">
+ <body>All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTY_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #fork) implies&#xA; self.outgoing->forAll (t1, t2 | t1&lt;>t2 implies&#xA; (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTZPoAEdu-e7JlHBQtRA" name="junction_vertex" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTZfoAEdu-e7JlHBQtRA" annotatedElement="_UayTZPoAEdu-e7JlHBQtRA">
+ <body>In a complete statemachine, a junction vertex must have at least one incoming and one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTZvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #junction) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTZ_oAEdu-e7JlHBQtRA" name="choice_vertex" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTaPoAEdu-e7JlHBQtRA" annotatedElement="_UayTZ_oAEdu-e7JlHBQtRA">
+ <body>In a complete statemachine, a choice vertex must have at least one incoming and one outgoing transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTafoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #choice) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTavoAEdu-e7JlHBQtRA" name="outgoing_from_initial" constrainedElement="_UayTUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTa_oAEdu-e7JlHBQtRA" annotatedElement="_UayTavoAEdu-e7JlHBQtRA">
+ <body>The outgoing transition from and initial vertex may have a behavior, but not a trigger or a guard.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTbPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self.kind = #initial) implies (self.outgoing.guard->isEmpty()&#xD;&#xA; and self.outgoing.trigger->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UayTbfoAEdu-e7JlHBQtRA" general="_UapKKvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UayTbvoAEdu-e7JlHBQtRA" name="kind" type="_UayT5foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTb_oAEdu-e7JlHBQtRA" annotatedElement="_UayTbvoAEdu-e7JlHBQtRA">
+ <body>Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UayTcPoAEdu-e7JlHBQtRA" type="_UayT5foAEdu-e7JlHBQtRA" instance="_UayT5_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTcfoAEdu-e7JlHBQtRA" name="stateMachine" type="_UaMdhfoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UayUIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTcvoAEdu-e7JlHBQtRA" annotatedElement="_UayTcfoAEdu-e7JlHBQtRA">
+ <body>The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTc_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTdPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTdfoAEdu-e7JlHBQtRA" name="state" type="_UapJZvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UayUTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTdvoAEdu-e7JlHBQtRA" annotatedElement="_UayTdfoAEdu-e7JlHBQtRA">
+ <body>The State that owns this pseudostate and in which it appears.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTd_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTePoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UayTefoAEdu-e7JlHBQtRA" name="FinalState">
+ <ownedComment xmi:id="_UayTevoAEdu-e7JlHBQtRA" annotatedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <body>A special kind of state signifying that the enclosing region is completed. If the enclosing region is directly contained in a state machine and all other regions in the state machine also are completed, then it means that the entire state machine is completed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayTe_oAEdu-e7JlHBQtRA" name="no_outgoing_transitions" constrainedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTfPoAEdu-e7JlHBQtRA" annotatedElement="_UayTe_oAEdu-e7JlHBQtRA">
+ <body>A final state cannot have any outgoing transitions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTffoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.outgoing->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTfvoAEdu-e7JlHBQtRA" name="no_regions" constrainedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTf_oAEdu-e7JlHBQtRA" annotatedElement="_UayTfvoAEdu-e7JlHBQtRA">
+ <body>A final state cannot have regions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTgPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.region->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTgfoAEdu-e7JlHBQtRA" name="cannot_reference_submachine" constrainedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTgvoAEdu-e7JlHBQtRA" annotatedElement="_UayTgfoAEdu-e7JlHBQtRA">
+ <body>A final state cannot reference a submachine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTg_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.submachine->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayThPoAEdu-e7JlHBQtRA" name="no_entry_behavior" constrainedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayThfoAEdu-e7JlHBQtRA" annotatedElement="_UayThPoAEdu-e7JlHBQtRA">
+ <body>A final state has no entry behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayThvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.entry->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTh_oAEdu-e7JlHBQtRA" name="no_exit_behavior" constrainedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTiPoAEdu-e7JlHBQtRA" annotatedElement="_UayTh_oAEdu-e7JlHBQtRA">
+ <body>A final state has no exit behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTifoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.exit->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTivoAEdu-e7JlHBQtRA" name="no_state_behavior" constrainedElement="_UayTefoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTi_oAEdu-e7JlHBQtRA" annotatedElement="_UayTivoAEdu-e7JlHBQtRA">
+ <body>A final state has no state (doActivity) behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTjPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.doActivity->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UayTjfoAEdu-e7JlHBQtRA" general="_UapJZvoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UayTjvoAEdu-e7JlHBQtRA" name="ConnectionPointReference">
+ <ownedComment xmi:id="_UayTj_oAEdu-e7JlHBQtRA" annotatedElement="_UayTjvoAEdu-e7JlHBQtRA">
+ <body>A connection point reference represents a usage (as part of a submachine state) of an entry/exit point defined in the statemachine reference by the submachine state.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayTkPoAEdu-e7JlHBQtRA" name="entry_pseudostates" constrainedElement="_UayTjvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTkfoAEdu-e7JlHBQtRA" annotatedElement="_UayTkPoAEdu-e7JlHBQtRA">
+ <body>The entry Pseudostates must be Pseudostates with kind entryPoint.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTkvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTk_oAEdu-e7JlHBQtRA" name="exit_pseudostates" constrainedElement="_UayTjvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTlPoAEdu-e7JlHBQtRA" annotatedElement="_UayTk_oAEdu-e7JlHBQtRA">
+ <body>The exit Pseudostates must be Pseudostates with kind exitPoint.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTlfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UayTlvoAEdu-e7JlHBQtRA" general="_UapKKvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UayTl_oAEdu-e7JlHBQtRA" name="entry" type="_UayTUPoAEdu-e7JlHBQtRA" association="_UayUDvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTmPoAEdu-e7JlHBQtRA" annotatedElement="_UayTl_oAEdu-e7JlHBQtRA">
+ <body>The entryPoint kind pseudo states corresponding to this connection point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTmfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTmvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTm_oAEdu-e7JlHBQtRA" name="state" type="_UapJZvoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UayUEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTnPoAEdu-e7JlHBQtRA" annotatedElement="_UayTm_oAEdu-e7JlHBQtRA">
+ <body>The State in which the connection point refreshens are defined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTnfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTnvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTn_oAEdu-e7JlHBQtRA" name="exit" type="_UayTUPoAEdu-e7JlHBQtRA" association="_UayUG_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayToPoAEdu-e7JlHBQtRA" annotatedElement="_UayTn_oAEdu-e7JlHBQtRA">
+ <body>The exitPoints kind pseudo states corresponding to this connection point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTofoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTovoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZAK-foAEdu-e7JlHBQtRA" name="TimeEvent">
+ <ownedComment xmi:id="_UZAK-voAEdu-e7JlHBQtRA" annotatedElement="_UZAK-foAEdu-e7JlHBQtRA">
+ <body>A time event specifies a point in time. At the specified time, the event occurs.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UayT4foAEdu-e7JlHBQtRA" annotatedElement="_UZAK-foAEdu-e7JlHBQtRA">
+ <body>A time event can be defined relative to entering the current state of the executing state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UaCsv_oAEdu-e7JlHBQtRA" name="when_non_negative" constrainedElement="_UZAK-foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UaCswPoAEdu-e7JlHBQtRA" annotatedElement="_UaCsv_oAEdu-e7JlHBQtRA">
+ <body>The ValueSpecification when must return a non-negative Integer.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UaCswfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayT4voAEdu-e7JlHBQtRA" name="starting_time" constrainedElement="_UZAK-foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayT4_oAEdu-e7JlHBQtRA" annotatedElement="_UayT4voAEdu-e7JlHBQtRA">
+ <body>The starting time for a relative time event may only be omitted for a time event that is the trigger of a state machine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayT5PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZAK-_oAEdu-e7JlHBQtRA" general="_UZALDfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UZAK_PoAEdu-e7JlHBQtRA" name="isRelative" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZAK_foAEdu-e7JlHBQtRA" annotatedElement="_UZAK_PoAEdu-e7JlHBQtRA">
+ <body>Specifies whether it is relative or absolute time.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZAK_voAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZAK__oAEdu-e7JlHBQtRA" name="when" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZJUkPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZALAPoAEdu-e7JlHBQtRA" annotatedElement="_UZAK__oAEdu-e7JlHBQtRA">
+ <body>Specifies the corresponding time deadline.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UaCswvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UaCsw_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UayT5foAEdu-e7JlHBQtRA" name="PseudostateKind">
+ <ownedComment xmi:id="_UayT5voAEdu-e7JlHBQtRA" annotatedElement="_UayT5foAEdu-e7JlHBQtRA">
+ <body>PseudostateKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UayT5_oAEdu-e7JlHBQtRA" name="initial">
+ <ownedComment xmi:id="_UayT6PoAEdu-e7JlHBQtRA" annotatedElement="_UayT5_oAEdu-e7JlHBQtRA">
+ <body>An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT6foAEdu-e7JlHBQtRA" name="deepHistory">
+ <ownedComment xmi:id="_UayT6voAEdu-e7JlHBQtRA" annotatedElement="_UayT6foAEdu-e7JlHBQtRA">
+ <body>DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT6_oAEdu-e7JlHBQtRA" name="shallowHistory">
+ <ownedComment xmi:id="_UayT7PoAEdu-e7JlHBQtRA" annotatedElement="_UayT6_oAEdu-e7JlHBQtRA">
+ <body>ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT7foAEdu-e7JlHBQtRA" name="join">
+ <ownedComment xmi:id="_UayT7voAEdu-e7JlHBQtRA" annotatedElement="_UayT7foAEdu-e7JlHBQtRA">
+ <body>Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT7_oAEdu-e7JlHBQtRA" name="fork">
+ <ownedComment xmi:id="_UayT8PoAEdu-e7JlHBQtRA" annotatedElement="_UayT7_oAEdu-e7JlHBQtRA">
+ <body>Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices&#xD;
+(i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT8foAEdu-e7JlHBQtRA" name="junction">
+ <ownedComment xmi:id="_UayT8voAEdu-e7JlHBQtRA" annotatedElement="_UayT8foAEdu-e7JlHBQtRA">
+ <body>Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below).</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT8_oAEdu-e7JlHBQtRA" name="choice">
+ <ownedComment xmi:id="_UayT9PoAEdu-e7JlHBQtRA" annotatedElement="_UayT8_oAEdu-e7JlHBQtRA">
+ <body>Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above).</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT9foAEdu-e7JlHBQtRA" name="entryPoint">
+ <ownedComment xmi:id="_UayT9voAEdu-e7JlHBQtRA" annotatedElement="_UayT9foAEdu-e7JlHBQtRA">
+ <body>An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT9_oAEdu-e7JlHBQtRA" name="exitPoint">
+ <ownedComment xmi:id="_UayT-PoAEdu-e7JlHBQtRA" annotatedElement="_UayT9_oAEdu-e7JlHBQtRA">
+ <body>An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayT-foAEdu-e7JlHBQtRA" name="terminate">
+ <ownedComment xmi:id="_UayT-voAEdu-e7JlHBQtRA" annotatedElement="_UayT-foAEdu-e7JlHBQtRA">
+ <body>Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UayT-_oAEdu-e7JlHBQtRA" name="TransitionKind">
+ <ownedComment xmi:id="_UayT_PoAEdu-e7JlHBQtRA" annotatedElement="_UayT-_oAEdu-e7JlHBQtRA">
+ <body>TransitionKind is an enumeration type.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayT_foAEdu-e7JlHBQtRA" name="state_is_local" constrainedElement="_UayT-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayT_voAEdu-e7JlHBQtRA" annotatedElement="_UayT_foAEdu-e7JlHBQtRA">
+ <body>The source state of a transition with transition kind local must be a composite state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayT__oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>kind=#local implies owner.source.isComposite</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayUAPoAEdu-e7JlHBQtRA" name="state_is_external" constrainedElement="_UayT-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayUAfoAEdu-e7JlHBQtRA" annotatedElement="_UayUAPoAEdu-e7JlHBQtRA">
+ <body>The source state of a transition with transition kind external must be a composite state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayUAvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>kind=#external implies owner.source.isComposite</body>
+ </specification>
+ </ownedRule>
+ <ownedLiteral xmi:id="_UayUA_oAEdu-e7JlHBQtRA" name="internal">
+ <ownedComment xmi:id="_UayUBPoAEdu-e7JlHBQtRA" annotatedElement="_UayUA_oAEdu-e7JlHBQtRA">
+ <body>Implies that the transition, if triggered, occurs without exiting or entering the source state. Thus, it does not cause a state change. This means that the entry or exit condition of the source state will not be invoked. An internal transition can be taken even if the state machine is in one or more regions nested within this state.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayUBfoAEdu-e7JlHBQtRA" name="local">
+ <ownedComment xmi:id="_UayUBvoAEdu-e7JlHBQtRA" annotatedElement="_UayUBfoAEdu-e7JlHBQtRA">
+ <body>Implies that the transition, if triggered, will not exit the composite (source) state, but it will apply to any state within the composite state, and these will be exited and entered.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UayUB_oAEdu-e7JlHBQtRA" name="external">
+ <ownedComment xmi:id="_UayUCPoAEdu-e7JlHBQtRA" annotatedElement="_UayUB_oAEdu-e7JlHBQtRA">
+ <body>Implies that the transition, if triggered, will exit the composite (source) state.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUCfoAEdu-e7JlHBQtRA" name="A_container_subvertex" memberEnd="_UapKLfoAEdu-e7JlHBQtRA _UayTs_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUCvoAEdu-e7JlHBQtRA" name="A_container_transition" memberEnd="_UapJ-PoAEdu-e7JlHBQtRA _UayTt_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUDfoAEdu-e7JlHBQtRA" name="A_submachineState_submachine" memberEnd="_UaMdoPoAEdu-e7JlHBQtRA _UapJhvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUDvoAEdu-e7JlHBQtRA" name="A_entry_connectionPointReference" memberEnd="_UayTl_oAEdu-e7JlHBQtRA _UayUD_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUD_oAEdu-e7JlHBQtRA" type="_UayTjvoAEdu-e7JlHBQtRA" association="_UayUDvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUEPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUEfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUEvoAEdu-e7JlHBQtRA" name="A_state_connection" memberEnd="_UayTm_oAEdu-e7JlHBQtRA _UapJivoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUE_oAEdu-e7JlHBQtRA" name="A_redefinedState_state" memberEnd="_UapJjvoAEdu-e7JlHBQtRA _UayUFPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUFPoAEdu-e7JlHBQtRA" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayUE_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUFfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUFvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUF_oAEdu-e7JlHBQtRA" name="A_redefinedTransition_transition" memberEnd="_UapKBPoAEdu-e7JlHBQtRA _UayUGPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUGPoAEdu-e7JlHBQtRA" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUF_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUGfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUGvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUG_oAEdu-e7JlHBQtRA" name="A_exit_connectionPointReference" memberEnd="_UayTn_oAEdu-e7JlHBQtRA _UayUHPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUHPoAEdu-e7JlHBQtRA" type="_UayTjvoAEdu-e7JlHBQtRA" association="_UayUG_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUHfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUHvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUH_oAEdu-e7JlHBQtRA" name="A_region_stateMachine" memberEnd="_UaMdlPoAEdu-e7JlHBQtRA _UayTu_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUIPoAEdu-e7JlHBQtRA" name="A_connectionPoint_stateMachine" memberEnd="_UaMdmPoAEdu-e7JlHBQtRA _UayTcfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUIfoAEdu-e7JlHBQtRA" name="A_region_state" memberEnd="_UapJkvoAEdu-e7JlHBQtRA _UayTv_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUIvoAEdu-e7JlHBQtRA" name="A_region_extendedRegion" memberEnd="_UayUI_oAEdu-e7JlHBQtRA _UayTw_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUI_oAEdu-e7JlHBQtRA" type="_UayTo_oAEdu-e7JlHBQtRA" association="_UayUIvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUJPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUJfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUJvoAEdu-e7JlHBQtRA" name="A_stateMachine_extendedStateMachine" memberEnd="_UayUJ_oAEdu-e7JlHBQtRA _UaMdnPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUJ_oAEdu-e7JlHBQtRA" type="_UaMdhfoAEdu-e7JlHBQtRA" association="_UayUJvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUKPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUKfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUKvoAEdu-e7JlHBQtRA" name="A_guard_transition" memberEnd="_UapKCPoAEdu-e7JlHBQtRA _UayUK_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUK_oAEdu-e7JlHBQtRA" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUKvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayULPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayULfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayULvoAEdu-e7JlHBQtRA" name="A_redefinitionContext_region" memberEnd="_UayTx_oAEdu-e7JlHBQtRA _UayUL_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUL_oAEdu-e7JlHBQtRA" type="_UayTo_oAEdu-e7JlHBQtRA" association="_UayULvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUMPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUMfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUMvoAEdu-e7JlHBQtRA" name="A_state_redefinitionContext" memberEnd="_UayUM_oAEdu-e7JlHBQtRA _UapJlvoAEdu-e7JlHBQtRA" isDerived="true">
+ <ownedEnd xmi:id="_UayUM_oAEdu-e7JlHBQtRA" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayUMvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUNPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUNfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUNvoAEdu-e7JlHBQtRA" name="A_transition_redefinitionContext" memberEnd="_UayUN_oAEdu-e7JlHBQtRA _UapKDPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUN_oAEdu-e7JlHBQtRA" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUNvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUOPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUOfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUOvoAEdu-e7JlHBQtRA" name="A_stateInvariant_owningState" memberEnd="_UapJmvoAEdu-e7JlHBQtRA _UayUO_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUO_oAEdu-e7JlHBQtRA" name="owningState" type="_UapJZvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UayUOvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUPPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUPfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUPvoAEdu-e7JlHBQtRA" name="A_effect_transition" memberEnd="_UapKEPoAEdu-e7JlHBQtRA _UayUP_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUP_oAEdu-e7JlHBQtRA" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUPvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUQPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUQfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUQvoAEdu-e7JlHBQtRA" name="A_entry_state" memberEnd="_UapJnvoAEdu-e7JlHBQtRA _UayUQ_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUQ_oAEdu-e7JlHBQtRA" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayUQvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayURPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayURfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayURvoAEdu-e7JlHBQtRA" name="A_exit_state" memberEnd="_UapJovoAEdu-e7JlHBQtRA _UayUR_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUR_oAEdu-e7JlHBQtRA" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayURvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUSPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUSfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUSvoAEdu-e7JlHBQtRA" name="A_doActivity_state" memberEnd="_UapJpvoAEdu-e7JlHBQtRA _UayUS_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUS_oAEdu-e7JlHBQtRA" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayUSvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUTPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUTfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUTvoAEdu-e7JlHBQtRA" name="A_connectionPoint_state" memberEnd="_UapJqvoAEdu-e7JlHBQtRA _UayTdfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUT_oAEdu-e7JlHBQtRA" name="A_trigger_transition" memberEnd="_UapKFPoAEdu-e7JlHBQtRA _UayUUPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUUPoAEdu-e7JlHBQtRA" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUT_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUUfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUUvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUU_oAEdu-e7JlHBQtRA" name="A_deferrableTrigger_state" memberEnd="_UapJrvoAEdu-e7JlHBQtRA _UayUVPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UayUVPoAEdu-e7JlHBQtRA" type="_UapJZvoAEdu-e7JlHBQtRA" association="_UayUU_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayUVfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayUVvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A7vDAGv0Edq7X4sGURiZYA" name="Stereotype">
+ <ownedComment xmi:id="_Ua8EUvoAEdu-e7JlHBQtRA" annotatedElement="_A7vDAGv0Edq7X4sGURiZYA">
+ <body>A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8EU_oAEdu-e7JlHBQtRA" name="name_not_clash" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
+ <ownedComment xmi:id="_Ua8EVPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EU_oAEdu-e7JlHBQtRA">
+ <body>Stereotype names should not clash with keyword names for the extended model element.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EVfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ua8EVvoAEdu-e7JlHBQtRA" name="generalize" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
+ <ownedComment xmi:id="_Ua8EV_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EVvoAEdu-e7JlHBQtRA">
+ <body>A Stereotype may only generalize or specialize another Stereotype.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EWPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) </body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ua8EWfoAEdu-e7JlHBQtRA" general="_00owUGvdEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_Ua8EWvoAEdu-e7JlHBQtRA" name="icon" type="_nDq0wJPzEdqpjIDDFZ2Hgw" aggregation="composite" association="_UbFOYfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EW_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EWvoAEdu-e7JlHBQtRA">
+ <body>Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EXPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EXfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_FJce8GwHEdq7X4sGURiZYA" name="createExtension">
+ <ownedComment xmi:id="_7qwjAOwjEdqYHf-imTcTdw" annotatedElement="_FJce8GwHEdq7X4sGURiZYA">
+ <body>Creates a(n) (required) extension of the specified metaclass with this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IziyIGwHEdq7X4sGURiZYA" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_cQPbYGwHEdq7X4sGURiZYA" name="metaclass" type="_00owUGvdEdq4DLWZOhbdEA" effect="read">
+ <ownedComment xmi:id="_5QyhEPIFEdulR8T2OJRyFQ" annotatedElement="_cQPbYGwHEdq7X4sGURiZYA">
+ <body>The metaclass for the new extension.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Jc0YoGwHEdq7X4sGURiZYA" name="isRequired" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_37aCgPIFEdulR8T2OJRyFQ" annotatedElement="_Jc0YoGwHEdq7X4sGURiZYA">
+ <body>Whether the new extension should be required.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_X7-EcGv0Edq7X4sGURiZYA" name="getProfile" isQuery="true">
+ <ownedComment xmi:id="_9LxCwOwjEdqYHf-imTcTdw" annotatedElement="_X7-EcGv0Edq7X4sGURiZYA">
+ <body>Retrieves the profile that owns this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Z7OmcGv0Edq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_D7gsMWwHEdq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_D7gsMGwHEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_im40YGwHEdq7X4sGURiZYA" name="getKeyword" isQuery="true">
+ <ownedComment xmi:id="_-0EdUOwjEdqYHf-imTcTdw" annotatedElement="_im40YGwHEdq7X4sGURiZYA">
+ <body>Retrieves the localized keyword for this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lZHEYGwHEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_n7YM0GwHEdq7X4sGURiZYA" name="getKeyword" isQuery="true">
+ <ownedComment xmi:id="_AJA3AOwkEdqYHf-imTcTdw" annotatedElement="_n7YM0GwHEdq7X4sGURiZYA">
+ <body>Retrieves the keyword for this stereotype, localized if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_n7YM0WwHEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_rn3FoGwHEdq7X4sGURiZYA" name="localize" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_AMa2cPIGEdulR8T2OJRyFQ" annotatedElement="_rn3FoGwHEdq7X4sGURiZYA">
+ <body>Whether to localize the keyword.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_02jCwGwHEdq7X4sGURiZYA" name="getExtendedMetaclasses" isQuery="true">
+ <ownedComment xmi:id="_BxLHoOwkEdqYHf-imTcTdw" annotatedElement="_02jCwGwHEdq7X4sGURiZYA">
+ <body>Retrieves the metaclasses extended by this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_25hnIGwHEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5lVtIWwHEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5lVtIGwHEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7T5gsGwHEdq7X4sGURiZYA" name="getAllExtendedMetaclasses" isQuery="true">
+ <ownedComment xmi:id="_FnVg4OwkEdqYHf-imTcTdw" annotatedElement="_7T5gsGwHEdq7X4sGURiZYA">
+ <body>Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_7T5gsWwHEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7T5gsmwHEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7T5gs2wHEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wdNtsI0GEdqipMtlOpTiHA" name="getDefinition" isQuery="true">
+ <ownedComment xmi:id="_MOYGUOwkEdqYHf-imTcTdw" annotatedElement="_wdNtsI0GEdqipMtlOpTiHA">
+ <body>Retrieves the current definition (Ecore representation) of this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wdNtsY0GEdqipMtlOpTiHA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wdNtso0GEdqipMtlOpTiHA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wdNts40GEdqipMtlOpTiHA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_h2eXIJPzEdqpjIDDFZ2Hgw" name="createIcon">
+ <ownedComment xmi:id="_Oq2IwOwkEdqYHf-imTcTdw" annotatedElement="_h2eXIJPzEdqpjIDDFZ2Hgw">
+ <body>Creates an icon with the specified location for this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tND04JPzEdqpjIDDFZ2Hgw" type="_nDq0wJPzEdqpjIDDFZ2Hgw" direction="return"/>
+ <ownedParameter xmi:id="_vrdJ8JPzEdqpjIDDFZ2Hgw" name="location" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_6oabUPIFEdulR8T2OJRyFQ" annotatedElement="_vrdJ8JPzEdqpjIDDFZ2Hgw">
+ <body>The location for the new icon.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_pK-tQJP4EdqpjIDDFZ2Hgw" name="createIcon">
+ <ownedComment xmi:id="_UNpC8OwkEdqYHf-imTcTdw" annotatedElement="_pK-tQJP4EdqpjIDDFZ2Hgw">
+ <body>Creates an icon with the specified format and content for this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ud-Q4JP4EdqpjIDDFZ2Hgw" type="_nDq0wJPzEdqpjIDDFZ2Hgw" direction="return"/>
+ <ownedParameter xmi:id="_T7RY0JP5EdqpjIDDFZ2Hgw" name="format" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_9G0XcPIFEdulR8T2OJRyFQ" annotatedElement="_T7RY0JP5EdqpjIDDFZ2Hgw">
+ <body>The format for the new icon.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RPUI4JP5EdqpjIDDFZ2Hgw" name="content" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_79W1APIFEdulR8T2OJRyFQ" annotatedElement="_RPUI4JP5EdqpjIDDFZ2Hgw">
+ <body>The content for the new icon.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__pew8GvzEdq7X4sGURiZYA" name="Profile">
+ <ownedComment xmi:id="_Ua8EXvoAEdu-e7JlHBQtRA" annotatedElement="__pew8GvzEdq7X4sGURiZYA">
+ <body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8EX_oAEdu-e7JlHBQtRA" name="metaclass_reference_not_specialized" constrainedElement="__pew8GvzEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_Ua8EYPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EX_oAEdu-e7JlHBQtRA">
+ <body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EYfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.metaclassReference.importedElement->&#xD;&#xA; select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA; (c.generalization.namespace = self or&#xD;&#xA; (c.specialization.namespace = self) )->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ua8EYvoAEdu-e7JlHBQtRA" name="references_same_metamodel" constrainedElement="__pew8GvzEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_Ua8EY_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EYvoAEdu-e7JlHBQtRA">
+ <body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EZPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA; union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ua8EZfoAEdu-e7JlHBQtRA" general="_-cvRAGvzEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_Ua8EZvoAEdu-e7JlHBQtRA" name="ownedStereotype" type="_A7vDAGv0Edq7X4sGURiZYA" isDerived="true" aggregation="composite" subsettedProperty="_UUYJbvoAEdu-e7JlHBQtRA" association="_UbFOSPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EZ_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EZvoAEdu-e7JlHBQtRA">
+ <body>References the Stereotypes that are owned by the Profile.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EaPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EafoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8EavoAEdu-e7JlHBQtRA" name="metaclassReference" type="_RPl78GwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UTyTvPoAEdu-e7JlHBQtRA" association="_UbFOWfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8Ea_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EavoAEdu-e7JlHBQtRA">
+ <body>References a metaclass that may be extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EbPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EbfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8EbvoAEdu-e7JlHBQtRA" name="metamodelReference" type="_SnNPIGwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UTyTwPoAEdu-e7JlHBQtRA" association="_UbFOXfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8Eb_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EbvoAEdu-e7JlHBQtRA">
+ <body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EcPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EcfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_HmwyMtrxEduW-vlXzvw90A" name="EMap_EJavaObject_EJavaObject">
+ <templateBinding xmi:id="_0mVaQNryEduJovxV1TmzsQ">
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.uml#_SeWke8X_EduPJbEsMYXjUQ"/>
+ <parameterSubstitution xmi:id="_x9HDUNr0EduJovxV1TmzsQ">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfMX_EduPJbEsMYXjUQ"/>
+ <actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ <parameterSubstitution xmi:id="_zYmw8Nr0EduJovxV1TmzsQ">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfsX_EduPJbEsMYXjUQ"/>
+ <actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_HmwyNtrxEduW-vlXzvw90A" name="EMap_EString_EString">
+ <templateBinding xmi:id="_2w0U0NryEduJovxV1TmzsQ">
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.uml#_SeWke8X_EduPJbEsMYXjUQ"/>
+ <parameterSubstitution xmi:id="_HmwyONrxEduW-vlXzvw90A" actual="_aAyVgGvsEdqG6fBIPwe-mw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfMX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ <parameterSubstitution xmi:id="_HmwyOdrxEduW-vlXzvw90A" actual="_aAyVgGvsEdqG6fBIPwe-mw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfsX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_2QKPIGwJEdq7X4sGURiZYA" name="create">
+ <ownedComment xmi:id="_QbUdUOwjEdqYHf-imTcTdw" annotatedElement="_2QKPIGwJEdq7X4sGURiZYA">
+ <body>Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_9o-PwGwJEdq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-se7MGwJEdq7X4sGURiZYA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_6Ay3IPIEEdulR8T2OJRyFQ" annotatedElement="_-se7MGwJEdq7X4sGURiZYA">
+ <body>The classifier of which to create an instance.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_senckGwJEdq7X4sGURiZYA" name="createOwnedStereotype">
+ <ownedComment xmi:id="_VxTDgOwjEdqYHf-imTcTdw" annotatedElement="_senckGwJEdq7X4sGURiZYA">
+ <body>Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_upCswGwJEdq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_xOvjsGwJEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_9ZmmAPIEEdulR8T2OJRyFQ" annotatedElement="_xOvjsGwJEdq7X4sGURiZYA">
+ <body>The name for the new stereotype, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_vJOosGwJEdq7X4sGURiZYA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_73tVcPIEEdulR8T2OJRyFQ" annotatedElement="_vJOosGwJEdq7X4sGURiZYA">
+ <body>Whether the new stereotype should be abstract.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_8ACYgGwIEdq7X4sGURiZYA" name="isDefined" isQuery="true">
+ <ownedComment xmi:id="_iDLr4OwjEdqYHf-imTcTdw" annotatedElement="_8ACYgGwIEdq7X4sGURiZYA">
+ <body>Determines whether this profile is defined.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_E3LYUGwJEdq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GdjgQGwJEdq7X4sGURiZYA" name="define">
+ <ownedComment xmi:id="_gx0xsOwjEdqYHf-imTcTdw" annotatedElement="_GdjgQGwJEdq7X4sGURiZYA">
+ <body>Defines this profile by (re)creating Ecore representations of its current contents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_JO2EsGwgEdqHKKVoxc0dlA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bctjUWwgEdqHKKVoxc0dlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bctjUGwgEdqHKKVoxc0dlA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_M-uloNrsEduJovxV1TmzsQ" name="define">
+ <ownedComment xmi:id="_-vR1oNrxEduJovxV1TmzsQ" annotatedElement="_M-uloNrsEduJovxV1TmzsQ">
+ <body>Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Rn2F0NrsEduJovxV1TmzsQ" name="" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_cg7vQNrsEduJovxV1TmzsQ" name="options" type="_HmwyNtrxEduW-vlXzvw90A">
+ <ownedComment xmi:id="_OYzSEPIFEdulR8T2OJRyFQ" annotatedElement="_cg7vQNrsEduJovxV1TmzsQ">
+ <body>The options to use.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aE-DINrsEduJovxV1TmzsQ" name="diagnostics">
+ <ownedComment xmi:id="_RGiqsPIFEdulR8T2OJRyFQ" annotatedElement="_aE-DINrsEduJovxV1TmzsQ">
+ <body>The chain of diagnostics to which problems are to be appended.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkTcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_dHhOINrsEduJovxV1TmzsQ" name="context" type="_HmwyMtrxEduW-vlXzvw90A">
+ <ownedComment xmi:id="_TxUO4PIFEdulR8T2OJRyFQ" annotatedElement="_dHhOINrsEduJovxV1TmzsQ">
+ <body>The cache of context-specific information.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LLkQEGwgEdqHKKVoxc0dlA" name="getDefinition" isQuery="true">
+ <ownedComment xmi:id="_nSm-IOwjEdqYHf-imTcTdw" annotatedElement="_LLkQEGwgEdqHKKVoxc0dlA">
+ <body>Retrieves the current definition (Ecore representation) of this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_P0QScGwgEdqHKKVoxc0dlA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dKYmEWwgEdqHKKVoxc0dlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dKYmEGwgEdqHKKVoxc0dlA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nFBqQGwgEdqHKKVoxc0dlA" name="getDefinition" isQuery="true">
+ <ownedComment xmi:id="_qItBgOwjEdqYHf-imTcTdw" annotatedElement="_nFBqQGwgEdqHKKVoxc0dlA">
+ <body>Retrieves the current definition (Ecore representation) of the specified named element in this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_nFBqQWwgEdqHKKVoxc0dlA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWifsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nFBqQmwgEdqHKKVoxc0dlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nFBqQ2wgEdqHKKVoxc0dlA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_pPTwgGwgEdqHKKVoxc0dlA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Wo6HEPIFEdulR8T2OJRyFQ" annotatedElement="_pPTwgGwgEdqHKKVoxc0dlA">
+ <body>The named element whose definition to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LBK1YGwJEdq7X4sGURiZYA" name="getReferencedMetaclasses" isQuery="true">
+ <ownedComment xmi:id="_rWMIUOwjEdqYHf-imTcTdw" annotatedElement="_LBK1YGwJEdq7X4sGURiZYA">
+ <body>Retrieves the metaclasses referenced by this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Ns-UUGwJEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PU_bAWwJEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PU_bAGwJEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Y9mUAGwJEdq7X4sGURiZYA" name="getReferencedMetamodels" isQuery="true">
+ <ownedComment xmi:id="_wXAW0OwjEdqYHf-imTcTdw" annotatedElement="_Y9mUAGwJEdq7X4sGURiZYA">
+ <body>Retrieves the metamodels referenced by this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_berJoGwJEdq7X4sGURiZYA" type="_NVhqMGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dSdbcWwJEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dSdbcGwJEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_HL150JPuEdqpjIDDFZ2Hgw" name="getOwnedExtensions" isQuery="true">
+ <ownedComment xmi:id="_27ORwOwjEdqYHf-imTcTdw" annotatedElement="_HL150JPuEdqpjIDDFZ2Hgw">
+ <body>Retrieves the extensions owned by this profile, excluding non-required extensions if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_KG2SYJPuEdqpjIDDFZ2Hgw" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Bi6zYZP3EdqpjIDDFZ2Hgw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bi6zYJP3EdqpjIDDFZ2Hgw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OTEbMJPuEdqpjIDDFZ2Hgw" name="requiredOnly" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_aM5yQPIFEdulR8T2OJRyFQ" annotatedElement="_OTEbMJPuEdqpjIDDFZ2Hgw">
+ <body>Whether to retrieve only required extensions.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_00owUGvdEdq4DLWZOhbdEA" name="Class">
+ <ownedComment xmi:id="_UT7dyvoAEdu-e7JlHBQtRA" annotatedElement="_00owUGvdEdq4DLWZOhbdEA">
+ <body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZAKzPoAEdu-e7JlHBQtRA" annotatedElement="_00owUGvdEdq4DLWZOhbdEA">
+ <body>A class may be designated as active (i.e., each of its instances having its own thread of control) or passive (i.e., each of its instances executing within the context of some other object). A class may also specify which signals the instances of this class handle.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZTF9voAEdu-e7JlHBQtRA" annotatedElement="_00owUGvdEdq4DLWZOhbdEA">
+ <body>A class has the capability to have an internal structure and ports.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ua8Ed_oAEdu-e7JlHBQtRA" annotatedElement="_00owUGvdEdq4DLWZOhbdEA">
+ <body>Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZAKzfoAEdu-e7JlHBQtRA" name="passive_class" constrainedElement="_00owUGvdEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZAKzvoAEdu-e7JlHBQtRA" annotatedElement="_UZAKzfoAEdu-e7JlHBQtRA">
+ <body>A passive class may not own receptions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZAKz_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.isActive implies self.ownedReception.isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZAK0PoAEdu-e7JlHBQtRA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
+ <generalization xmi:id="_UZTF9_oAEdu-e7JlHBQtRA" general="_UZTFy_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UT7dzPoAEdu-e7JlHBQtRA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" redefinedProperty="_UVuNIfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dzfoAEdu-e7JlHBQtRA" annotatedElement="_UT7dzPoAEdu-e7JlHBQtRA">
+ <body>True when a class is abstract.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWnlSPoAEdu-e7JlHBQtRA" annotatedElement="_UT7dzPoAEdu-e7JlHBQtRA">
+ <body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWnlSfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWnlSvoAEdu-e7JlHBQtRA" name="nestedClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UXXMB_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlS_oAEdu-e7JlHBQtRA" annotatedElement="_UWnlSvoAEdu-e7JlHBQtRA">
+ <body>References all the Classifiers that are defined (nested) within the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlTPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlTfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7dz_oAEdu-e7JlHBQtRA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" redefinedProperty="_UYZt7voAEdu-e7JlHBQtRA" subsettedProperty="_UTfYifoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6ZPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7d0PoAEdu-e7JlHBQtRA" annotatedElement="_UT7dz_oAEdu-e7JlHBQtRA">
+ <body>The attributes (i.e. the properties) owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlTvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlT_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7d0_oAEdu-e7JlHBQtRA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6ZfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7d1PoAEdu-e7JlHBQtRA" annotatedElement="_UT7d0_oAEdu-e7JlHBQtRA">
+ <body>The operations owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlUPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlUfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UT7d1_oAEdu-e7JlHBQtRA" name="superClass" type="_00owUGvdEdq4DLWZOhbdEA" isDerived="true" redefinedProperty="_UTfYkfoAEdu-e7JlHBQtRA" association="_UUh6d_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7d2PoAEdu-e7JlHBQtRA" annotatedElement="_UT7d1_oAEdu-e7JlHBQtRA">
+ <body>This gives the superclasses of a class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlUvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlU_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZAK0foAEdu-e7JlHBQtRA" name="isActive" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZAK0voAEdu-e7JlHBQtRA" annotatedElement="_UZAK0foAEdu-e7JlHBQtRA">
+ <body>Determines whether an object specified by this class is active or not. If true, then the owning class is referred to as an active class. If false, then such a class is referred to as a passive class.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZAK0_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZAK1PoAEdu-e7JlHBQtRA" name="ownedReception" type="_UZAK5PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA _UTfYjfoAEdu-e7JlHBQtRA" association="_UZALKfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK1foAEdu-e7JlHBQtRA" annotatedElement="_UZAK1PoAEdu-e7JlHBQtRA">
+ <body>Receptions that objects of this class are willing to accept.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAK1voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAK1_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8EePoAEdu-e7JlHBQtRA" name="extension" type="_skHGwGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_UbFOUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EefoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EePoAEdu-e7JlHBQtRA">
+ <body>References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EevoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8Ee_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_4xcu4FYKEdqrn7iZ0eqieg" name="getExtensions" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_8-RUoFYKEdqrn7iZ0eqieg" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-3Q2kVYKEdqrn7iZ0eqieg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-3Q2kFYKEdqrn7iZ0eqieg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EpigwGwQEdq14q0ETb1t3g" name="createOwnedOperation">
+ <ownedComment xmi:id="_ZFCecOweEdqYHf-imTcTdw" annotatedElement="_EpigwGwQEdq14q0ETb1t3g">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IMMIIGwQEdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_bWQJQGwQEdq14q0ETb1t3g" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Fa5AEPH-EdulR8T2OJRyFQ" annotatedElement="_bWQJQGwQEdq14q0ETb1t3g">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qFIE0aOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qFIE0KOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_LLEUEGwQEdq14q0ETb1t3g" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_HOXv4PH-EdulR8T2OJRyFQ" annotatedElement="_LLEUEGwQEdq14q0ETb1t3g">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mIoGsWwQEdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mIoGsGwQEdq14q0ETb1t3g"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RCurAGwQEdq14q0ETb1t3g" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_JQnUcPH-EdulR8T2OJRyFQ" annotatedElement="_RCurAGwQEdq14q0ETb1t3g">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jYfhYWwQEdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jYfhYGwQEdq14q0ETb1t3g"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WoD70GwQEdq14q0ETb1t3g" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_LYzwAPH-EdulR8T2OJRyFQ" annotatedElement="_WoD70GwQEdq14q0ETb1t3g">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-30saOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-30sKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_shXKYGwQEdq14q0ETb1t3g" name="isMetaclass" isQuery="true">
+ <ownedComment xmi:id="_hb-7QOweEdqYHf-imTcTdw" annotatedElement="_shXKYGwQEdq14q0ETb1t3g">
+ <body>Determines whether this class is a metaclass.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_urWVsGwQEdq14q0ETb1t3g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFOYPoAEdu-e7JlHBQtRA" name="inherit" isQuery="true" redefinedOperation="_UToiq_oAEdu-e7JlHBQtRA" bodyCondition="_UUFOYvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOYfoAEdu-e7JlHBQtRA" annotatedElement="_UUFOYPoAEdu-e7JlHBQtRA">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUFOYvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFOYPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWnlVPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUFOZPoAEdu-e7JlHBQtRA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlVfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwu8PoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UUFOZ_oAEdu-e7JlHBQtRA" name="inhs" type="_csVgUGvtEdqG6fBIPwe-mw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwu8foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwu8voAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_uY5yQGv5Edq7X4sGURiZYA" name="ProfileApplication">
+ <ownedComment xmi:id="_Ua8EfPoAEdu-e7JlHBQtRA" annotatedElement="_uY5yQGv5Edq7X4sGURiZYA">
+ <body>A profile application is used to show which profiles have been applied to a package.</body>
+ </ownedComment>
+ <generalization xmi:id="_Ua8EffoAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_Ua8EfvoAEdu-e7JlHBQtRA" name="appliedProfile" type="__pew8GvzEdq7X4sGURiZYA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UbFOTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8Ef_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EfvoAEdu-e7JlHBQtRA">
+ <body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EgPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EgfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8EgvoAEdu-e7JlHBQtRA" name="isStrict" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ua8Eg_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EgvoAEdu-e7JlHBQtRA">
+ <body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ua8EhPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8EhfoAEdu-e7JlHBQtRA" name="applyingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA" association="_UbFOR_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EhvoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EhfoAEdu-e7JlHBQtRA">
+ <body>The package that owns the profile application.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8Eh_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EiPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_GXI1QW10EdqniMBnIUw7ig" name="getAppliedDefinition" isQuery="true">
+ <ownedComment xmi:id="_ifO5QOwkEdqYHf-imTcTdw" annotatedElement="_GXI1QW10EdqniMBnIUw7ig">
+ <body>Retrieves the definition (Ecore representation) of the profile associated with this profile application.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_LJ9EAG10EdqniMBnIUw7ig" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OTQ-UW10EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OTQ-UG10EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_G3YEAI2_EdqipMtlOpTiHA" name="getAppliedDefinition" isQuery="true">
+ <ownedComment xmi:id="_lZV58OwkEdqYHf-imTcTdw" annotatedElement="_G3YEAI2_EdqipMtlOpTiHA">
+ <body>Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_G3YEAY2_EdqipMtlOpTiHA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWifsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G3YEAo2_EdqipMtlOpTiHA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G3YEA42_EdqipMtlOpTiHA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_G3YEBI2_EdqipMtlOpTiHA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_myyUsPIFEdulR8T2OJRyFQ" annotatedElement="_G3YEBI2_EdqipMtlOpTiHA">
+ <body>The named element for which to retrieve the applied definition.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_skHGwGvsEdqG6fBIPwe-mw" name="Extension">
+ <ownedComment xmi:id="_Ua8EifoAEdu-e7JlHBQtRA" annotatedElement="_skHGwGvsEdqG6fBIPwe-mw">
+ <body>An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8EivoAEdu-e7JlHBQtRA" name="non_owned_end" constrainedElement="_skHGwGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ua8Ei_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EivoAEdu-e7JlHBQtRA">
+ <body>The non-owned end of an Extension is typed by a Class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EjPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ua8EjfoAEdu-e7JlHBQtRA" name="is_binary" constrainedElement="_skHGwGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ua8EjvoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EjfoAEdu-e7JlHBQtRA">
+ <body>An Extension is binary, i.e., it has only two memberEnds.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8Ej_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>memberEnd->size() = 2</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ua8EkPoAEdu-e7JlHBQtRA" general="_AwvxoGwNEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_Ua8EkfoAEdu-e7JlHBQtRA" name="isRequired" type="_UdivYGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_Ua8EkvoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EkfoAEdu-e7JlHBQtRA">
+ <body>Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the multiplicity of the Property referenced by Extension::ownedEnd; a multiplicity of 1 means that isRequired is true, but otherwise it is false. Since the default multiplicity of an ExtensionEnd is 0..1, the default value of isRequired is false.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ua8Ek_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8ElPoAEdu-e7JlHBQtRA" name="metaclass" type="_00owUGvdEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_UbFOUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8ElfoAEdu-e7JlHBQtRA" annotatedElement="_Ua8ElPoAEdu-e7JlHBQtRA">
+ <body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8ElvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8El_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8EmPoAEdu-e7JlHBQtRA" name="ownedEnd" type="_2QuT0GvdEdq4DLWZOhbdEA" aggregation="composite" redefinedProperty="_UT7duvoAEdu-e7JlHBQtRA" association="_UbFOUfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EmfoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EmPoAEdu-e7JlHBQtRA">
+ <body>References the end of the extension that is typed by a Stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EmvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8Em_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_k1UVkJPtEdqpjIDDFZ2Hgw" name="getStereotypeEnd" isQuery="true">
+ <ownedComment xmi:id="_VLzRIOwgEdqYHf-imTcTdw" annotatedElement="_k1UVkJPtEdqpjIDDFZ2Hgw">
+ <body>Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_BPaXoJPuEdqpjIDDFZ2Hgw" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X2BEMZQGEdqpjIDDFZ2Hgw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X2BEMJQGEdqpjIDDFZ2Hgw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_6cTFEJPtEdqpjIDDFZ2Hgw" name="getStereotype" isQuery="true">
+ <ownedComment xmi:id="_fNTLQOwgEdqYHf-imTcTdw" annotatedElement="_6cTFEJPtEdqpjIDDFZ2Hgw">
+ <body>Retrieves the stereotype that extends a metaclass through this extension.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_C7cboJPuEdqpjIDDFZ2Hgw" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aF9tkZQGEdqpjIDDFZ2Hgw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aF9tkJQGEdqpjIDDFZ2Hgw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ua8EnPoAEdu-e7JlHBQtRA" name="metaclassEnd" isQuery="true" bodyCondition="_Ua8EnvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EnfoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EnPoAEdu-e7JlHBQtRA">
+ <body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8EnvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_Ua8EnPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8En_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = memberEnd->reject(ownedEnd)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Ua8EoPoAEdu-e7JlHBQtRA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ua8EofoAEdu-e7JlHBQtRA" name="metaclass" isQuery="true" bodyCondition="_Ua8Eo_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EovoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EofoAEdu-e7JlHBQtRA">
+ <body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8Eo_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_Ua8EofoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EpPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = metaclassEnd().type</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Ua8EpfoAEdu-e7JlHBQtRA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ua8EpvoAEdu-e7JlHBQtRA" name="isRequired" isQuery="true" bodyCondition="_Ua8EqPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8Ep_oAEdu-e7JlHBQtRA" annotatedElement="_Ua8EpvoAEdu-e7JlHBQtRA">
+ <body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8EqPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_Ua8EpvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EqfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (ownedEnd->lowerBound() = 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Ua8EqvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_nDq0wJPzEdqpjIDDFZ2Hgw" name="Image">
+ <ownedComment xmi:id="_Ua8EwfoAEdu-e7JlHBQtRA" annotatedElement="_nDq0wJPzEdqpjIDDFZ2Hgw">
+ <body>Physical definition of a graphical image.</body>
+ </ownedComment>
+ <generalization xmi:id="_Ua8EwvoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_Ua8Ew_oAEdu-e7JlHBQtRA" name="content" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ua8ExPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Ew_oAEdu-e7JlHBQtRA">
+ <body>This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8ExfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8ExvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8Ex_oAEdu-e7JlHBQtRA" name="location" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ua8EyPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Ex_oAEdu-e7JlHBQtRA">
+ <body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EyfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EyvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8Ey_oAEdu-e7JlHBQtRA" name="format" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ua8EzPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Ey_oAEdu-e7JlHBQtRA">
+ <body>This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP.&#xD;
+&#xD;
+In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EzfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EzvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_kl90MGvbEdq4DLWZOhbdEA" name="Element" isAbstract="true">
+ <ownedComment xmi:id="_UToixfoAEdu-e7JlHBQtRA" annotatedElement="_kl90MGvbEdq4DLWZOhbdEA">
+ <body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UToixvoAEdu-e7JlHBQtRA" name="not_own_self" constrainedElement="_kl90MGvbEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UToix_oAEdu-e7JlHBQtRA" annotatedElement="_UToixvoAEdu-e7JlHBQtRA">
+ <body>An element may not directly or indirectly own itself.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVHwMPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.allOwnedElements()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UToiyfoAEdu-e7JlHBQtRA" name="has_owner" constrainedElement="_kl90MGvbEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UToiyvoAEdu-e7JlHBQtRA" annotatedElement="_UToiyfoAEdu-e7JlHBQtRA">
+ <body>Elements that must be owned must have an owner.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVHwMfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.mustBeOwned() implies owner->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_rcp_MGvbEdq4DLWZOhbdEA">
+ <general xmi:type="uml:Class" href="Ecore.uml#_SeWihMX_EduPJbEsMYXjUQ"/>
+ </generalization>
+ <ownedAttribute xmi:id="_UToizPoAEdu-e7JlHBQtRA" name="ownedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="_UUh6sPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToizfoAEdu-e7JlHBQtRA" annotatedElement="_UToizPoAEdu-e7JlHBQtRA">
+ <body>The Elements owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwMvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwM_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UToi0PoAEdu-e7JlHBQtRA" name="owner" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UUh6sPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToi0foAEdu-e7JlHBQtRA" annotatedElement="_UToi0PoAEdu-e7JlHBQtRA">
+ <body>The Element that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwNPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwNfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UToi1PoAEdu-e7JlHBQtRA" name="ownedComment" type="_UUYJ-PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UUh65PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToi1foAEdu-e7JlHBQtRA" annotatedElement="_UToi1PoAEdu-e7JlHBQtRA">
+ <body>The Comments owned by this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwNvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwN_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_XebbkGvuEdqG6fBIPwe-mw" name="destroy">
+ <ownedComment xmi:id="_skdy8ewbEdqYHf-imTcTdw" annotatedElement="_XebbkGvuEdqG6fBIPwe-mw">
+ <body>Destroys this element by removing all cross references to/from it and removing it from its containing resource or object.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7f8qYGvgEdq4DLWZOhbdEA" name="hasKeyword" isQuery="true">
+ <ownedComment xmi:id="_vBX6QOwbEdqYHf-imTcTdw" annotatedElement="_7f8qYGvgEdq4DLWZOhbdEA">
+ <body>Determines whether this element has the specified keyword.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_9mECUGvgEdq4DLWZOhbdEA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="__FRyUGvgEdq4DLWZOhbdEA" name="keyword" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Oe9r0PICEdulR8T2OJRyFQ" annotatedElement="__FRyUGvgEdq4DLWZOhbdEA">
+ <body>The keyword in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bx0EsGvgEdq4DLWZOhbdEA" name="getKeywords" isQuery="true">
+ <ownedComment xmi:id="_0r7CQOwbEdqYHf-imTcTdw" annotatedElement="_bx0EsGvgEdq4DLWZOhbdEA">
+ <body>Retrieves the keywords for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_fZ0tMGvgEdq4DLWZOhbdEA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hyHaQWvgEdq4DLWZOhbdEA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hyHaQGvgEdq4DLWZOhbdEA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_jlv7EGvgEdq4DLWZOhbdEA" name="addKeyword">
+ <ownedComment xmi:id="_2oMhsOwbEdqYHf-imTcTdw" annotatedElement="_jlv7EGvgEdq4DLWZOhbdEA">
+ <body>Adds the specified keyword to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_y6GO4GvgEdq4DLWZOhbdEA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_mQqpMGvgEdq4DLWZOhbdEA" name="keyword" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_3Z64UPIAEdulR8T2OJRyFQ" annotatedElement="_mQqpMGvgEdq4DLWZOhbdEA">
+ <body>The keyword to add.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_qB6tQGvgEdq4DLWZOhbdEA" name="removeKeyword">
+ <ownedComment xmi:id="_4b-zgOwbEdqYHf-imTcTdw" annotatedElement="_qB6tQGvgEdq4DLWZOhbdEA">
+ <body>Removes the specified keyword from this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1_Pa4GvgEdq4DLWZOhbdEA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_3u_hQGvgEdq4DLWZOhbdEA" name="keyword" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_79s6oPICEdulR8T2OJRyFQ" annotatedElement="_3u_hQGvgEdq4DLWZOhbdEA">
+ <body>The keyword to remove.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_674ZYGvzEdq7X4sGURiZYA" name="getNearestPackage" isQuery="true">
+ <ownedComment xmi:id="_8qbw8OwbEdqYHf-imTcTdw" annotatedElement="_674ZYGvzEdq7X4sGURiZYA">
+ <body>Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_DyktQGv0Edq7X4sGURiZYA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1aQnEWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1aQnEGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Gv0hgGv0Edq7X4sGURiZYA" name="getModel" isQuery="true">
+ <ownedComment xmi:id="__lAEoOwbEdqYHf-imTcTdw" annotatedElement="_Gv0hgGv0Edq7X4sGURiZYA">
+ <body>Retrieves the model that owns (either directly or indirectly) this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Pj1U0Gv0Edq7X4sGURiZYA" type="_NVhqMGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zCjv4Wv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zCjv4Gv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aAC2wHFfEdqziYxiZo0YtA" name="isStereotypeApplicable" isQuery="true">
+ <ownedComment xmi:id="_ErVFQOwcEdqYHf-imTcTdw" annotatedElement="_aAC2wHFfEdqziYxiZo0YtA">
+ <body>Determines whether the specified stereotype is applicable to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_dR_vsHFfEdqziYxiZo0YtA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_d5o-gHFfEdqziYxiZo0YtA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_bLzx4PICEdulR8T2OJRyFQ" annotatedElement="_d5o-gHFfEdqziYxiZo0YtA">
+ <body>The stereotype in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nd4TIGv0Edq7X4sGURiZYA" name="isStereotypeRequired" isQuery="true">
+ <ownedComment xmi:id="_GPxTgOwcEdqYHf-imTcTdw" annotatedElement="_nd4TIGv0Edq7X4sGURiZYA">
+ <body>Determines whether the specified stereotype is required for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_A-TZYGv1Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_0weVIGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_gsqLUPICEdulR8T2OJRyFQ" annotatedElement="_0weVIGv1Edq7X4sGURiZYA">
+ <body>The stereotype in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hDDkwGv0Edq7X4sGURiZYA" name="isStereotypeApplied" isQuery="true">
+ <ownedComment xmi:id="_HClQgOwcEdqYHf-imTcTdw" annotatedElement="_hDDkwGv0Edq7X4sGURiZYA">
+ <body>Determines whether the specified stereotype is applied to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_izQ-IGv0Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_jenoQGv0Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_c-11wPICEdulR8T2OJRyFQ" annotatedElement="_jenoQGv0Edq7X4sGURiZYA">
+ <body>The stereotype in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DkmGMGv1Edq7X4sGURiZYA" name="applyStereotype">
+ <ownedComment xmi:id="_KtkUgOwcEdqYHf-imTcTdw" annotatedElement="_DkmGMGv1Edq7X4sGURiZYA">
+ <body>Applies the specified stereotype to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GGbJwGv1Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_GmnFsGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_4-WfgPIAEdulR8T2OJRyFQ" annotatedElement="_GmnFsGv1Edq7X4sGURiZYA">
+ <body>The stereotype to apply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LUETUGv1Edq7X4sGURiZYA" name="unapplyStereotype">
+ <ownedComment xmi:id="_MSdOsOwcEdqYHf-imTcTdw" annotatedElement="_LUETUGv1Edq7X4sGURiZYA">
+ <body>Unapplies the specified stereotype from this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NqRVsGv1Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OI9c0Gv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_FrjgAPIDEdulR8T2OJRyFQ" annotatedElement="_OI9c0Gv1Edq7X4sGURiZYA">
+ <body>The stereotype to unapply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7oNB8Gv1Edq7X4sGURiZYA" name="getApplicableStereotypes" isQuery="true">
+ <ownedComment xmi:id="_RO894OwcEdqYHf-imTcTdw" annotatedElement="_7oNB8Gv1Edq7X4sGURiZYA">
+ <body>Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_-J4UgGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ah4GoWv2Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ah4GoGv2Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_CQI_QGv2Edq7X4sGURiZYA" name="getApplicableStereotype" isQuery="true">
+ <ownedComment xmi:id="_UmbQAOwcEdqYHf-imTcTdw" annotatedElement="_CQI_QGv2Edq7X4sGURiZYA">
+ <body>Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FC9FIGv2Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i-hrkWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i-hrkGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FX9r0Gv2Edq7X4sGURiZYA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="__AGmkPIAEdulR8T2OJRyFQ" annotatedElement="_FX9r0Gv2Edq7X4sGURiZYA">
+ <body>The qualified name of the applicable stereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IFUr8GvgEdq4DLWZOhbdEA" name="getStereotypeApplications" isQuery="true">
+ <ownedComment xmi:id="_hu_owOwcEdqYHf-imTcTdw" annotatedElement="_IFUr8GvgEdq4DLWZOhbdEA">
+ <body>Retrieves the stereotype applications for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_PAVWQGvgEdq4DLWZOhbdEA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oJqQgWvzEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oJqQgGvzEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Rw07YGv1Edq7X4sGURiZYA" name="getStereotypeApplication" isQuery="true">
+ <ownedComment xmi:id="_uNjbMOwcEdqYHf-imTcTdw" annotatedElement="_Rw07YGv1Edq7X4sGURiZYA">
+ <body>Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Uw5aIGv1Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4QyvUWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4QyvUGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_VtGjsGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_7ovzwPIBEdulR8T2OJRyFQ" annotatedElement="_VtGjsGv1Edq7X4sGURiZYA">
+ <body>The stereotype for which to retrieve an application.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ko32oHFfEdqziYxiZo0YtA" name="getRequiredStereotypes" isQuery="true">
+ <ownedComment xmi:id="_57OjQOwcEdqYHf-imTcTdw" annotatedElement="_ko32oHFfEdqziYxiZo0YtA">
+ <body>Retrieves the stereotypes that are required for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_qX5O8HFfEdqziYxiZo0YtA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSF6sXFgEdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSF6sHFgEdqziYxiZo0YtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yk3QYHFfEdqziYxiZo0YtA" name="getRequiredStereotype" isQuery="true">
+ <ownedComment xmi:id="_-7KA8OwcEdqYHf-imTcTdw" annotatedElement="_yk3QYHFfEdqziYxiZo0YtA">
+ <body>Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_8ovJEHFfEdqziYxiZo0YtA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cpo7kXFgEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cpo7kHFgEdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9NGaYHFfEdqziYxiZo0YtA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_r0tTQPIBEdulR8T2OJRyFQ" annotatedElement="_9NGaYHFfEdqziYxiZo0YtA">
+ <body>The qualified name of the required stereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZR1OsGv1Edq7X4sGURiZYA" name="getAppliedStereotypes" isQuery="true">
+ <ownedComment xmi:id="_Dj1cQOwdEdqYHf-imTcTdw" annotatedElement="_ZR1OsGv1Edq7X4sGURiZYA">
+ <body>Retrieves the stereotypes that are applied to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_cNu_IGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eHU-AWv1Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eHU-AGv1Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_pCV6EGv1Edq7X4sGURiZYA" name="getAppliedStereotype" isQuery="true">
+ <ownedComment xmi:id="_IBy1UOwdEdqYHf-imTcTdw" annotatedElement="_pCV6EGv1Edq7X4sGURiZYA">
+ <body>Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rLbtgGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mO2M0Wv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mO2M0Gv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4SMcGv1Edq7X4sGURiZYA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_A1hQEPIBEdulR8T2OJRyFQ" annotatedElement="_r4SMcGv1Edq7X4sGURiZYA">
+ <body>The qualified name of the applied stereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="__s2tsGv2Edq7X4sGURiZYA" name="getAppliedSubstereotypes" isQuery="true">
+ <ownedComment xmi:id="_NAYPMOwdEdqYHf-imTcTdw" annotatedElement="__s2tsGv2Edq7X4sGURiZYA">
+ <body>Retrieves the substereotypes of the specified stereotype that are applied to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__s2tsWv2Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__s2tsmv2Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__s2ts2v2Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_DJsA8Gv3Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_cF4C4PIBEdulR8T2OJRyFQ" annotatedElement="_DJsA8Gv3Edq7X4sGURiZYA">
+ <body>The superstereotype of the applied substereotypes to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_KpgogGv3Edq7X4sGURiZYA" name="getAppliedSubstereotype" isQuery="true">
+ <ownedComment xmi:id="_P0Fs8OwdEdqYHf-imTcTdw" annotatedElement="_KpgogGv3Edq7X4sGURiZYA">
+ <body>Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_KpgogWv3Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qg4pwWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qg4pwGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_NcK9YGv3Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_ZJ1IgPIBEdulR8T2OJRyFQ" annotatedElement="_NcK9YGv3Edq7X4sGURiZYA">
+ <body>The superstereotype of the applied substereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Kpgogmv3Edq7X4sGURiZYA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_UNpiYPIBEdulR8T2OJRyFQ" annotatedElement="_Kpgogmv3Edq7X4sGURiZYA">
+ <body>The qualified name of the applied substereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_JbZFAGv2Edq7X4sGURiZYA" name="hasValue" isQuery="true">
+ <ownedComment xmi:id="_b4HfgOwdEdqYHf-imTcTdw" annotatedElement="_JbZFAGv2Edq7X4sGURiZYA">
+ <body>Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_L6F8EGv2Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_MqEngGv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_Zk10EPICEdulR8T2OJRyFQ" annotatedElement="_MqEngGv2Edq7X4sGURiZYA">
+ <body>The stereotype for which to test the property.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RaWfoGv2Edq7X4sGURiZYA" name="propertyName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_XhkUwPICEdulR8T2OJRyFQ" annotatedElement="_RaWfoGv2Edq7X4sGURiZYA">
+ <body>The name of the property in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WGA9gGv2Edq7X4sGURiZYA" name="getValue" isQuery="true">
+ <ownedComment xmi:id="_jrANAOwdEdqYHf-imTcTdw" annotatedElement="_WGA9gGv2Edq7X4sGURiZYA">
+ <body>Retrieves the value of the property with the specified name in the specified stereotype for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_dYH5MGv2Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8gS1oWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8gS1oGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_g41m4Gv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_DgsncPICEdulR8T2OJRyFQ" annotatedElement="_g41m4Gv2Edq7X4sGURiZYA">
+ <body>The stereotype for which to retrieve the value.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_eZGOAGv2Edq7X4sGURiZYA" name="propertyName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_DAp1cPICEdulR8T2OJRyFQ" annotatedElement="_eZGOAGv2Edq7X4sGURiZYA">
+ <body>The name of the property whose value to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nMWzYGv2Edq7X4sGURiZYA" name="setValue">
+ <ownedComment xmi:id="_qqfHoOwdEdqYHf-imTcTdw" annotatedElement="_nMWzYGv2Edq7X4sGURiZYA">
+ <body>Sets the value of the property with the specified name in the specified stereotype for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_resLQGv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_DkshMPIDEdulR8T2OJRyFQ" annotatedElement="_resLQGv2Edq7X4sGURiZYA">
+ <body>The stereotype for which to set the value.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_o6B2IGv2Edq7X4sGURiZYA" name="propertyName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_BIFU0PIDEdulR8T2OJRyFQ" annotatedElement="_o6B2IGv2Edq7X4sGURiZYA">
+ <body>The name of the property whose value to set.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_m5bH4GzIEdqNr-AKm4G4QQ" name="newValue" effect="read">
+ <ownedComment xmi:id="_9wvlkPICEdulR8T2OJRyFQ" annotatedElement="_m5bH4GzIEdqNr-AKm4G4QQ">
+ <body>The new value for the property.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Tj6BkYbbEdq0WtDJCT4EaQ" name="createEAnnotation">
+ <ownedComment xmi:id="_u8XzkOwdEdqYHf-imTcTdw" annotatedElement="_Tj6BkYbbEdq0WtDJCT4EaQ">
+ <body>Creates an annotation with the specified source and this element as its model element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YE_AEIbbEdq0WtDJCT4EaQ" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWj6cX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aXUPEIbbEdq0WtDJCT4EaQ" name="source" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_6bxfwPIAEdulR8T2OJRyFQ" annotatedElement="_aXUPEIbbEdq0WtDJCT4EaQ">
+ <body>The source for the new annotation.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_4IIuwKO_Edqi_5gqUMOQtA" name="getRelationships">
+ <ownedComment xmi:id="_znllgOwdEdqYHf-imTcTdw" annotatedElement="_4IIuwKO_Edqi_5gqUMOQtA">
+ <body>Retrieves the relationships in which this element is involved.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_OGNIkKPAEdqi_5gqUMOQtA" type="_DH62EKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R5soUaPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R5soUKPAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UJyboKPAEdqi_5gqUMOQtA" name="getRelationships">
+ <ownedComment xmi:id="_1gb9gOwdEdqYHf-imTcTdw" annotatedElement="_UJyboKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the relationships of the specified type in which this element is involved.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_UJyboaPAEdqi_5gqUMOQtA" type="_DH62EKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UJyboqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UJybo6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XBN7wKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
+ <ownedComment xmi:id="_mhklsPIBEdulR8T2OJRyFQ" annotatedElement="_XBN7wKPAEdqi_5gqUMOQtA">
+ <body>The (meta)type of the relationships to retrieve.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fBOfQKPAEdqi_5gqUMOQtA" name="getSourceDirectedRelationships">
+ <ownedComment xmi:id="_5RsBkOwdEdqYHf-imTcTdw" annotatedElement="_fBOfQKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships for which this element is a source.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_fBOfQaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fBOfQqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fBOfQ6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fBOfRKPAEdqi_5gqUMOQtA" name="getSourceDirectedRelationships">
+ <ownedComment xmi:id="_63dskOwdEdqYHf-imTcTdw" annotatedElement="_fBOfRKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships of the specified type for which this element is a source.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_fBOfRaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fBOfRqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fBOfR6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_fBOfSKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
+ <ownedComment xmi:id="_3TviYPIBEdulR8T2OJRyFQ" annotatedElement="_fBOfSKPAEdqi_5gqUMOQtA">
+ <body>The (meta)type of the directed relationships to retrieve.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_t5G5gKPAEdqi_5gqUMOQtA" name="getTargetDirectedRelationships">
+ <ownedComment xmi:id="_9qIBcOwdEdqYHf-imTcTdw" annotatedElement="_t5G5gKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships for which this element is a target.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_t5G5gaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t5G5gqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t5G5g6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_t5G5hKPAEdqi_5gqUMOQtA" name="getTargetDirectedRelationships">
+ <ownedComment xmi:id="__rxJEOwdEdqYHf-imTcTdw" annotatedElement="_t5G5hKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships of the specified type for which this element is a target.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_t5G5haPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t5G5hqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t5G5h6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_t5G5iKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
+ <ownedComment xmi:id="_-J0pYPIBEdulR8T2OJRyFQ" annotatedElement="_t5G5iKPAEdqi_5gqUMOQtA">
+ <body>The (meta)type of the directed relationships to retrieve.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToi2PoAEdu-e7JlHBQtRA" name="allOwnedElements" isQuery="true" bodyCondition="_UToi2voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToi2foAEdu-e7JlHBQtRA" annotatedElement="_UToi2PoAEdu-e7JlHBQtRA">
+ <body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UToi2voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToi2PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVHwOPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToi3PoAEdu-e7JlHBQtRA" type="_kl90MGvbEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVHwOfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVHwOvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToi3_oAEdu-e7JlHBQtRA" name="mustBeOwned" isQuery="true" bodyCondition="_UToi4foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToi4PoAEdu-e7JlHBQtRA" annotatedElement="_UToi3_oAEdu-e7JlHBQtRA">
+ <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="_UToi4foAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToi3_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVHwO_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToi4_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOR_oAEdu-e7JlHBQtRA" name="A_profileApplication_applyingPackage" memberEnd="_Ua8Ec_oAEdu-e7JlHBQtRA _Ua8EhfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOSPoAEdu-e7JlHBQtRA" name="A_ownedStereotype_profile" memberEnd="_Ua8EZvoAEdu-e7JlHBQtRA _UbFOSfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOSfoAEdu-e7JlHBQtRA" type="__pew8GvzEdq7X4sGURiZYA" association="_UbFOSPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOSvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOS_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOTPoAEdu-e7JlHBQtRA" name="A_appliedProfile_profileApplication" memberEnd="_Ua8EfvoAEdu-e7JlHBQtRA _UbFOTfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOTfoAEdu-e7JlHBQtRA" type="_uY5yQGv5Edq7X4sGURiZYA" association="_UbFOTPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOTvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOT_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOUPoAEdu-e7JlHBQtRA" name="A_extension_metaclass" memberEnd="_Ua8EePoAEdu-e7JlHBQtRA _Ua8ElPoAEdu-e7JlHBQtRA" isDerived="true"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOUfoAEdu-e7JlHBQtRA" name="A_ownedEnd_extension" memberEnd="_Ua8EmPoAEdu-e7JlHBQtRA _UbFOUvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOUvoAEdu-e7JlHBQtRA" type="_skHGwGvsEdqG6fBIPwe-mw" association="_UbFOUfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOU_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOVPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOVfoAEdu-e7JlHBQtRA" name="A_type_extensionEnd" memberEnd="_Ua8Es_oAEdu-e7JlHBQtRA _UbFOVvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOVvoAEdu-e7JlHBQtRA" type="_2QuT0GvdEdq4DLWZOhbdEA" association="_UbFOVfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOV_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOWPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOWfoAEdu-e7JlHBQtRA" name="A_metaclassReference_profile" memberEnd="_Ua8EavoAEdu-e7JlHBQtRA _UbFOWvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOWvoAEdu-e7JlHBQtRA" type="__pew8GvzEdq7X4sGURiZYA" association="_UbFOWfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOW_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOXPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOXfoAEdu-e7JlHBQtRA" name="A_metamodelReference_profile" memberEnd="_Ua8EbvoAEdu-e7JlHBQtRA _UbFOXvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOXvoAEdu-e7JlHBQtRA" type="__pew8GvzEdq7X4sGURiZYA" association="_UbFOXfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOX_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOYPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOYfoAEdu-e7JlHBQtRA" name="A_icon_stereotype" memberEnd="_Ua8EWvoAEdu-e7JlHBQtRA _UbFOYvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOYvoAEdu-e7JlHBQtRA" type="_A7vDAGv0Edq7X4sGURiZYA" association="_UbFOYfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOY_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOZPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2QuT0GvdEdq4DLWZOhbdEA" name="ExtensionEnd">
+ <ownedComment xmi:id="_Ua8Eq_oAEdu-e7JlHBQtRA" annotatedElement="_2QuT0GvdEdq4DLWZOhbdEA">
+ <body>An extension end is used to tie an extension to a stereotype when extending a metaclass.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UbFObfoAEdu-e7JlHBQtRA" annotatedElement="_2QuT0GvdEdq4DLWZOhbdEA">
+ <body>The default multiplicity of an extension end is 0..1.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8ErPoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_2QuT0GvdEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_Ua8ErfoAEdu-e7JlHBQtRA" annotatedElement="_Ua8ErPoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8ErvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ua8Er_oAEdu-e7JlHBQtRA" name="aggregation" constrainedElement="_2QuT0GvdEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_Ua8EsPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Er_oAEdu-e7JlHBQtRA">
+ <body>The aggregation of an ExtensionEnd is composite.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8EsfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.aggregation = #composite</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ua8EsvoAEdu-e7JlHBQtRA" general="_Jp_1oGveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_Ua8Es_oAEdu-e7JlHBQtRA" name="type" type="_A7vDAGv0Edq7X4sGURiZYA" redefinedProperty="_UT7di_oAEdu-e7JlHBQtRA" association="_UbFOVfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EtPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Es_oAEdu-e7JlHBQtRA">
+ <body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EtfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EtvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8Et_oAEdu-e7JlHBQtRA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" isDerived="true" redefinedProperty="_UTyTiPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EuPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Et_oAEdu-e7JlHBQtRA">
+ <body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFObvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOb_oAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOcPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_WLw30FYLEdqrn7iZ0eqieg" name="getLower" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_ZNVLYFYLEdqrn7iZ0eqieg" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3FVzkFYkEdqB6vblk3tuMA" name="setLower" visibility="protected">
+ <ownedParameter xmi:id="_4dG3wFYkEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ua8EvPoAEdu-e7JlHBQtRA" name="lowerBound" isQuery="true" redefinedOperation="_UTyTqfoAEdu-e7JlHBQtRA" bodyCondition="_Ua8EvvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EvfoAEdu-e7JlHBQtRA" annotatedElement="_Ua8EvPoAEdu-e7JlHBQtRA">
+ <body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default&#xD;
+lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ua8EvvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_Ua8EvPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ua8Ev_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = lowerBound = if lowerValue->isEmpty() then 0 else lowerValue->IntegerValue() endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_Ua8EwPoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOcvoAEdu-e7JlHBQtRA" name="VariableAction" isAbstract="true">
+ <ownedComment xmi:id="_UbFOc_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOcvoAEdu-e7JlHBQtRA">
+ <body>VariableAction is an abstract class for actions that operate on a statically specified variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbFOdPoAEdu-e7JlHBQtRA" name="scope_of_variable" constrainedElement="_UbFOcvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOdfoAEdu-e7JlHBQtRA" annotatedElement="_UbFOdPoAEdu-e7JlHBQtRA">
+ <body>The action must be in the scope of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbFOdvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.variable.isAccessibleBy(self)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbFOd_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOePoAEdu-e7JlHBQtRA" name="variable" type="_UX9CgvoAEdu-e7JlHBQtRA" association="_UbFOyvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOefoAEdu-e7JlHBQtRA" annotatedElement="_UbFOePoAEdu-e7JlHBQtRA">
+ <body>Variable to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOevoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOe_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOfPoAEdu-e7JlHBQtRA" name="ReadVariableAction">
+ <ownedComment xmi:id="_UbFOffoAEdu-e7JlHBQtRA" annotatedElement="_UbFOfPoAEdu-e7JlHBQtRA">
+ <body>A read variable action is a variable action that retrieves the values of a variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbFOfvoAEdu-e7JlHBQtRA" name="type_and_ordering" constrainedElement="_UbFOfPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOf_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOfvoAEdu-e7JlHBQtRA">
+ <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="_UbFOgPoAEdu-e7JlHBQtRA">
+ <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="_UbFOgfoAEdu-e7JlHBQtRA" name="compatible_multiplicity" constrainedElement="_UbFOfPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOgvoAEdu-e7JlHBQtRA" annotatedElement="_UbFOgfoAEdu-e7JlHBQtRA">
+ <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="_UbFOg_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.variable.multiplicity.compatibleWith(self.result.multiplicity)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbFOhPoAEdu-e7JlHBQtRA" general="_UbFOcvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOhfoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_UbO_QPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOhvoAEdu-e7JlHBQtRA" annotatedElement="_UbFOhfoAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOh_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOiPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOifoAEdu-e7JlHBQtRA" name="WriteVariableAction" isAbstract="true">
+ <ownedComment xmi:id="_UbFOivoAEdu-e7JlHBQtRA" annotatedElement="_UbFOifoAEdu-e7JlHBQtRA">
+ <body>WriteVariableAction is an abstract class for variable actions that change variable values.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbFOi_oAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UbFOifoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOjPoAEdu-e7JlHBQtRA" annotatedElement="_UbFOi_oAEdu-e7JlHBQtRA">
+ <body>The type input pin is the same as the type of the variable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbFOjfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.type = self.variable.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbFOjvoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UbFOifoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOj_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOjvoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbFOkPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbFOkfoAEdu-e7JlHBQtRA" general="_UbFOcvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOkvoAEdu-e7JlHBQtRA" name="value" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UbO_RPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOk_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOkvoAEdu-e7JlHBQtRA">
+ <body>Value to be added or removed from the variable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOlPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOlfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOlvoAEdu-e7JlHBQtRA" name="ClearVariableAction">
+ <ownedComment xmi:id="_UbFOl_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOlvoAEdu-e7JlHBQtRA">
+ <body>A clear variable action is a variable action that removes all values of a variable.</body>
+ </ownedComment>
+ <generalization xmi:id="_UbFOmPoAEdu-e7JlHBQtRA" general="_UbFOcvoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOmfoAEdu-e7JlHBQtRA" name="AddVariableValueAction">
+ <ownedComment xmi:id="_UbFOmvoAEdu-e7JlHBQtRA" annotatedElement="_UbFOmfoAEdu-e7JlHBQtRA">
+ <body>An add variable value action is a write variable action for adding values to a variable.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbFOm_oAEdu-e7JlHBQtRA" name="single_input_pin" constrainedElement="_UbFOmfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOnPoAEdu-e7JlHBQtRA" annotatedElement="_UbFOm_oAEdu-e7JlHBQtRA">
+ <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="_UbFOnfoAEdu-e7JlHBQtRA">
+ <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="_UbFOnvoAEdu-e7JlHBQtRA" general="_UbFOifoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOn_oAEdu-e7JlHBQtRA" name="isReplaceAll" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbFOoPoAEdu-e7JlHBQtRA" annotatedElement="_UbFOn_oAEdu-e7JlHBQtRA">
+ <body>Specifies whether existing values of the variable should be removed before adding the new value.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbFOofoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbFOovoAEdu-e7JlHBQtRA" name="insertAt" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UbO_SPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOo_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOovoAEdu-e7JlHBQtRA">
+ <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="_UbFOpPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOpfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOpvoAEdu-e7JlHBQtRA" name="RemoveVariableValueAction">
+ <ownedComment xmi:id="_UbFOp_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOpvoAEdu-e7JlHBQtRA">
+ <body>A remove variable value action is a write variable action that removes values from variables.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbFOqPoAEdu-e7JlHBQtRA" name="unlimited_natural" constrainedElement="_UbFOpvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOqfoAEdu-e7JlHBQtRA" annotatedElement="_UbFOqPoAEdu-e7JlHBQtRA">
+ <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="_UbFOqvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbFOq_oAEdu-e7JlHBQtRA" general="_UbFOifoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOrPoAEdu-e7JlHBQtRA" name="isRemoveDuplicates" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbFOrfoAEdu-e7JlHBQtRA" annotatedElement="_UbFOrPoAEdu-e7JlHBQtRA">
+ <body>Specifies whether to remove duplicates of the value in nonunique variables.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbFOrvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbFOr_oAEdu-e7JlHBQtRA" name="removeAt" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UbO_TPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOsPoAEdu-e7JlHBQtRA" annotatedElement="_UbFOr_oAEdu-e7JlHBQtRA">
+ <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="_UbFOsfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOsvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOs_oAEdu-e7JlHBQtRA" name="RaiseExceptionAction">
+ <ownedComment xmi:id="_UbFOtPoAEdu-e7JlHBQtRA" annotatedElement="_UbFOs_oAEdu-e7JlHBQtRA">
+ <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="_UbFOtfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOtvoAEdu-e7JlHBQtRA" name="exception" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_UbO_VPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOt_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOtvoAEdu-e7JlHBQtRA">
+ <body>An input pin whose value becomes an exception object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOuPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOufoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbFOuvoAEdu-e7JlHBQtRA" name="ActionInputPin">
+ <ownedComment xmi:id="_UbFOu_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOuvoAEdu-e7JlHBQtRA">
+ <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="_UbFOvPoAEdu-e7JlHBQtRA" name="one_output_pin" constrainedElement="_UbFOuvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOvfoAEdu-e7JlHBQtRA" annotatedElement="_UbFOvPoAEdu-e7JlHBQtRA">
+ <body>The fromAction of an action input pin must have exactly one output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbFOvvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbFOv_oAEdu-e7JlHBQtRA" name="input_pin" constrainedElement="_UbFOuvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOwPoAEdu-e7JlHBQtRA" annotatedElement="_UbFOv_oAEdu-e7JlHBQtRA">
+ <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="_UbFOwfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbFOwvoAEdu-e7JlHBQtRA" name="no_control_or_data_flow" constrainedElement="_UbFOuvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOw_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOwvoAEdu-e7JlHBQtRA">
+ <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="_UbFOxPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbFOxfoAEdu-e7JlHBQtRA" general="_UXz4NPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbFOxvoAEdu-e7JlHBQtRA" name="fromAction" type="_UX9B-PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UbO_UPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOx_oAEdu-e7JlHBQtRA" annotatedElement="_UbFOxvoAEdu-e7JlHBQtRA">
+ <body>The action used to provide values.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOyPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOyfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbFOyvoAEdu-e7JlHBQtRA" name="A_variable_variableAction" memberEnd="_UbFOePoAEdu-e7JlHBQtRA _UbFOy_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbFOy_oAEdu-e7JlHBQtRA" type="_UbFOcvoAEdu-e7JlHBQtRA" association="_UbFOyvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFOzPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFOzfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_QPoAEdu-e7JlHBQtRA" name="A_result_readVariableAction" memberEnd="_UbFOhfoAEdu-e7JlHBQtRA _UbO_QfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_QfoAEdu-e7JlHBQtRA" type="_UbFOfPoAEdu-e7JlHBQtRA" association="_UbO_QPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_QvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_Q_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_RPoAEdu-e7JlHBQtRA" name="A_value_writeVariableAction" memberEnd="_UbFOkvoAEdu-e7JlHBQtRA _UbO_RfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_RfoAEdu-e7JlHBQtRA" type="_UbFOifoAEdu-e7JlHBQtRA" association="_UbO_RPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_RvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_R_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_SPoAEdu-e7JlHBQtRA" name="A_insertAt_addVariableValueAction" memberEnd="_UbFOovoAEdu-e7JlHBQtRA _UbO_SfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_SfoAEdu-e7JlHBQtRA" type="_UbFOmfoAEdu-e7JlHBQtRA" association="_UbO_SPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_SvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_S_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_TPoAEdu-e7JlHBQtRA" name="A_removeAt_removeVariableValueAction" memberEnd="_UbFOr_oAEdu-e7JlHBQtRA _UbO_TfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_TfoAEdu-e7JlHBQtRA" type="_UbFOpvoAEdu-e7JlHBQtRA" association="_UbO_TPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_TvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_T_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_UPoAEdu-e7JlHBQtRA" name="A_fromAction_actionInputPin" memberEnd="_UbFOxvoAEdu-e7JlHBQtRA _UbO_UfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_UfoAEdu-e7JlHBQtRA" type="_UbFOuvoAEdu-e7JlHBQtRA" association="_UbO_UPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_UvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_U_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_VPoAEdu-e7JlHBQtRA" name="A_exception_raiseExceptionAction" memberEnd="_UbFOtvoAEdu-e7JlHBQtRA _UbO_VfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_VfoAEdu-e7JlHBQtRA" type="_UbFOs_oAEdu-e7JlHBQtRA" association="_UbO_VPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_VvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_V_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbO_WPoAEdu-e7JlHBQtRA" name="GeneralizationSet">
+ <ownedComment xmi:id="_UbO_WfoAEdu-e7JlHBQtRA" annotatedElement="_UbO_WPoAEdu-e7JlHBQtRA">
+ <body>A generalization set is a packageable element whose instances define collections of subsets of generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbO_WvoAEdu-e7JlHBQtRA" name="generalization_same_classifier" constrainedElement="_UbO_WPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_W_oAEdu-e7JlHBQtRA" annotatedElement="_UbO_WvoAEdu-e7JlHBQtRA">
+ <body>Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbO_XPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>generalization->collect(g | g.general)->asSet()->size() &lt;= 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbO_XfoAEdu-e7JlHBQtRA" name="maps_to_generalization_set" constrainedElement="_UbO_WPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_XvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_XfoAEdu-e7JlHBQtRA">
+ <body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbO_X_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbO_YPoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UbO_YfoAEdu-e7JlHBQtRA" name="isCovering" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbO_YvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_YfoAEdu-e7JlHBQtRA">
+ <body>Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbO_Y_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_ZPoAEdu-e7JlHBQtRA" name="isDisjoint" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbO_ZfoAEdu-e7JlHBQtRA" annotatedElement="_UbO_ZPoAEdu-e7JlHBQtRA">
+ <body>Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty. For example, Person could have two Generalization relationships, each with the different specific Classifier: Manager or Staff. This would be disjoint because every instance of Person must either be a Manager or Staff. In contrast, Person could have two Generalization relationships involving two specific (and non-covering) Classifiers: Sales Person and Manager. This GeneralizationSet would not be disjoint because there are instances of Person which can be a Sales Person and a Manager.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbO_ZvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_Z_oAEdu-e7JlHBQtRA" name="powertype" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UbO_fvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_aPoAEdu-e7JlHBQtRA" annotatedElement="_UbO_Z_oAEdu-e7JlHBQtRA">
+ <body>Designates the Classifier that is defined as the power type for the associated GeneralizationSet.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_afoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_avoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_a_oAEdu-e7JlHBQtRA" name="generalization" type="_C7AF4GwREdq14q0ETb1t3g" association="_UbO_f_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_bPoAEdu-e7JlHBQtRA" annotatedElement="_UbO_a_oAEdu-e7JlHBQtRA">
+ <body>Designates the instances of Generalization which are members of a given GeneralizationSet.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_bfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_bvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_C7AF4GwREdq14q0ETb1t3g" name="Generalization">
+ <ownedComment xmi:id="_UWd0H_oAEdu-e7JlHBQtRA" annotatedElement="_C7AF4GwREdq14q0ETb1t3g">
+ <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>
+ <ownedComment xmi:id="_UbO_dvoAEdu-e7JlHBQtRA" annotatedElement="_C7AF4GwREdq14q0ETb1t3g">
+ <body>A generalization relates a specific classifier to a more general classifier, and is owned by the specific classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbO_d_oAEdu-e7JlHBQtRA" name="generalization_same_classifier" constrainedElement="_C7AF4GwREdq14q0ETb1t3g">
+ <ownedComment xmi:id="_UbO_ePoAEdu-e7JlHBQtRA" annotatedElement="_UbO_d_oAEdu-e7JlHBQtRA">
+ <body>Every Generalization associated with a given GeneralizationSet must have the same general Classifier. That is, all Generalizations for a particular GeneralizationSet must have the same superclass.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbO_efoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UWd0IPoAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UWd0IfoAEdu-e7JlHBQtRA" name="isSubstitutable" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UWd0IvoAEdu-e7JlHBQtRA" annotatedElement="_UWd0IfoAEdu-e7JlHBQtRA">
+ <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>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0I_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0JPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWd0JfoAEdu-e7JlHBQtRA" name="specific" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA" association="_UXXL8foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWd0JvoAEdu-e7JlHBQtRA" annotatedElement="_UWd0JfoAEdu-e7JlHBQtRA">
+ <body>References the specializing classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0J_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0KPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWd0KfoAEdu-e7JlHBQtRA" name="general" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UXXL8voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWd0KvoAEdu-e7JlHBQtRA" annotatedElement="_UWd0KfoAEdu-e7JlHBQtRA">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0K_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0LPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_evoAEdu-e7JlHBQtRA" name="generalizationSet" type="_UbO_WPoAEdu-e7JlHBQtRA" association="_UbO_f_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_e_oAEdu-e7JlHBQtRA" annotatedElement="_UbO_evoAEdu-e7JlHBQtRA">
+ <body>Designates a set in which instances of Generalization is considered members.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_fPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_ffoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_fvoAEdu-e7JlHBQtRA" name="A_powertypeExtent_powertype" memberEnd="_UbO_cvoAEdu-e7JlHBQtRA _UbO_Z_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_f_oAEdu-e7JlHBQtRA" name="A_generalizationSet_generalization" memberEnd="_UbO_evoAEdu-e7JlHBQtRA _UbO_a_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbO_gPoAEdu-e7JlHBQtRA" name="InformationItem">
+ <ownedComment xmi:id="_UbO_gfoAEdu-e7JlHBQtRA" annotatedElement="_UbO_gPoAEdu-e7JlHBQtRA">
+ <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="_UbO_gvoAEdu-e7JlHBQtRA" name="sources_and_targets" constrainedElement="_UbO_gPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_g_oAEdu-e7JlHBQtRA" annotatedElement="_UbO_gvoAEdu-e7JlHBQtRA">
+ <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="_UbO_hPoAEdu-e7JlHBQtRA">
+ <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="_UbO_hfoAEdu-e7JlHBQtRA" name="has_no" constrainedElement="_UbO_gPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_hvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_hfoAEdu-e7JlHBQtRA">
+ <body>An informationItem has no feature, no generalization, and no associations.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbO_h_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.generalization->isEmpty() and self.feature->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbO_iPoAEdu-e7JlHBQtRA" name="not_instantiable" constrainedElement="_UbO_gPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_ifoAEdu-e7JlHBQtRA" annotatedElement="_UbO_iPoAEdu-e7JlHBQtRA">
+ <body>It is not instantiable.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbO_ivoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isAbstract</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbO_i_oAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UbO_jPoAEdu-e7JlHBQtRA" name="represented" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UbO_vfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_jfoAEdu-e7JlHBQtRA" annotatedElement="_UbO_jPoAEdu-e7JlHBQtRA">
+ <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="_UbO_jvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_j_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbO_kPoAEdu-e7JlHBQtRA" name="InformationFlow">
+ <ownedComment xmi:id="_UbO_kfoAEdu-e7JlHBQtRA" annotatedElement="_UbO_kPoAEdu-e7JlHBQtRA">
+ <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="_UbO_kvoAEdu-e7JlHBQtRA" name="sources_and_targets_kind" constrainedElement="_UbO_kPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_k_oAEdu-e7JlHBQtRA" annotatedElement="_UbO_kvoAEdu-e7JlHBQtRA">
+ <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="_UbO_lPoAEdu-e7JlHBQtRA">
+ <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="_UbO_lfoAEdu-e7JlHBQtRA" name="must_conform" constrainedElement="_UbO_kPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_lvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_lfoAEdu-e7JlHBQtRA">
+ <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="_UbO_l_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbO_mPoAEdu-e7JlHBQtRA" name="convey_classifiers" constrainedElement="_UbO_kPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_mfoAEdu-e7JlHBQtRA" annotatedElement="_UbO_mPoAEdu-e7JlHBQtRA">
+ <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="_UbO_mvoAEdu-e7JlHBQtRA">
+ <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="_UbO_m_oAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <generalization xmi:id="_UbO_nPoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UbO_nfoAEdu-e7JlHBQtRA" name="realization" type="_DH62EKPAEdqi_5gqUMOQtA" association="_UbO_ufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_nvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_nfoAEdu-e7JlHBQtRA">
+ <body>Determines which Relationship will realize the specified flow</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_n_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_oPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_ofoAEdu-e7JlHBQtRA" name="conveyed" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UbO_wfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_ovoAEdu-e7JlHBQtRA" annotatedElement="_UbO_ofoAEdu-e7JlHBQtRA">
+ <body>Specifies the information items that may circulate on this information flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_o_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_pPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_pfoAEdu-e7JlHBQtRA" name="informationSource" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA" association="_UbO_xfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_pvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_pfoAEdu-e7JlHBQtRA">
+ <body>Defines from which source the conveyed InformationItems are initiated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_p_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_qPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_qfoAEdu-e7JlHBQtRA" name="informationTarget" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UbO_yfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_qvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_qfoAEdu-e7JlHBQtRA">
+ <body>Defines to which target the conveyed InformationItems are directed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_q_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_rPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_rfoAEdu-e7JlHBQtRA" name="realizingActivityEdge" type="_UYje-_oAEdu-e7JlHBQtRA" association="_UbO_zfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_rvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_rfoAEdu-e7JlHBQtRA">
+ <body>Determines which ActivityEdges will realize the specified flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_r_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_sPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_sfoAEdu-e7JlHBQtRA" name="realizingConnector" type="_UYZtz_oAEdu-e7JlHBQtRA" association="_UbO_0foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_svoAEdu-e7JlHBQtRA" annotatedElement="_UbO_sfoAEdu-e7JlHBQtRA">
+ <body>Determines which Connectors will realize the specified flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_s_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_tPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_tfoAEdu-e7JlHBQtRA" name="realizingMessage" type="_gfgNwGveEdq4DLWZOhbdEA" association="_UbO_1foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_tvoAEdu-e7JlHBQtRA" annotatedElement="_UbO_tfoAEdu-e7JlHBQtRA">
+ <body>Determines which Messages will realize the specified flow.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_t_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_uPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_ufoAEdu-e7JlHBQtRA" name="A_realization_abstraction" memberEnd="_UbO_nfoAEdu-e7JlHBQtRA _UbO_uvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_uvoAEdu-e7JlHBQtRA" name="abstraction" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_ufoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_u_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_vPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_vfoAEdu-e7JlHBQtRA" name="A_represented_representation" memberEnd="_UbO_jPoAEdu-e7JlHBQtRA _UbO_vvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_vvoAEdu-e7JlHBQtRA" name="representation" type="_UbO_gPoAEdu-e7JlHBQtRA" association="_UbO_vfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_v_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_wPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_wfoAEdu-e7JlHBQtRA" name="A_conveyed_informationFlow" memberEnd="_UbO_ofoAEdu-e7JlHBQtRA _UbO_wvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_wvoAEdu-e7JlHBQtRA" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_wfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_w_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_xPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_xfoAEdu-e7JlHBQtRA" name="A_informationSource_informationFlow" memberEnd="_UbO_pfoAEdu-e7JlHBQtRA _UbO_xvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_xvoAEdu-e7JlHBQtRA" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_xfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_x_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_yPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_yfoAEdu-e7JlHBQtRA" name="A_informationTarget_informationFlow" memberEnd="_UbO_qfoAEdu-e7JlHBQtRA _UbO_yvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_yvoAEdu-e7JlHBQtRA" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_yfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_y_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_zPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_zfoAEdu-e7JlHBQtRA" name="A_realizingActivityEdge_informationFlow" memberEnd="_UbO_rfoAEdu-e7JlHBQtRA _UbO_zvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_zvoAEdu-e7JlHBQtRA" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_zfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_z_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_0PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_0foAEdu-e7JlHBQtRA" name="A_realizingConnector_informationFlow" memberEnd="_UbO_sfoAEdu-e7JlHBQtRA _UbO_0voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_0voAEdu-e7JlHBQtRA" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_0foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_0_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_1PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UbO_1foAEdu-e7JlHBQtRA" name="A_realizingMessage_informationFlow" memberEnd="_UbO_tfoAEdu-e7JlHBQtRA _UbO_1voAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UbO_1voAEdu-e7JlHBQtRA" type="_UbO_kPoAEdu-e7JlHBQtRA" association="_UbO_1foAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_1_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_2PoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_NVhqMGv0Edq7X4sGURiZYA" name="Model">
+ <ownedComment xmi:id="_UbYwQPoAEdu-e7JlHBQtRA" annotatedElement="_NVhqMGv0Edq7X4sGURiZYA">
+ <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="_UbYwQfoAEdu-e7JlHBQtRA" general="_-cvRAGvzEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UbYwQvoAEdu-e7JlHBQtRA" name="viewpoint" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbYwQ_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwQvoAEdu-e7JlHBQtRA">
+ <body>The name of the viewpoint that is expressed by a model (This name may refer to a profile definition).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwRPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwRfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_9nl2EGwREdq14q0ETb1t3g" name="isMetamodel" isQuery="true">
+ <ownedComment xmi:id="_9s0W0OwiEdqYHf-imTcTdw" annotatedElement="_9nl2EGwREdq14q0ETb1t3g">
+ <body>Determines whether this model is a metamodel.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__8c0oGwREdq14q0ETb1t3g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYwR_oAEdu-e7JlHBQtRA" name="ReadExtentAction">
+ <ownedComment xmi:id="_UbYwSPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwR_oAEdu-e7JlHBQtRA">
+ <body>A read extent action is an action that retrieves the current instances of a classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbYwSfoAEdu-e7JlHBQtRA" name="type_is_classifier" constrainedElement="_UbYwR_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwSvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwSfoAEdu-e7JlHBQtRA">
+ <body>The type of the result output pin is the classifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwS_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwTPoAEdu-e7JlHBQtRA" name="multiplicity_of_result" constrainedElement="_UbYwR_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwTfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwTPoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the result output pin is 0..*.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwTvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(0,#null)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYwT_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYwUPoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6b_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwUfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwUPoAEdu-e7JlHBQtRA">
+ <body>The runtime instances of the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwUvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwU_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwVPoAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Ubh6c_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwVfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwVPoAEdu-e7JlHBQtRA">
+ <body>The classifier whose instances are to be retrieved.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwVvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwV_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYwWPoAEdu-e7JlHBQtRA" name="ReclassifyObjectAction">
+ <ownedComment xmi:id="_UbYwWfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwWPoAEdu-e7JlHBQtRA">
+ <body>A reclassify object action is an action that changes which classifiers classify an object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbYwWvoAEdu-e7JlHBQtRA" name="classifier_not_abstract" constrainedElement="_UbYwWPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwW_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwWvoAEdu-e7JlHBQtRA">
+ <body>None of the new classifiers may be abstract.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwXPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.newClassifier->exists(isAbstract = true)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwXfoAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UbYwWPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwXvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwXfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwX_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.argument.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwYPoAEdu-e7JlHBQtRA" name="input_pin" constrainedElement="_UbYwWPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwYfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwYPoAEdu-e7JlHBQtRA">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwYvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.argument.type->size() = 0</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYwY_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYwZPoAEdu-e7JlHBQtRA" name="isReplaceAll" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbYwZfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwZPoAEdu-e7JlHBQtRA">
+ <body>Specifies whether existing classifiers should be removed before adding the new classifiers.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbYwZvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwZ_oAEdu-e7JlHBQtRA" name="oldClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Ubh6d_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwaPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwZ_oAEdu-e7JlHBQtRA">
+ <body>A set of classifiers to be removed from the classifiers of the object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwafoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwavoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwa_oAEdu-e7JlHBQtRA" name="newClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Ubh6e_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwbPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwa_oAEdu-e7JlHBQtRA">
+ <body>A set of classifiers to be added to the classifiers of the object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwbfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwbvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwb_oAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh6t_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwcPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwb_oAEdu-e7JlHBQtRA">
+ <body>Holds the object to be reclassified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwcfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwcvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYwc_oAEdu-e7JlHBQtRA" name="ReadIsClassifiedObjectAction">
+ <ownedComment xmi:id="_UbYwdPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwc_oAEdu-e7JlHBQtRA">
+ <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="_UbYwdfoAEdu-e7JlHBQtRA" name="multiplicity_of_input" constrainedElement="_UbYwc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwdvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwdfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwd_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwePoAEdu-e7JlHBQtRA" name="no_type" constrainedElement="_UbYwc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwefoAEdu-e7JlHBQtRA" annotatedElement="_UbYwePoAEdu-e7JlHBQtRA">
+ <body>The input pin has no type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwevoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.type->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwe_oAEdu-e7JlHBQtRA" name="multiplicity_of_output" constrainedElement="_UbYwc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwfPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwe_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwffoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwfvoAEdu-e7JlHBQtRA" name="boolean_result" constrainedElement="_UbYwc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwf_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwfvoAEdu-e7JlHBQtRA">
+ <body>The type of the output pin is Boolean</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwgPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type = Boolean</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYwgfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYwgvoAEdu-e7JlHBQtRA" name="isDirect" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbYwg_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwgvoAEdu-e7JlHBQtRA">
+ <body>Indicates whether the classifier must directly classify the input object.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbYwhPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwhfoAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Ubh6f_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwhvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwhfoAEdu-e7JlHBQtRA">
+ <body>The classifier against which the classification of the input object is tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwh_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwiPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwifoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6g_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwivoAEdu-e7JlHBQtRA" annotatedElement="_UbYwifoAEdu-e7JlHBQtRA">
+ <body>After termination of the action, will hold the result of the test.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwi_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwjPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwjfoAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh6h_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwjvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwjfoAEdu-e7JlHBQtRA">
+ <body>Holds the object whose classification is to be tested.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwj_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwkPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYwkfoAEdu-e7JlHBQtRA" name="StartClassifierBehaviorAction">
+ <ownedComment xmi:id="_UbYwkvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwkfoAEdu-e7JlHBQtRA">
+ <body>A start classifier behavior action is an action that starts the classifier behavior of the input.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbYwk_oAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UbYwkfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwlPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwk_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the input pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwlfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwlvoAEdu-e7JlHBQtRA" name="type_has_classifier" constrainedElement="_UbYwkfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwl_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwlvoAEdu-e7JlHBQtRA">
+ <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="_UbYwmPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYwmfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYwmvoAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh6i_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwm_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwmvoAEdu-e7JlHBQtRA">
+ <body>Holds the object on which to start the owned behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwnPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwnfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYwnvoAEdu-e7JlHBQtRA" name="QualifierValue">
+ <ownedComment xmi:id="_UbYwn_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwnvoAEdu-e7JlHBQtRA">
+ <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="_UbYwoPoAEdu-e7JlHBQtRA" name="qualifier_attribute" constrainedElement="_UbYwnvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwofoAEdu-e7JlHBQtRA" annotatedElement="_UbYwoPoAEdu-e7JlHBQtRA">
+ <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="_UbYwovoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwo_oAEdu-e7JlHBQtRA" name="type_of_qualifier" constrainedElement="_UbYwnvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwpPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwo_oAEdu-e7JlHBQtRA">
+ <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="_UbYwpfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.type = self.qualifier.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwpvoAEdu-e7JlHBQtRA" name="multiplicity_of_qualifier" constrainedElement="_UbYwnvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwp_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwpvoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the qualifier value input pin is &quot;1..1&quot;.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwqPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYwqfoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UbYwqvoAEdu-e7JlHBQtRA" name="qualifier" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_Ubh6k_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwq_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwqvoAEdu-e7JlHBQtRA">
+ <body>Attribute representing the qualifier for which the value is to be specified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwrPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwrfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwrvoAEdu-e7JlHBQtRA" name="value" type="_UXz4NPoAEdu-e7JlHBQtRA" association="_Ubh6l_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwr_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwrvoAEdu-e7JlHBQtRA">
+ <body>Input pin from which the specified value for the qualifier is taken.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwsPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwsfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZvyP_oAEdu-e7JlHBQtRA" name="LinkEndData">
+ <ownedComment xmi:id="_UZvyQPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyP_oAEdu-e7JlHBQtRA">
+ <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="_UZvyQfoAEdu-e7JlHBQtRA" name="property_is_association_end" constrainedElement="_UZvyP_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyQvoAEdu-e7JlHBQtRA" annotatedElement="_UZvyQfoAEdu-e7JlHBQtRA">
+ <body>The property must be an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvyQ_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.end.association->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyRPoAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UZvyP_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyRfoAEdu-e7JlHBQtRA" annotatedElement="_UZvyRPoAEdu-e7JlHBQtRA">
+ <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="_UZvyRvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.type = self.end.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZvyR_oAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UZvyP_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvySPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyR_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the end object input pin must be 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZvySfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwsvoAEdu-e7JlHBQtRA" name="qualifiers" constrainedElement="_UZvyP_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYws_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwsvoAEdu-e7JlHBQtRA">
+ <body>The qualifiers include all and only the qualifiers of the association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwtPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.qualifier->collect(qualifier) = self.end.qualifier</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwtfoAEdu-e7JlHBQtRA" name="end_object_input_pin" constrainedElement="_UZvyP_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwtvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwtfoAEdu-e7JlHBQtRA">
+ <body>The end object input pin is not also a qualifier value input pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwt_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.value->excludesAll(self.qualifier.value)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZvySvoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UZvyS_oAEdu-e7JlHBQtRA" name="value" type="_UXz4NPoAEdu-e7JlHBQtRA" association="_UZ47tfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyTPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyS_oAEdu-e7JlHBQtRA">
+ <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="_UZvyTfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyTvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZvyT_oAEdu-e7JlHBQtRA" name="end" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_UZ47ufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZvyUPoAEdu-e7JlHBQtRA" annotatedElement="_UZvyT_oAEdu-e7JlHBQtRA">
+ <body>Association end for which this link-end data specifies values.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZvyUfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZvyUvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYwuPoAEdu-e7JlHBQtRA" name="qualifier" type="_UbYwnvoAEdu-e7JlHBQtRA" aggregation="composite" association="_Ubh6j_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwufoAEdu-e7JlHBQtRA" annotatedElement="_UbYwuPoAEdu-e7JlHBQtRA">
+ <body>List of qualifier values</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYwuvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYwu_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYwvPoAEdu-e7JlHBQtRA" name="ReadLinkObjectEndAction">
+ <ownedComment xmi:id="_UbYwvfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <body>A read link object end action is an action that retrieves an end object from a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbYwvvoAEdu-e7JlHBQtRA" name="property" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwv_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwvvoAEdu-e7JlHBQtRA">
+ <body>The property must be an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwwPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.end.association.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwwfoAEdu-e7JlHBQtRA" name="association_of_association" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwwvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwwfoAEdu-e7JlHBQtRA">
+ <body>The association of the association end must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYww_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.end.Association.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwxPoAEdu-e7JlHBQtRA" name="ends_of_association" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwxfoAEdu-e7JlHBQtRA" annotatedElement="_UbYwxPoAEdu-e7JlHBQtRA">
+ <body>The ends of the association must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwxvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.end.association.memberEnd->forall(e | not e.isStatic)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwx_oAEdu-e7JlHBQtRA" name="type_of_object" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwyPoAEdu-e7JlHBQtRA" annotatedElement="_UbYwx_oAEdu-e7JlHBQtRA">
+ <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="_UbYwyfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.type = self.end.association</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwyvoAEdu-e7JlHBQtRA" name="multiplicity_of_object" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwy_oAEdu-e7JlHBQtRA" annotatedElement="_UbYwyvoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the object input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYwzPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYwzfoAEdu-e7JlHBQtRA" name="type_of_result" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYwzvoAEdu-e7JlHBQtRA" annotatedElement="_UbYwzfoAEdu-e7JlHBQtRA">
+ <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="_UbYwz_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type = self.end.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw0PoAEdu-e7JlHBQtRA" name="multiplicity_of_result" constrainedElement="_UbYwvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw0foAEdu-e7JlHBQtRA" annotatedElement="_UbYw0PoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYw0voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYw0_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYw1PoAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh6m_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw1foAEdu-e7JlHBQtRA" annotatedElement="_UbYw1PoAEdu-e7JlHBQtRA">
+ <body>Gives the input pin from which the link object is obtained.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYw1voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYw1_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYw2PoAEdu-e7JlHBQtRA" name="end" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_Ubh6n_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw2foAEdu-e7JlHBQtRA" annotatedElement="_UbYw2PoAEdu-e7JlHBQtRA">
+ <body>Link end to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYw2voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYw2_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYw3PoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6o_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw3foAEdu-e7JlHBQtRA" annotatedElement="_UbYw3PoAEdu-e7JlHBQtRA">
+ <body>Pin where the result value is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYw3voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYw3_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYw4PoAEdu-e7JlHBQtRA" name="ReadLinkObjectEndQualifierAction">
+ <ownedComment xmi:id="_UbYw4foAEdu-e7JlHBQtRA" annotatedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <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="_UbYw4voAEdu-e7JlHBQtRA" name="qualifier_attribute" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw4_oAEdu-e7JlHBQtRA" annotatedElement="_UbYw4voAEdu-e7JlHBQtRA">
+ <body>The qualifier attribute must be a qualifier attribute of an association end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYw5PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw5foAEdu-e7JlHBQtRA" name="association_of_association" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw5voAEdu-e7JlHBQtRA" annotatedElement="_UbYw5foAEdu-e7JlHBQtRA">
+ <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="_UbYw5_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw6PoAEdu-e7JlHBQtRA" name="ends_of_association" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw6foAEdu-e7JlHBQtRA" annotatedElement="_UbYw6PoAEdu-e7JlHBQtRA">
+ <body>The ends of the association must not be static.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYw6voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw6_oAEdu-e7JlHBQtRA" name="type_of_object" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw7PoAEdu-e7JlHBQtRA" annotatedElement="_UbYw6_oAEdu-e7JlHBQtRA">
+ <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="_UbYw7foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.type = self.qualifier.associationEnd.association</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw7voAEdu-e7JlHBQtRA" name="multiplicity_of_qualifier" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw7_oAEdu-e7JlHBQtRA" annotatedElement="_UbYw7voAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the qualifier attribute is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYw8PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.qualifier.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw8foAEdu-e7JlHBQtRA" name="multiplicity_of_object" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw8voAEdu-e7JlHBQtRA" annotatedElement="_UbYw8foAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the object input pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYw8_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.object.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw9PoAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw9foAEdu-e7JlHBQtRA" annotatedElement="_UbYw9PoAEdu-e7JlHBQtRA">
+ <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="_UbYw9voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type = self.qualifier.type</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYw9_oAEdu-e7JlHBQtRA" name="multiplicity_of_result" constrainedElement="_UbYw4PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw-PoAEdu-e7JlHBQtRA" annotatedElement="_UbYw9_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the result output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYw-foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYw-voAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYw-_oAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh6p_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYw_PoAEdu-e7JlHBQtRA" annotatedElement="_UbYw-_oAEdu-e7JlHBQtRA">
+ <body>Gives the input pin from which the link object is obtained.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYw_foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYw_voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYw__oAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6q_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxAPoAEdu-e7JlHBQtRA" annotatedElement="_UbYw__oAEdu-e7JlHBQtRA">
+ <body>Pin where the result value is placed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYxAfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxAvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYxA_oAEdu-e7JlHBQtRA" name="qualifier" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_Ubh6r_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxBPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxA_oAEdu-e7JlHBQtRA">
+ <body>The attribute representing the qualifier to be read.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYxBfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxBvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYxB_oAEdu-e7JlHBQtRA" name="CreateLinkObjectAction">
+ <ownedComment xmi:id="_UbYxCPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxB_oAEdu-e7JlHBQtRA">
+ <body>A create link object action creates a link object.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbYxCfoAEdu-e7JlHBQtRA" name="association_class" constrainedElement="_UbYxB_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxCvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxCfoAEdu-e7JlHBQtRA">
+ <body>The association must be an association class.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxC_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.association().oclIsKindOf(Class)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxDPoAEdu-e7JlHBQtRA" name="type_of_result" constrainedElement="_UbYxB_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxDfoAEdu-e7JlHBQtRA" annotatedElement="_UbYxDPoAEdu-e7JlHBQtRA">
+ <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="_UbYxDvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.type = self.association()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxD_oAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_UbYxB_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxEPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxD_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the output pin is 1..1.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxEfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.result.multiplicity.is(1,1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYxEvoAEdu-e7JlHBQtRA" general="_UZvyefoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYxE_oAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6s_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxFPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxE_oAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYxFfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxFvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYxF_oAEdu-e7JlHBQtRA" name="AcceptEventAction">
+ <ownedComment xmi:id="_UbYxGPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxF_oAEdu-e7JlHBQtRA">
+ <body>A accept event action is an action that waits for the occurrence of an event meeting specified conditions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbYxGfoAEdu-e7JlHBQtRA" name="no_input_pins" constrainedElement="_UbYxF_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxGvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxGfoAEdu-e7JlHBQtRA">
+ <body>AcceptEventActions may have no input pins.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxG_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxHPoAEdu-e7JlHBQtRA" name="no_output_pins" constrainedElement="_UbYxF_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxHfoAEdu-e7JlHBQtRA" annotatedElement="_UbYxHPoAEdu-e7JlHBQtRA">
+ <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="_UbYxHvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxH_oAEdu-e7JlHBQtRA" name="trigger_events" constrainedElement="_UbYxF_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxIPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxH_oAEdu-e7JlHBQtRA">
+ <body>If the trigger events are all TimeEvents, there is exactly one output pin.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxIfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxIvoAEdu-e7JlHBQtRA" name="unmarshall_signal_events" constrainedElement="_UbYxF_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxI_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxIvoAEdu-e7JlHBQtRA">
+ <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="_UbYxJPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYxJfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYxJvoAEdu-e7JlHBQtRA" name="isUnmarshall" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbYxJ_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxJvoAEdu-e7JlHBQtRA">
+ <body>Indicates whether there is a single output pin for the event, or multiple output pins for attributes of the event.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbYxKPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYxKfoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6u_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxKvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxKfoAEdu-e7JlHBQtRA">
+ <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="_UbYxK_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxLPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYxLfoAEdu-e7JlHBQtRA" name="trigger" type="_UZAK2PoAEdu-e7JlHBQtRA" aggregation="composite" association="_Ubh62_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxLvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxLfoAEdu-e7JlHBQtRA">
+ <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="_UbYxL_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxMPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYxMfoAEdu-e7JlHBQtRA" name="AcceptCallAction">
+ <ownedComment xmi:id="_UbYxMvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxMfoAEdu-e7JlHBQtRA">
+ <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="_UbYxM_oAEdu-e7JlHBQtRA" name="result_pins" constrainedElement="_UbYxMfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxNPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxM_oAEdu-e7JlHBQtRA">
+ <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="_UbYxNfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxNvoAEdu-e7JlHBQtRA" name="trigger_call_event" constrainedElement="_UbYxMfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxN_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxNvoAEdu-e7JlHBQtRA">
+ <body>The trigger event must be a CallEvent.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxOPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>trigger.event.oclIsKindOf(CallEvent)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxOfoAEdu-e7JlHBQtRA" name="unmarshall" constrainedElement="_UbYxMfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxOvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxOfoAEdu-e7JlHBQtRA">
+ <body>isUnmrashall must be true for an AcceptCallAction.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxO_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isUnmarshall = true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYxPPoAEdu-e7JlHBQtRA" general="_UbYxF_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYxPfoAEdu-e7JlHBQtRA" name="returnInformation" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6v_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxPvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxPfoAEdu-e7JlHBQtRA">
+ <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="_UbYxP_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxQPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbYxQfoAEdu-e7JlHBQtRA" name="ReplyAction">
+ <ownedComment xmi:id="_UbYxQvoAEdu-e7JlHBQtRA" annotatedElement="_UbYxQfoAEdu-e7JlHBQtRA">
+ <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="_UbYxQ_oAEdu-e7JlHBQtRA" name="pins_match_parameter" constrainedElement="_UbYxQfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxRPoAEdu-e7JlHBQtRA" annotatedElement="_UbYxQ_oAEdu-e7JlHBQtRA">
+ <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="_UbYxRfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbYxRvoAEdu-e7JlHBQtRA" name="event_on_reply_to_call_trigger" constrainedElement="_UbYxQfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxR_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxRvoAEdu-e7JlHBQtRA">
+ <body>The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbYxSPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>replyToCallEvent.oclIsKindOf(CallEvent)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbYxSfoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbYxSvoAEdu-e7JlHBQtRA" name="replyToCall" type="_UZAK2PoAEdu-e7JlHBQtRA" association="_Ubh6w_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxS_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxSvoAEdu-e7JlHBQtRA">
+ <body>The trigger specifying the operation whose call is being replied to.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYxTPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxTfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYxTvoAEdu-e7JlHBQtRA" name="returnInformation" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh60_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxT_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxTvoAEdu-e7JlHBQtRA">
+ <body>A pin containing the return information value produced by an earlier AcceptCallAction.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbYxUPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxUfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbYxUvoAEdu-e7JlHBQtRA" name="replyValue" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh61_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbYxU_oAEdu-e7JlHBQtRA" annotatedElement="_UbYxUvoAEdu-e7JlHBQtRA">
+ <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="_UbYxVPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbYxVfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Ubh6MPoAEdu-e7JlHBQtRA" name="UnmarshallAction">
+ <ownedComment xmi:id="_Ubh6MfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <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="_Ubh6MvoAEdu-e7JlHBQtRA" name="same_type" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6M_oAEdu-e7JlHBQtRA" annotatedElement="_Ubh6MvoAEdu-e7JlHBQtRA">
+ <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="_Ubh6NPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6NfoAEdu-e7JlHBQtRA" name="multiplicity_of_object" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6NvoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6NfoAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the object input pin is 1..1</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubh6N_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6OPoAEdu-e7JlHBQtRA" name="number_of_result" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6OfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6OPoAEdu-e7JlHBQtRA">
+ <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="_Ubh6OvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6O_oAEdu-e7JlHBQtRA" name="type_and_ordering" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6PPoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6O_oAEdu-e7JlHBQtRA">
+ <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="_Ubh6PfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6PvoAEdu-e7JlHBQtRA" name="multiplicity_of_result" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6P_oAEdu-e7JlHBQtRA" annotatedElement="_Ubh6PvoAEdu-e7JlHBQtRA">
+ <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="_Ubh6QPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6QfoAEdu-e7JlHBQtRA" name="structural_feature" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6QvoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6QfoAEdu-e7JlHBQtRA">
+ <body>The unmarshall classifier must have at least one structural feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubh6Q_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6RPoAEdu-e7JlHBQtRA" name="unmarshallType_is_classifier" constrainedElement="_Ubh6MPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6RfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6RPoAEdu-e7JlHBQtRA">
+ <body>unmarshallType must be a Classifier with ordered attributes</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubh6RvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ubh6R_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_Ubh6SPoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh6x_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6SfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6SPoAEdu-e7JlHBQtRA">
+ <body>The values of the structural features of the input object.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6SvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6S_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubh6TPoAEdu-e7JlHBQtRA" name="unmarshallType" type="_6UV2QGwJEdq7X4sGURiZYA" association="_Ubh6y_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6TfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6TPoAEdu-e7JlHBQtRA">
+ <body>The type of the object to be unmarshalled.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6TvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6T_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubh6UPoAEdu-e7JlHBQtRA" name="object" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh6z_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6UfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6UPoAEdu-e7JlHBQtRA">
+ <body>The object to be unmarshalled.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6UvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6U_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Ubh6VPoAEdu-e7JlHBQtRA" name="ReduceAction">
+ <ownedComment xmi:id="_Ubh6VfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6VPoAEdu-e7JlHBQtRA">
+ <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="_Ubh6VvoAEdu-e7JlHBQtRA" name="input_type_is_collection" constrainedElement="_Ubh6VPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6V_oAEdu-e7JlHBQtRA" annotatedElement="_Ubh6VvoAEdu-e7JlHBQtRA">
+ <body>The type of the input must be a collection.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubh6WPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6WfoAEdu-e7JlHBQtRA" name="output_types_are_compatible" constrainedElement="_Ubh6VPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6WvoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6WfoAEdu-e7JlHBQtRA">
+ <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="_Ubh6W_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubh6XPoAEdu-e7JlHBQtRA" name="reducer_inputs_output" constrainedElement="_Ubh6VPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6XfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6XPoAEdu-e7JlHBQtRA">
+ <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="_Ubh6XvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ubh6X_oAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_Ubh6YPoAEdu-e7JlHBQtRA" name="reducer" type="_TUPtYGveEdq4DLWZOhbdEA" association="_Ubh65_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6YfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6YPoAEdu-e7JlHBQtRA">
+ <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="_Ubh6YvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6Y_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubh6ZPoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ubh63_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6ZfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6ZPoAEdu-e7JlHBQtRA">
+ <body>Gives the output pin on which the result is put.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6ZvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6Z_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubh6aPoAEdu-e7JlHBQtRA" name="collection" type="_UXz4NPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ubh64_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubh6afoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6aPoAEdu-e7JlHBQtRA">
+ <body>The collection to be reduced.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6avoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6a_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubh6bPoAEdu-e7JlHBQtRA" name="isOrdered" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ubh6bfoAEdu-e7JlHBQtRA" annotatedElement="_Ubh6bPoAEdu-e7JlHBQtRA">
+ <body>Tells whether the order of the input collection should determine the order in which the behavior is applied to its elements.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ubh6bvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6b_oAEdu-e7JlHBQtRA" name="A_result_readExtentAction" memberEnd="_UbYwUPoAEdu-e7JlHBQtRA _Ubh6cPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6cPoAEdu-e7JlHBQtRA" type="_UbYwR_oAEdu-e7JlHBQtRA" association="_Ubh6b_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6cfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6cvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6c_oAEdu-e7JlHBQtRA" name="A_classifier_readExtentAction" memberEnd="_UbYwVPoAEdu-e7JlHBQtRA _Ubh6dPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6dPoAEdu-e7JlHBQtRA" type="_UbYwR_oAEdu-e7JlHBQtRA" association="_Ubh6c_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6dfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6dvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6d_oAEdu-e7JlHBQtRA" name="A_oldClassifier_reclassifyObjectAction" memberEnd="_UbYwZ_oAEdu-e7JlHBQtRA _Ubh6ePoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6ePoAEdu-e7JlHBQtRA" type="_UbYwWPoAEdu-e7JlHBQtRA" association="_Ubh6d_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6efoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6evoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6e_oAEdu-e7JlHBQtRA" name="A_newClassifier_reclassifyObjectAction" memberEnd="_UbYwa_oAEdu-e7JlHBQtRA _Ubh6fPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6fPoAEdu-e7JlHBQtRA" type="_UbYwWPoAEdu-e7JlHBQtRA" association="_Ubh6e_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6ffoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6fvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6f_oAEdu-e7JlHBQtRA" name="A_classifier_readIsClassifiedObjectAction" memberEnd="_UbYwhfoAEdu-e7JlHBQtRA _Ubh6gPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6gPoAEdu-e7JlHBQtRA" type="_UbYwc_oAEdu-e7JlHBQtRA" association="_Ubh6f_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6gfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6gvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6g_oAEdu-e7JlHBQtRA" name="A_result_readIsClassifiedObjectAction" memberEnd="_UbYwifoAEdu-e7JlHBQtRA _Ubh6hPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6hPoAEdu-e7JlHBQtRA" type="_UbYwc_oAEdu-e7JlHBQtRA" association="_Ubh6g_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6hfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6hvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6h_oAEdu-e7JlHBQtRA" name="A_object_readIsClassifiedObjectAction" memberEnd="_UbYwjfoAEdu-e7JlHBQtRA _Ubh6iPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6iPoAEdu-e7JlHBQtRA" type="_UbYwc_oAEdu-e7JlHBQtRA" association="_Ubh6h_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6ifoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6ivoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6i_oAEdu-e7JlHBQtRA" name="A_object_startClassifierBehaviorAction" memberEnd="_UbYwmvoAEdu-e7JlHBQtRA _Ubh6jPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6jPoAEdu-e7JlHBQtRA" type="_UbYwkfoAEdu-e7JlHBQtRA" association="_Ubh6i_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6jfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6jvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6j_oAEdu-e7JlHBQtRA" name="A_qualifier_linkEndData" memberEnd="_UbYwuPoAEdu-e7JlHBQtRA _Ubh6kPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6kPoAEdu-e7JlHBQtRA" type="_UZvyP_oAEdu-e7JlHBQtRA" association="_Ubh6j_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6kfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6kvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6k_oAEdu-e7JlHBQtRA" name="A_qualifier_qualifierValue" memberEnd="_UbYwqvoAEdu-e7JlHBQtRA _Ubh6lPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6lPoAEdu-e7JlHBQtRA" type="_UbYwnvoAEdu-e7JlHBQtRA" association="_Ubh6k_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6lfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6lvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6l_oAEdu-e7JlHBQtRA" name="A_value_qualifierValue" memberEnd="_UbYwrvoAEdu-e7JlHBQtRA _Ubh6mPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6mPoAEdu-e7JlHBQtRA" type="_UbYwnvoAEdu-e7JlHBQtRA" association="_Ubh6l_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6mfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6mvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6m_oAEdu-e7JlHBQtRA" name="A_object_readLinkObjectEndAction" memberEnd="_UbYw1PoAEdu-e7JlHBQtRA _Ubh6nPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6nPoAEdu-e7JlHBQtRA" type="_UbYwvPoAEdu-e7JlHBQtRA" association="_Ubh6m_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6nfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6nvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6n_oAEdu-e7JlHBQtRA" name="A_end_readLinkObjectEndAction" memberEnd="_UbYw2PoAEdu-e7JlHBQtRA _Ubh6oPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6oPoAEdu-e7JlHBQtRA" type="_UbYwvPoAEdu-e7JlHBQtRA" association="_Ubh6n_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6ofoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6ovoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6o_oAEdu-e7JlHBQtRA" name="A_result_readLinkObjectEndAction" memberEnd="_UbYw3PoAEdu-e7JlHBQtRA _Ubh6pPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6pPoAEdu-e7JlHBQtRA" type="_UbYwvPoAEdu-e7JlHBQtRA" association="_Ubh6o_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6pfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6pvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6p_oAEdu-e7JlHBQtRA" name="A_object_readLinkObjectEndQualifierAction" memberEnd="_UbYw-_oAEdu-e7JlHBQtRA _Ubh6qPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6qPoAEdu-e7JlHBQtRA" type="_UbYw4PoAEdu-e7JlHBQtRA" association="_Ubh6p_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6qfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6qvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6q_oAEdu-e7JlHBQtRA" name="A_result_readLinkObjectEndQualifierAction" memberEnd="_UbYw__oAEdu-e7JlHBQtRA _Ubh6rPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6rPoAEdu-e7JlHBQtRA" type="_UbYw4PoAEdu-e7JlHBQtRA" association="_Ubh6q_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6rfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6rvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6r_oAEdu-e7JlHBQtRA" name="A_qualifier_readLinkObjectEndQualifierAction" memberEnd="_UbYxA_oAEdu-e7JlHBQtRA _Ubh6sPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6sPoAEdu-e7JlHBQtRA" type="_UbYw4PoAEdu-e7JlHBQtRA" association="_Ubh6r_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6sfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6svoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6s_oAEdu-e7JlHBQtRA" name="A_result_createLinkObjectAction" memberEnd="_UbYxE_oAEdu-e7JlHBQtRA _Ubh6tPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6tPoAEdu-e7JlHBQtRA" type="_UbYxB_oAEdu-e7JlHBQtRA" association="_Ubh6s_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6tfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6tvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6t_oAEdu-e7JlHBQtRA" name="A_reclassifyObjectAction_object" memberEnd="_Ubh6uPoAEdu-e7JlHBQtRA _UbYwb_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6uPoAEdu-e7JlHBQtRA" type="_UbYwWPoAEdu-e7JlHBQtRA" association="_Ubh6t_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6ufoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6uvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6u_oAEdu-e7JlHBQtRA" name="A_result_acceptEventAction" memberEnd="_UbYxKfoAEdu-e7JlHBQtRA _Ubh6vPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6vPoAEdu-e7JlHBQtRA" type="_UbYxF_oAEdu-e7JlHBQtRA" association="_Ubh6u_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6vfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6vvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6v_oAEdu-e7JlHBQtRA" name="A_returnInformation_acceptCallAction" memberEnd="_UbYxPfoAEdu-e7JlHBQtRA _Ubh6wPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6wPoAEdu-e7JlHBQtRA" type="_UbYxMfoAEdu-e7JlHBQtRA" association="_Ubh6v_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6wfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6wvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6w_oAEdu-e7JlHBQtRA" name="A_replyToCall_replyAction" memberEnd="_UbYxSvoAEdu-e7JlHBQtRA _Ubh6xPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6xPoAEdu-e7JlHBQtRA" type="_UbYxQfoAEdu-e7JlHBQtRA" association="_Ubh6w_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6xfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6xvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6x_oAEdu-e7JlHBQtRA" name="A_result_unmarshallAction" memberEnd="_Ubh6SPoAEdu-e7JlHBQtRA _Ubh6yPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6yPoAEdu-e7JlHBQtRA" type="_Ubh6MPoAEdu-e7JlHBQtRA" association="_Ubh6x_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6yfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6yvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6y_oAEdu-e7JlHBQtRA" name="A_unmarshallType_unmarshallAction" memberEnd="_Ubh6TPoAEdu-e7JlHBQtRA _Ubh6zPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh6zPoAEdu-e7JlHBQtRA" type="_Ubh6MPoAEdu-e7JlHBQtRA" association="_Ubh6y_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh6zfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh6zvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh6z_oAEdu-e7JlHBQtRA" name="A_object_unmarshallAction" memberEnd="_Ubh6UPoAEdu-e7JlHBQtRA _Ubh60PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh60PoAEdu-e7JlHBQtRA" type="_Ubh6MPoAEdu-e7JlHBQtRA" association="_Ubh6z_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh60foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh60voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh60_oAEdu-e7JlHBQtRA" name="A_returnInformation_replyAction" memberEnd="_UbYxTvoAEdu-e7JlHBQtRA _Ubh61PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh61PoAEdu-e7JlHBQtRA" type="_UbYxQfoAEdu-e7JlHBQtRA" association="_Ubh60_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh61foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh61voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh61_oAEdu-e7JlHBQtRA" name="A_replyValue_replyAction" memberEnd="_UbYxUvoAEdu-e7JlHBQtRA _Ubh62PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh62PoAEdu-e7JlHBQtRA" type="_UbYxQfoAEdu-e7JlHBQtRA" association="_Ubh61_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh62foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh62voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh62_oAEdu-e7JlHBQtRA" name="A_trigger_acceptEventAction" memberEnd="_UbYxLfoAEdu-e7JlHBQtRA _Ubh63PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh63PoAEdu-e7JlHBQtRA" type="_UbYxF_oAEdu-e7JlHBQtRA" association="_Ubh62_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh63foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh63voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh63_oAEdu-e7JlHBQtRA" name="A_result_reduceAction" memberEnd="_Ubh6ZPoAEdu-e7JlHBQtRA _Ubh64PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh64PoAEdu-e7JlHBQtRA" type="_Ubh6VPoAEdu-e7JlHBQtRA" association="_Ubh63_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh64foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh64voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh64_oAEdu-e7JlHBQtRA" name="A_collection_reduceAction" memberEnd="_Ubh6aPoAEdu-e7JlHBQtRA _Ubh65PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh65PoAEdu-e7JlHBQtRA" type="_Ubh6VPoAEdu-e7JlHBQtRA" association="_Ubh64_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh65foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh65voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ubh65_oAEdu-e7JlHBQtRA" name="A_reducer_reduceAction" memberEnd="_Ubh6YPoAEdu-e7JlHBQtRA _Ubh66PoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ubh66PoAEdu-e7JlHBQtRA" type="_Ubh6VPoAEdu-e7JlHBQtRA" association="_Ubh65_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubh66foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubh66voAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZJVD_oAEdu-e7JlHBQtRA" name="JoinNode">
+ <ownedComment xmi:id="_UZJVEPoAEdu-e7JlHBQtRA" annotatedElement="_UZJVD_oAEdu-e7JlHBQtRA">
+ <body>A join node is a control node that synchronizes multiple flows.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UbrrMPoAEdu-e7JlHBQtRA" annotatedElement="_UZJVD_oAEdu-e7JlHBQtRA">
+ <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="_UbrrMfoAEdu-e7JlHBQtRA" name="one_outgoing_edge" constrainedElement="_UZJVD_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrMvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrMfoAEdu-e7JlHBQtRA">
+ <body>A join node has one outgoing edge.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbrrM_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.outgoing->size() = 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrNPoAEdu-e7JlHBQtRA" name="incoming_object_flow" constrainedElement="_UZJVD_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrNfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrNPoAEdu-e7JlHBQtRA">
+ <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="_UbrrNvoAEdu-e7JlHBQtRA">
+ <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="_UZJVEfoAEdu-e7JlHBQtRA" general="_UYje-PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbrrN_oAEdu-e7JlHBQtRA" name="isCombineDuplicate" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbrrOPoAEdu-e7JlHBQtRA" annotatedElement="_UbrrN_oAEdu-e7JlHBQtRA">
+ <body>Tells whether tokens having objects with the same identity are combined into one by the join.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbrrOfoAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrOvoAEdu-e7JlHBQtRA" name="joinSpec" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_Ub1cc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrO_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrOvoAEdu-e7JlHBQtRA">
+ <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="_UbrrPPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrPfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbrrPvoAEdu-e7JlHBQtRA" name="DataStoreNode">
+ <ownedComment xmi:id="_UbrrP_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrPvoAEdu-e7JlHBQtRA">
+ <body>A data store node is a central buffer node for non-transient information.</body>
+ </ownedComment>
+ <generalization xmi:id="_UbrrQPoAEdu-e7JlHBQtRA" general="_UZJUsvoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYjfHvoAEdu-e7JlHBQtRA" name="ObjectFlow">
+ <ownedComment xmi:id="_UYjfH_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <body>An object flow is an activity edge that can have objects or data passing along it.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UbrrQfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <body>Object flows have support for multicast/receive, token selection from object nodes, and transformation of tokens.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYjfIPoAEdu-e7JlHBQtRA" name="no_actions" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfIfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfIPoAEdu-e7JlHBQtRA">
+ <body>Object flows may not have actions at either end.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfIvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfI_oAEdu-e7JlHBQtRA" name="compatible_types" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfJPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfI_oAEdu-e7JlHBQtRA">
+ <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="_UYjfJfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfJvoAEdu-e7JlHBQtRA" name="same_upper_bounds" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfJ_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfJvoAEdu-e7JlHBQtRA">
+ <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="_UYjfKPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrQvoAEdu-e7JlHBQtRA" name="target" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrQ_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrQvoAEdu-e7JlHBQtRA">
+ <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="_UbrrRPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrRfoAEdu-e7JlHBQtRA" name="transformation_behaviour" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrRvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrRfoAEdu-e7JlHBQtRA">
+ <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="_UbrrR_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrSPoAEdu-e7JlHBQtRA" name="selection_behaviour" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrSfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrSPoAEdu-e7JlHBQtRA">
+ <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="_UbrrSvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrS_oAEdu-e7JlHBQtRA" name="input_and_output_parameter" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrTPoAEdu-e7JlHBQtRA" annotatedElement="_UbrrS_oAEdu-e7JlHBQtRA">
+ <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="_UbrrTfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrTvoAEdu-e7JlHBQtRA" name="is_multicast_or_is_multireceive" constrainedElement="_UYjfHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrT_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrTvoAEdu-e7JlHBQtRA">
+ <body>isMulticast and isMultireceive cannot both be true.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbrrUPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYjfKfoAEdu-e7JlHBQtRA" general="_UYje-_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbrrUfoAEdu-e7JlHBQtRA" name="isMulticast" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbrrUvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrUfoAEdu-e7JlHBQtRA">
+ <body>Tells whether the objects in the flow are passed by multicasting.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbrrU_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrVPoAEdu-e7JlHBQtRA" name="isMultireceive" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbrrVfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrVPoAEdu-e7JlHBQtRA">
+ <body>Tells whether the objects in the flow are gathered from respondents to multicasting.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbrrVvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrV_oAEdu-e7JlHBQtRA" name="transformation" type="_TUPtYGveEdq4DLWZOhbdEA" association="_Ub1cUfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrWPoAEdu-e7JlHBQtRA" annotatedElement="_UbrrV_oAEdu-e7JlHBQtRA">
+ <body>Changes or replaces data tokens flowing along edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrWfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrWvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrW_oAEdu-e7JlHBQtRA" name="selection" type="_TUPtYGveEdq4DLWZOhbdEA" association="_Ub1cX_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrXPoAEdu-e7JlHBQtRA" annotatedElement="_UbrrW_oAEdu-e7JlHBQtRA">
+ <body>Selects tokens from a source object node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrXfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrXvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYje7voAEdu-e7JlHBQtRA" name="ObjectNode" isAbstract="true">
+ <ownedComment xmi:id="_UYje7_oAEdu-e7JlHBQtRA" annotatedElement="_UYje7voAEdu-e7JlHBQtRA">
+ <body>An object node is an abstract activity node that is part of defining object flow in an activity.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UbrraPoAEdu-e7JlHBQtRA" annotatedElement="_UYje7voAEdu-e7JlHBQtRA">
+ <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="_UYje8PoAEdu-e7JlHBQtRA" name="object_flow_edges" constrainedElement="_UYje7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYje8foAEdu-e7JlHBQtRA" annotatedElement="_UYje8PoAEdu-e7JlHBQtRA">
+ <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="_UYje8voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYje8_oAEdu-e7JlHBQtRA" name="not_unique" constrainedElement="_UYje7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYje9PoAEdu-e7JlHBQtRA" annotatedElement="_UYje8_oAEdu-e7JlHBQtRA">
+ <body>Object nodes are not unique typed elements</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYje9foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isUnique = false</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrafoAEdu-e7JlHBQtRA" name="selection_behavior" constrainedElement="_UYje7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrravoAEdu-e7JlHBQtRA" annotatedElement="_UbrrafoAEdu-e7JlHBQtRA">
+ <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="_Ubrra_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrbPoAEdu-e7JlHBQtRA" name="input_output_parameter" constrainedElement="_UYje7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrbfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrbPoAEdu-e7JlHBQtRA">
+ <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="_UbrrbvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYje9voAEdu-e7JlHBQtRA" general="_UX9Cb_oAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UYje9_oAEdu-e7JlHBQtRA" general="_UT7diPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_Ubrrb_oAEdu-e7JlHBQtRA" name="ordering" type="_Ub1cMPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrcPoAEdu-e7JlHBQtRA" annotatedElement="_Ubrrb_oAEdu-e7JlHBQtRA">
+ <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="_UbrrcfoAEdu-e7JlHBQtRA" instance="_Ub1cOPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrcvoAEdu-e7JlHBQtRA" name="isControlType" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ubrrc_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrcvoAEdu-e7JlHBQtRA">
+ <body>Tells whether the type of the object node is to be treated as control.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbrrdPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrdfoAEdu-e7JlHBQtRA" name="upperBound" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_Ub1cSPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrdvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrdfoAEdu-e7JlHBQtRA">
+ <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="_Ubrrd_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrePoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrefoAEdu-e7JlHBQtRA" name="inState" type="_UapJZvoAEdu-e7JlHBQtRA" association="_Ub1cTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrevoAEdu-e7JlHBQtRA" annotatedElement="_UbrrefoAEdu-e7JlHBQtRA">
+ <body>The required states of the object available at this point in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubrre_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrfPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrffoAEdu-e7JlHBQtRA" name="selection" type="_TUPtYGveEdq4DLWZOhbdEA" association="_Ub1cY_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrfvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrffoAEdu-e7JlHBQtRA">
+ <body>Selects tokens for outgoing edges.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubrrf_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrgPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbrrgfoAEdu-e7JlHBQtRA" name="ParameterSet">
+ <ownedComment xmi:id="_UbrrgvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrgfoAEdu-e7JlHBQtRA">
+ <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="_Ubrrg_oAEdu-e7JlHBQtRA" name="same_parameterized_entity" constrainedElement="_UbrrgfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrhPoAEdu-e7JlHBQtRA" annotatedElement="_Ubrrg_oAEdu-e7JlHBQtRA">
+ <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="_UbrrhfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrhvoAEdu-e7JlHBQtRA" name="input" constrainedElement="_UbrrgfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrrh_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrhvoAEdu-e7JlHBQtRA">
+ <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="_UbrriPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrifoAEdu-e7JlHBQtRA" name="two_parameter_sets" constrainedElement="_UbrrgfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrivoAEdu-e7JlHBQtRA" annotatedElement="_UbrrifoAEdu-e7JlHBQtRA">
+ <body>Two parameter sets cannot have exactly the same set of parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubrri_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbrrjPoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UbrrjfoAEdu-e7JlHBQtRA" name="parameter" type="_KyaPMGveEdq4DLWZOhbdEA" association="_Ub1cUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrjvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrjfoAEdu-e7JlHBQtRA">
+ <body>Parameters in the parameter set.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubrrj_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrkPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrkfoAEdu-e7JlHBQtRA" name="condition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_Ub1cZ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrkvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrkfoAEdu-e7JlHBQtRA">
+ <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="_Ubrrk_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrlPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9CTPoAEdu-e7JlHBQtRA" name="Activity">
+ <ownedComment xmi:id="_UX9CTfoAEdu-e7JlHBQtRA" annotatedElement="_UX9CTPoAEdu-e7JlHBQtRA">
+ <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="_UX9CTvoAEdu-e7JlHBQtRA" name="no_supergroups" constrainedElement="_UX9CTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CT_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CTvoAEdu-e7JlHBQtRA">
+ <body>The groups of an activity have no supergroups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UX9CUPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfavoAEdu-e7JlHBQtRA" name="activity_parameter_node" constrainedElement="_UX9CTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfa_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfavoAEdu-e7JlHBQtRA">
+ <body>The nodes of the activity must include one ActivityParameterNode for each parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfbPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfbfoAEdu-e7JlHBQtRA" name="autonomous" constrainedElement="_UX9CTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfbvoAEdu-e7JlHBQtRA" annotatedElement="_UYjfbfoAEdu-e7JlHBQtRA">
+ <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="_UYjfb_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9CUfoAEdu-e7JlHBQtRA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UYGy_foAEdu-e7JlHBQtRA" name="structuredNode" type="_UX9Cl_oAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" aggregation="composite" subsettedProperty="_UX9CUvoAEdu-e7JlHBQtRA _UX9CVvoAEdu-e7JlHBQtRA" association="_UYGzTfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy_voAEdu-e7JlHBQtRA" annotatedElement="_UYGy_foAEdu-e7JlHBQtRA">
+ <body>Top-level structured nodes in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGy__oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzAPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGzAfoAEdu-e7JlHBQtRA" name="variable" type="_UX9CgvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UYGzTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGzAvoAEdu-e7JlHBQtRA" annotatedElement="_UYGzAfoAEdu-e7JlHBQtRA">
+ <body>Top-level variables in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzA_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzBPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CUvoAEdu-e7JlHBQtRA" name="node" type="_UX9Cb_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UX9CevoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CU_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CUvoAEdu-e7JlHBQtRA">
+ <body>Nodes coordinated by the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzB_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzCPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfcPoAEdu-e7JlHBQtRA" name="isReadOnly" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UYjfcfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfcPoAEdu-e7JlHBQtRA">
+ <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>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UYjfcvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfc_oAEdu-e7JlHBQtRA" name="edge" type="_UYje-_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UYjfevoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfdPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfc_oAEdu-e7JlHBQtRA">
+ <body>Edges expressing flow between nodes of the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfdfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfdvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTFkvoAEdu-e7JlHBQtRA" name="partition" type="_UZJUtfoAEdu-e7JlHBQtRA" subsettedProperty="_UX9CVvoAEdu-e7JlHBQtRA" association="_UZTFp_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTFk_oAEdu-e7JlHBQtRA" annotatedElement="_UZTFkvoAEdu-e7JlHBQtRA">
+ <body>Top-level partitions in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFlPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFlfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CVvoAEdu-e7JlHBQtRA" name="group" type="_UX9CWvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UX9CfPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CV_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CVvoAEdu-e7JlHBQtRA">
+ <body>Top-level groups in the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFlvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFl_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrlfoAEdu-e7JlHBQtRA" name="isSingleExecution" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbrrlvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrlfoAEdu-e7JlHBQtRA">
+ <body>If true, all invocations of the activity are handled by the same execution.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ubrrl_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KyaPMGveEdq4DLWZOhbdEA" name="Parameter">
+ <ownedComment xmi:id="_UUO_x_oAEdu-e7JlHBQtRA" annotatedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <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>
+ <ownedComment xmi:id="_UYje1foAEdu-e7JlHBQtRA" annotatedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <body>Parameters are allowed to be treated as connectable elements.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UbrrmPoAEdu-e7JlHBQtRA" annotatedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <body>Parameters have support for streaming, exceptions, and parameter sets.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYje1voAEdu-e7JlHBQtRA" name="connector_end" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYje1_oAEdu-e7JlHBQtRA" annotatedElement="_UYje1voAEdu-e7JlHBQtRA">
+ <body>A parameter may only be associated with a connector end within the context of a collaboration.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYje2PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.end.notEmpty() implies self.collaboration.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrmfoAEdu-e7JlHBQtRA" name="stream_and_exception" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UbrrmvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrmfoAEdu-e7JlHBQtRA">
+ <body>A parameter cannot be a stream and exception at the same time.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubrrm_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrnPoAEdu-e7JlHBQtRA" name="not_exception" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UbrrnfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrnPoAEdu-e7JlHBQtRA">
+ <body>An input parameter cannot be an exception.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbrrnvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ubrrn_oAEdu-e7JlHBQtRA" name="reentrant_behaviors" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UbrroPoAEdu-e7JlHBQtRA" annotatedElement="_Ubrrn_oAEdu-e7JlHBQtRA">
+ <body>Reentrant behaviors cannot have stream parameters.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbrrofoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbrrovoAEdu-e7JlHBQtRA" name="in_and_out" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_Ubrro_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrovoAEdu-e7JlHBQtRA">
+ <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="_UbrrpPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUO_yfoAEdu-e7JlHBQtRA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ <generalization xmi:id="_UYje2foAEdu-e7JlHBQtRA" general="_UYZt_voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UUO_zvoAEdu-e7JlHBQtRA" name="direction" type="_UUYKA_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_z_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_zvoAEdu-e7JlHBQtRA">
+ <body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UWnlAPoAEdu-e7JlHBQtRA" instance="_UUYKBfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_yvoAEdu-e7JlHBQtRA" name="default" type="_aAyVgGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUO_y_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_yvoAEdu-e7JlHBQtRA">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlAfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlAvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWnlA_oAEdu-e7JlHBQtRA" name="defaultValue" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXXMHfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWnlBPoAEdu-e7JlHBQtRA" annotatedElement="_UWnlA_oAEdu-e7JlHBQtRA">
+ <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="_UWnlBfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlBvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_0foAEdu-e7JlHBQtRA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUh64_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_0voAEdu-e7JlHBQtRA" annotatedElement="_UUO_0foAEdu-e7JlHBQtRA">
+ <body>References the Operation owning this parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlB_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlCPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrpfoAEdu-e7JlHBQtRA" name="isException" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbrrpvoAEdu-e7JlHBQtRA" annotatedElement="_UbrrpfoAEdu-e7JlHBQtRA">
+ <body>Tells whether an output parameter may emit a value to the exclusion of the other outputs.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ubrrp_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrqPoAEdu-e7JlHBQtRA" name="isStream" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UbrrqfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrqPoAEdu-e7JlHBQtRA">
+ <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>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UbrrqvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubrrq_oAEdu-e7JlHBQtRA" name="effect" type="_Ub1cOvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrrPoAEdu-e7JlHBQtRA" annotatedElement="_Ubrrq_oAEdu-e7JlHBQtRA">
+ <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="_UbrrrfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrrvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubrrr_oAEdu-e7JlHBQtRA" name="parameterSet" type="_UbrrgfoAEdu-e7JlHBQtRA" association="_Ub1cUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrsPoAEdu-e7JlHBQtRA" annotatedElement="_Ubrrr_oAEdu-e7JlHBQtRA">
+ <body>The parameter sets containing the parameter. See ParameterSet.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrsfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrsvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_7UJKkFYJEdqrn7iZ0eqieg" name="getDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_-PwAEFYJEdqrn7iZ0eqieg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4VLgQVYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4VLgQFYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QKbgcWXCEdqEJs8umHJc9g" name="isSetDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_TKzhMGXCEdqEJs8umHJc9g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5FAasFYjEdqB6vblk3tuMA" name="setDefault" visibility="protected">
+ <ownedParameter xmi:id="_7D0QwFYjEdqB6vblk3tuMA" name="newDefault" visibility="protected" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VQnXIGXCEdqEJs8umHJc9g" name="unsetDefault" visibility="protected"/>
+ <ownedOperation xmi:id="_kKuPgK6_EdqjppZik4kD8A" name="setBooleanDefaultValue">
+ <ownedComment xmi:id="_TCrd8OwfEdqYHf-imTcTdw" annotatedElement="_kKuPgK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified Boolean value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kKuPga6_EdqjppZik4kD8A" name="value" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_wjzYQPIEEdulR8T2OJRyFQ" annotatedElement="_kKuPga6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kKuPgq6_EdqjppZik4kD8A" name="setIntegerDefaultValue">
+ <ownedComment xmi:id="_UB3DAOwfEdqYHf-imTcTdw" annotatedElement="_kKuPgq6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified integer value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kKuPg66_EdqjppZik4kD8A" name="value" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_zyVJwPIEEdulR8T2OJRyFQ" annotatedElement="_kKuPg66_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kK3ZcK6_EdqjppZik4kD8A" name="setStringDefaultValue">
+ <ownedComment xmi:id="_Z2PccOwfEdqYHf-imTcTdw" annotatedElement="_kK3ZcK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified string value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kK3Zca6_EdqjppZik4kD8A" name="value" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_0mWAoPIEEdulR8T2OJRyFQ" annotatedElement="_kK3Zca6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kK3Zcq6_EdqjppZik4kD8A" name="setUnlimitedNaturalDefaultValue">
+ <ownedComment xmi:id="_asyC4OwfEdqYHf-imTcTdw" annotatedElement="_kK3Zcq6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified unlimited natural value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kK3Zc66_EdqjppZik4kD8A" name="value" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_1RG04PIEEdulR8T2OJRyFQ" annotatedElement="_kK3Zc66_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kK3ZdK6_EdqjppZik4kD8A" name="setNullDefaultValue">
+ <ownedComment xmi:id="_c7hyYOwfEdqYHf-imTcTdw" annotatedElement="_kK3ZdK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the null value.</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9B-PoAEdu-e7JlHBQtRA" name="Action" isAbstract="true">
+ <ownedComment xmi:id="_UX9B-foAEdu-e7JlHBQtRA" annotatedElement="_UX9B-PoAEdu-e7JlHBQtRA">
+ <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>
+ <ownedComment xmi:id="_UX9CbfoAEdu-e7JlHBQtRA" annotatedElement="_UX9B-PoAEdu-e7JlHBQtRA">
+ <body>An action represents a single step within an activity, that is, one that is not further decomposed within the activity.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ubrrs_oAEdu-e7JlHBQtRA" annotatedElement="_UX9B-PoAEdu-e7JlHBQtRA">
+ <body>An action has pre- and post-conditions.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYGzH_oAEdu-e7JlHBQtRA" general="_UYGzFfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UX9B-_oAEdu-e7JlHBQtRA" name="output" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UX9CMPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9B_PoAEdu-e7JlHBQtRA" annotatedElement="_UX9B-_oAEdu-e7JlHBQtRA">
+ <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="_UX9B_foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9B_voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9B__oAEdu-e7JlHBQtRA" name="input" type="_UXz4NPoAEdu-e7JlHBQtRA" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UX9CNPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CAPoAEdu-e7JlHBQtRA" annotatedElement="_UX9B__oAEdu-e7JlHBQtRA">
+ <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="_UX9CAfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CAvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CA_oAEdu-e7JlHBQtRA" name="context" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" association="_UX9CPPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CBPoAEdu-e7JlHBQtRA" annotatedElement="_UX9CA_oAEdu-e7JlHBQtRA">
+ <body>The classifier that owns the behavior of which this action is a part.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CBfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CBvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrtPoAEdu-e7JlHBQtRA" name="localPrecondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_Ub1cVfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrtfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrtPoAEdu-e7JlHBQtRA">
+ <body>Constraint that must be satisfied when execution is started.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrtvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubrrt_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrruPoAEdu-e7JlHBQtRA" name="localPostcondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_Ub1cWfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrufoAEdu-e7JlHBQtRA" annotatedElement="_UbrruPoAEdu-e7JlHBQtRA">
+ <body>Constraint that must be satisfied when executed is completed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrruvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubrru_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UbrrvPoAEdu-e7JlHBQtRA" name="InterruptibleActivityRegion">
+ <ownedComment xmi:id="_UbrrvfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrvPoAEdu-e7JlHBQtRA">
+ <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="_UbrrvvoAEdu-e7JlHBQtRA" name="interrupting_edges" constrainedElement="_UbrrvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrrv_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrvvoAEdu-e7JlHBQtRA">
+ <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="_UbrrwPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UbrrwfoAEdu-e7JlHBQtRA" general="_UX9CWvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UbrrwvoAEdu-e7JlHBQtRA" name="interruptingEdge" type="_UYje-_oAEdu-e7JlHBQtRA" association="_Ub1cXfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrrw_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrwvoAEdu-e7JlHBQtRA">
+ <body>The edges leaving the region that will abort other tokens flowing in the region.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrxPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrxfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrxvoAEdu-e7JlHBQtRA" name="node" type="_UX9Cb_oAEdu-e7JlHBQtRA" subsettedProperty="_UX9CXfoAEdu-e7JlHBQtRA" association="_Ub1cXvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrrx_oAEdu-e7JlHBQtRA" annotatedElement="_UbrrxvoAEdu-e7JlHBQtRA">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrryPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrryfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9Cb_oAEdu-e7JlHBQtRA" name="ActivityNode" isAbstract="true">
+ <ownedComment xmi:id="_UX9CcPoAEdu-e7JlHBQtRA" annotatedElement="_UX9Cb_oAEdu-e7JlHBQtRA">
+ <body>ActivityNode is an abstract class for points in the flow of an activity connected by edges.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYGzCfoAEdu-e7JlHBQtRA" name="owned_structured_node" constrainedElement="_UX9Cb_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGzCvoAEdu-e7JlHBQtRA" annotatedElement="_UYGzCfoAEdu-e7JlHBQtRA">
+ <body>Activity nodes may be owned by at most one structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYGzC_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfWfoAEdu-e7JlHBQtRA" name="owned" constrainedElement="_UX9Cb_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfWvoAEdu-e7JlHBQtRA" annotatedElement="_UYjfWfoAEdu-e7JlHBQtRA">
+ <body>Activity nodes can only be owned by activities or groups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfW_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYGzDPoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYGzDfoAEdu-e7JlHBQtRA" name="inStructuredNode" type="_UX9Cl_oAEdu-e7JlHBQtRA" subsettedProperty="_UX9CdvoAEdu-e7JlHBQtRA" association="_UYGzK_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGzDvoAEdu-e7JlHBQtRA" annotatedElement="_UYGzDfoAEdu-e7JlHBQtRA">
+ <body>Structured activity node containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzD_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzEPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CcvoAEdu-e7JlHBQtRA" name="activity" type="_UX9CTPoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UX9CevoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9Cc_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CcvoAEdu-e7JlHBQtRA">
+ <body>Activity containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGzE_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGzFPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfXPoAEdu-e7JlHBQtRA" name="outgoing" type="_UYje-_oAEdu-e7JlHBQtRA" association="_UYjfe_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfXfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfXPoAEdu-e7JlHBQtRA">
+ <body>Edges that have the node as source.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfXvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfX_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfYPoAEdu-e7JlHBQtRA" name="incoming" type="_UYje-_oAEdu-e7JlHBQtRA" association="_UYjffPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfYfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfYPoAEdu-e7JlHBQtRA">
+ <body>Edges that have the node as target.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfYvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfY_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfZPoAEdu-e7JlHBQtRA" name="redefinedNode" type="_UX9Cb_oAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UYjfgvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfZfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfZPoAEdu-e7JlHBQtRA">
+ <body>Inherited nodes replaced by this node in a specialization of the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfZvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfZ_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJU6foAEdu-e7JlHBQtRA" name="inPartition" type="_UZJUtfoAEdu-e7JlHBQtRA" subsettedProperty="_UX9CdvoAEdu-e7JlHBQtRA" association="_UZTFmfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU6voAEdu-e7JlHBQtRA" annotatedElement="_UZJU6foAEdu-e7JlHBQtRA">
+ <body>Partitions containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU6_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU7PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrryvoAEdu-e7JlHBQtRA" name="inInterruptibleRegion" type="_UbrrvPoAEdu-e7JlHBQtRA" subsettedProperty="_UX9CdvoAEdu-e7JlHBQtRA" association="_Ub1cXvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrry_oAEdu-e7JlHBQtRA" annotatedElement="_UbrryvoAEdu-e7JlHBQtRA">
+ <body>Interruptible regions containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrzPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrzfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CdvoAEdu-e7JlHBQtRA" name="inGroup" type="_UX9CWvoAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UX9Ce_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9Cd_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CdvoAEdu-e7JlHBQtRA">
+ <body>Groups containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrzvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubrrz_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rHT3YKOsEdqi_5gqUMOQtA" name="BehavioralFeature" isAbstract="true">
+ <ownedComment xmi:id="_UUO_1foAEdu-e7JlHBQtRA" annotatedElement="_rHT3YKOsEdqi_5gqUMOQtA">
+ <body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UXz30PoAEdu-e7JlHBQtRA" annotatedElement="_rHT3YKOsEdqi_5gqUMOQtA">
+ <body>A behavioral feature is implemented (realized) by a behavior. A behavioral feature specifies that a classifier will respond to a designated request by invoking its implementing method.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ubrr0PoAEdu-e7JlHBQtRA" annotatedElement="_rHT3YKOsEdqi_5gqUMOQtA">
+ <body>A behavioral feature owns zero or more parameter sets.</body>
+ </ownedComment>
+ <generalization xmi:id="_UUO_1voAEdu-e7JlHBQtRA" general="_UTyTcPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UUO_1_oAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UUO_2PoAEdu-e7JlHBQtRA" name="ownedParameter" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6ivoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_2foAEdu-e7JlHBQtRA" annotatedElement="_UUO_2PoAEdu-e7JlHBQtRA">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0LfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0LvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz30foAEdu-e7JlHBQtRA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UXz30voAEdu-e7JlHBQtRA" annotatedElement="_UXz30foAEdu-e7JlHBQtRA">
+ <body>If true, then the behavioral feature does not have an implementation, and one must be supplied by a more specific element. If false, the behavioral feature must have an implementation in the classifier or one must be inherited from a more general element.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UXz30_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXz31PoAEdu-e7JlHBQtRA" name="method" type="_TUPtYGveEdq4DLWZOhbdEA" association="_UXz39voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXz31foAEdu-e7JlHBQtRA" annotatedElement="_UXz31PoAEdu-e7JlHBQtRA">
+ <body>A behavioral description that implements the behavioral feature. There may be at most one behavior for a particular pairing of a classifier (as owner of the behavior) and a behavioral feature (as specification of the behavior).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXz31voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXz31_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZAKuPoAEdu-e7JlHBQtRA" name="concurrency" type="_UZALEfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAKufoAEdu-e7JlHBQtRA" annotatedElement="_UZAKuPoAEdu-e7JlHBQtRA">
+ <body>Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a class with isActive being false). Active instances control access to their own behavioral features.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UZAKuvoAEdu-e7JlHBQtRA" type="_UZALEfoAEdu-e7JlHBQtRA" instance="_UZALE_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_3PoAEdu-e7JlHBQtRA" name="raisedException" type="_ynRtoGvtEdqG6fBIPwe-mw" association="_UUh6jvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_3foAEdu-e7JlHBQtRA" annotatedElement="_UUO_3PoAEdu-e7JlHBQtRA">
+ <body>References the Types representing exceptions that may be raised during an invocation of this feature.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZAKu_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_3PoAEdu-e7JlHBQtRA">
+ <body>The signals that the behavioral feature raises as exceptions.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAKvPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAKvfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubrr0foAEdu-e7JlHBQtRA" name="ownedParameterSet" type="_UbrrgfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_Ub1ca_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrr0voAEdu-e7JlHBQtRA" annotatedElement="_Ubrr0foAEdu-e7JlHBQtRA">
+ <body>The ParameterSets owned by this BehavioralFeature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubrr0_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubrr1PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_3Y0aYKOuEdqi_5gqUMOQtA" name="createReturnResult">
+ <ownedComment xmi:id="_WdHFYPZPEdqYHf-imTcTdw" annotatedElement="_3Y0aYKOuEdqi_5gqUMOQtA">
+ <body>Creates a return result parameter with the specified name and type.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_8N3dwKOuEdqi_5gqUMOQtA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_ESyWcKOvEdqi_5gqUMOQtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_t9Pp4PH9EdulR8T2OJRyFQ" annotatedElement="_ESyWcKOvEdqi_5gqUMOQtA">
+ <body>The name for the new return result, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__VyJkaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__VyJkKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="__sC00KOuEdqi_5gqUMOQtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_xWgrwPH9EdulR8T2OJRyFQ" annotatedElement="__sC00KOuEdqi_5gqUMOQtA">
+ <body>The type for the new return result, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BJHvcaOyEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BJHvcKOyEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_4PoAEdu-e7JlHBQtRA" name="isDistinguishableFrom" isQuery="true" redefinedOperation="_UUYJ4PoAEdu-e7JlHBQtRA" bodyCondition="_UUO_4voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_4foAEdu-e7JlHBQtRA" annotatedElement="_UUO_4PoAEdu-e7JlHBQtRA">
+ <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="_UUO_4voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_4PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0MfoAEdu-e7JlHBQtRA">
+ <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="_UUO_5PoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUO_5foAEdu-e7JlHBQtRA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedParameter xmi:id="_UUO_5voAEdu-e7JlHBQtRA" name="ns" type="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TUPtYGveEdq4DLWZOhbdEA" name="Behavior" isAbstract="true">
+ <ownedComment xmi:id="_UXqG1voAEdu-e7JlHBQtRA" annotatedElement="_TUPtYGveEdq4DLWZOhbdEA">
+ <body>Behavior is a specification of how its context classifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ubrr1foAEdu-e7JlHBQtRA" annotatedElement="_TUPtYGveEdq4DLWZOhbdEA">
+ <body>A behavior owns zero or more parameter sets.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UXqG1_oAEdu-e7JlHBQtRA" name="parameters_match" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UXqG2PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG1_oAEdu-e7JlHBQtRA">
+ <body>The parameters of the behavior must match the parameters of the implemented behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqG2foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXqG2voAEdu-e7JlHBQtRA" name="feature_of_context_classifier" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UXqG2_oAEdu-e7JlHBQtRA" annotatedElement="_UXqG2voAEdu-e7JlHBQtRA">
+ <body>The implemented behavioral feature must be a feature (possibly inherited) of the context classifier of the behavior.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqG3PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXqG3foAEdu-e7JlHBQtRA" name="must_realize" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UXqG3voAEdu-e7JlHBQtRA" annotatedElement="_UXqG3foAEdu-e7JlHBQtRA">
+ <body>If the implemented behavioral feature has been redefined in the ancestors of the owner of the behavior, then the behavior must realize the latest redefining behavioral feature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqG3_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UXqG4PoAEdu-e7JlHBQtRA" name="most_one_behaviour" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UXqG4foAEdu-e7JlHBQtRA" annotatedElement="_UXqG4PoAEdu-e7JlHBQtRA">
+ <body>There may be at most one behavior for a given pairing of classifier (as owner of the behavior) and behavioral feature (as specification of the behavior).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXqG4voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXqG4_oAEdu-e7JlHBQtRA" general="_00owUGvdEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UXqG5PoAEdu-e7JlHBQtRA" name="isReentrant" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UXqG5foAEdu-e7JlHBQtRA" annotatedElement="_UXqG5PoAEdu-e7JlHBQtRA">
+ <body>Tells whether the behavior can be invoked while it is still executing from a previous invocation.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UXqG5voAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqG5_oAEdu-e7JlHBQtRA" name="redefinedBehavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UXz38voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqG6PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG5_oAEdu-e7JlHBQtRA">
+ <body>References a behavior that this behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the behavior implements a behavioral feature, it replaces the redefined behavior. If the behavior is a classifier behavior, it extends the redefined behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqG6foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqG6voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqG6_oAEdu-e7JlHBQtRA" name="specification" type="_rHT3YKOsEdqi_5gqUMOQtA" association="_UXz39voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqG7PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG6_oAEdu-e7JlHBQtRA">
+ <body>Designates a behavioral feature that the behavior implements. The behavioral feature must be owned by the classifier that owns the behavior or be inherited by it. The parameters of the behavioral feature and the implementing behavior must match. If a behavior does not have a specification, it is directly associated with a classifier (i.e., it is the behavior of the classifier as a whole).</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqG7foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqG7voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqG7_oAEdu-e7JlHBQtRA" name="ownedParameter" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UXz39_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqG8PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG7_oAEdu-e7JlHBQtRA">
+ <body>References a list of parameters to the behavior which describes the order and type of arguments that can be given when the behavior is invoked and of the values which will be returned when the behavior completes its execution.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqG8foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqG8voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqG8_oAEdu-e7JlHBQtRA" name="context" type="_iY7sMGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UXz4A_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqG9PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG8_oAEdu-e7JlHBQtRA">
+ <body>The classifier that is the context for the execution of the behavior. If the behavior is owned by a BehavioredClassifier, that classifier is the context. Otherwise, the context is the first BehavioredClassifier reached by following the chain of owner relationships. For example, following this algorithm, the context of an entry action in a state machine is the classifier that owns the state machine. The features of the context classifier as well as the elements visible to the context classifier are visible to the behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqG9foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqG9voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqG9_oAEdu-e7JlHBQtRA" name="precondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UXz4B_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqG-PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG9_oAEdu-e7JlHBQtRA">
+ <body>An optional set of Constraints specifying what must be fulfilled when the behavior is invoked.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqG-foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqG-voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UXqG-_oAEdu-e7JlHBQtRA" name="postcondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UXz4C_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXqG_PoAEdu-e7JlHBQtRA" annotatedElement="_UXqG-_oAEdu-e7JlHBQtRA">
+ <body>An optional set of Constraints specifying what is fulfilled after the execution of the behavior is completed, if its precondition was fulfilled before its invocation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXqG_foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXqG_voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ubrr1voAEdu-e7JlHBQtRA" name="ownedParameterSet" type="_UbrrgfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_Ub1cb_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrr1_oAEdu-e7JlHBQtRA" annotatedElement="_Ubrr1voAEdu-e7JlHBQtRA">
+ <body>The ParameterSets owned by this Behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubrr2PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubrr2foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_Zp2iwFYgEdqB6vblk3tuMA" name="getContext" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_flYtEFYgEdqB6vblk3tuMA" type="_iY7sMGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FIHcsVYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FIHcsFYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UXz4I_oAEdu-e7JlHBQtRA" name="Pin">
+ <ownedComment xmi:id="_UXz4JPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4I_oAEdu-e7JlHBQtRA">
+ <body>A pin is a typed element and multiplicity element that provides values to actions and accept result values from them.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UYjfaPoAEdu-e7JlHBQtRA" annotatedElement="_UXz4I_oAEdu-e7JlHBQtRA">
+ <body>A pin is an object node for inputs and outputs to actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ubrr2voAEdu-e7JlHBQtRA" name="control_pins" constrainedElement="_UXz4I_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ubrr2_oAEdu-e7JlHBQtRA" annotatedElement="_Ubrr2voAEdu-e7JlHBQtRA">
+ <body>Control pins have a control type</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ubrr3PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isControl implies isControlType</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UXz4JvoAEdu-e7JlHBQtRA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ <generalization xmi:id="_UYjfafoAEdu-e7JlHBQtRA" general="_UYje7voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_Ubrr3foAEdu-e7JlHBQtRA" name="isControl" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ubrr3voAEdu-e7JlHBQtRA" annotatedElement="_Ubrr3foAEdu-e7JlHBQtRA">
+ <body>Tells whether the pins provide data to the actions, or just controls when it executes it.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ubrr3_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Ub1cMPoAEdu-e7JlHBQtRA" name="ObjectNodeOrderingKind">
+ <ownedComment xmi:id="_Ub1cMfoAEdu-e7JlHBQtRA" annotatedElement="_Ub1cMPoAEdu-e7JlHBQtRA">
+ <body>ObjectNodeOrderingKind is an enumeration indicating queuing order within a node.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_Ub1cMvoAEdu-e7JlHBQtRA" name="unordered">
+ <ownedComment xmi:id="_Ub1cM_oAEdu-e7JlHBQtRA" annotatedElement="_Ub1cMvoAEdu-e7JlHBQtRA">
+ <body>Indicates that object node tokens are unordered.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Ub1cNPoAEdu-e7JlHBQtRA" name="ordered">
+ <ownedComment xmi:id="_Ub1cNfoAEdu-e7JlHBQtRA" annotatedElement="_Ub1cNPoAEdu-e7JlHBQtRA">
+ <body>Indicates that object node tokens are ordered.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Ub1cNvoAEdu-e7JlHBQtRA" name="LIFO">
+ <ownedComment xmi:id="_Ub1cN_oAEdu-e7JlHBQtRA" annotatedElement="_Ub1cNvoAEdu-e7JlHBQtRA">
+ <body>Indicates that object node tokens are queued in a last in, first out manner.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Ub1cOPoAEdu-e7JlHBQtRA" name="FIFO">
+ <ownedComment xmi:id="_Ub1cOfoAEdu-e7JlHBQtRA" annotatedElement="_Ub1cOPoAEdu-e7JlHBQtRA">
+ <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="_Ub1cOvoAEdu-e7JlHBQtRA" name="ParameterEffectKind">
+ <ownedComment xmi:id="_Ub1cO_oAEdu-e7JlHBQtRA" annotatedElement="_Ub1cOvoAEdu-e7JlHBQtRA">
+ <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="_Ub1cPPoAEdu-e7JlHBQtRA" name="create">
+ <ownedComment xmi:id="_Ub1cPfoAEdu-e7JlHBQtRA" annotatedElement="_Ub1cPPoAEdu-e7JlHBQtRA">
+ <body>Indicates that the behavior creates values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Ub1cPvoAEdu-e7JlHBQtRA" name="read">
+ <ownedComment xmi:id="_Ub1cP_oAEdu-e7JlHBQtRA" annotatedElement="_Ub1cPvoAEdu-e7JlHBQtRA">
+ <body>Indicates that the behavior reads values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Ub1cQPoAEdu-e7JlHBQtRA" name="update">
+ <ownedComment xmi:id="_Ub1cQfoAEdu-e7JlHBQtRA" annotatedElement="_Ub1cQPoAEdu-e7JlHBQtRA">
+ <body>Indicates that the behavior updates values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_Ub1cQvoAEdu-e7JlHBQtRA" name="delete">
+ <ownedComment xmi:id="_Ub1cQ_oAEdu-e7JlHBQtRA" annotatedElement="_Ub1cQvoAEdu-e7JlHBQtRA">
+ <body>Indicates that the behavior deletes values.</body>
+ </ownedComment>
+ </ownedLiteral>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cRPoAEdu-e7JlHBQtRA" name="A_weight_activityEdge" memberEnd="_UbrrYPoAEdu-e7JlHBQtRA _Ub1cRfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cRfoAEdu-e7JlHBQtRA" type="_UYje-_oAEdu-e7JlHBQtRA" association="_Ub1cRPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cRvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cR_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cSPoAEdu-e7JlHBQtRA" name="A_upperBound_objectNode" memberEnd="_UbrrdfoAEdu-e7JlHBQtRA _Ub1cSfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cSfoAEdu-e7JlHBQtRA" type="_UYje7voAEdu-e7JlHBQtRA" association="_Ub1cSPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cSvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cS_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cTPoAEdu-e7JlHBQtRA" name="A_inState_objectNode" memberEnd="_UbrrefoAEdu-e7JlHBQtRA _Ub1cTfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cTfoAEdu-e7JlHBQtRA" type="_UYje7voAEdu-e7JlHBQtRA" association="_Ub1cTPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cTvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cT_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cUPoAEdu-e7JlHBQtRA" name="A_parameterSet_parameter" memberEnd="_Ubrrr_oAEdu-e7JlHBQtRA _UbrrjfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cUfoAEdu-e7JlHBQtRA" name="A_transformation_objectFlow" memberEnd="_UbrrV_oAEdu-e7JlHBQtRA _Ub1cUvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cUvoAEdu-e7JlHBQtRA" type="_UYjfHvoAEdu-e7JlHBQtRA" association="_Ub1cUfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cU_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cVPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cVfoAEdu-e7JlHBQtRA" name="A_action_localPrecondition" memberEnd="_Ub1cVvoAEdu-e7JlHBQtRA _UbrrtPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cVvoAEdu-e7JlHBQtRA" type="_UX9B-PoAEdu-e7JlHBQtRA" association="_Ub1cVfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cV_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cWPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cWfoAEdu-e7JlHBQtRA" name="A_action_localPostcondition" memberEnd="_Ub1cWvoAEdu-e7JlHBQtRA _UbrruPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cWvoAEdu-e7JlHBQtRA" type="_UX9B-PoAEdu-e7JlHBQtRA" association="_Ub1cWfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cW_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cXPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cXfoAEdu-e7JlHBQtRA" name="A_interruptingEdge_interrupts" memberEnd="_UbrrwvoAEdu-e7JlHBQtRA _UbrrZPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cXvoAEdu-e7JlHBQtRA" name="A_inInterruptibleRegion_node" memberEnd="_UbrryvoAEdu-e7JlHBQtRA _UbrrxvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cX_oAEdu-e7JlHBQtRA" name="A_selection_objectFlow" memberEnd="_UbrrW_oAEdu-e7JlHBQtRA _Ub1cYPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cYPoAEdu-e7JlHBQtRA" type="_UYjfHvoAEdu-e7JlHBQtRA" association="_Ub1cX_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cYfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cYvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cY_oAEdu-e7JlHBQtRA" name="A_selection_objectNode" memberEnd="_UbrrffoAEdu-e7JlHBQtRA _Ub1cZPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cZPoAEdu-e7JlHBQtRA" type="_UYje7voAEdu-e7JlHBQtRA" association="_Ub1cY_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cZfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cZvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cZ_oAEdu-e7JlHBQtRA" name="A_condition_parameterSet" memberEnd="_UbrrkfoAEdu-e7JlHBQtRA _Ub1caPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1caPoAEdu-e7JlHBQtRA" type="_UbrrgfoAEdu-e7JlHBQtRA" association="_Ub1cZ_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cafoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cavoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1ca_oAEdu-e7JlHBQtRA" name="A_ownedParameterSet_behavioralFeature" memberEnd="_Ubrr0foAEdu-e7JlHBQtRA _Ub1cbPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cbPoAEdu-e7JlHBQtRA" type="_rHT3YKOsEdqi_5gqUMOQtA" association="_Ub1ca_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cbfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cbvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cb_oAEdu-e7JlHBQtRA" name="A_ownedParameterSet_behavior" memberEnd="_Ubrr1voAEdu-e7JlHBQtRA _Ub1ccPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1ccPoAEdu-e7JlHBQtRA" type="_TUPtYGveEdq4DLWZOhbdEA" association="_Ub1cb_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1ccfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1ccvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UX9Ce_oAEdu-e7JlHBQtRA" name="A_containedNode_inGroup" memberEnd="_UX9CXfoAEdu-e7JlHBQtRA _UX9CdvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub1cc_oAEdu-e7JlHBQtRA" name="A_joinSpec_joinNode" memberEnd="_UbrrOvoAEdu-e7JlHBQtRA _Ub1cdPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub1cdPoAEdu-e7JlHBQtRA" type="_UZJVD_oAEdu-e7JlHBQtRA" association="_Ub1cc_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub1cdfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub1cdvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYGywPoAEdu-e7JlHBQtRA" name="ConditionalNode">
+ <ownedComment xmi:id="_UYGywfoAEdu-e7JlHBQtRA" annotatedElement="_UYGywPoAEdu-e7JlHBQtRA">
+ <body>A conditional node is a structured activity node that represents an exclusive choice among some number of alternatives.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ub-mIfoAEdu-e7JlHBQtRA" name="result_no_incoming" constrainedElement="_UYGywPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mIvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mIfoAEdu-e7JlHBQtRA">
+ <body>The result output pins have no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ub-mI_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYGywvoAEdu-e7JlHBQtRA" general="_UX9Cl_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYGyw_oAEdu-e7JlHBQtRA" name="isDeterminate" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UYGyxPoAEdu-e7JlHBQtRA" annotatedElement="_UYGyw_oAEdu-e7JlHBQtRA">
+ <body>If true, the modeler asserts that at most one test will succeed.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UYGyxfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGyxvoAEdu-e7JlHBQtRA" name="isAssured" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UYGyx_oAEdu-e7JlHBQtRA" annotatedElement="_UYGyxvoAEdu-e7JlHBQtRA">
+ <body>If true, the modeler asserts that at least one test will succeed.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UYGyyPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGyyfoAEdu-e7JlHBQtRA" name="clause" type="_UYGy4_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UYGzPfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGyyvoAEdu-e7JlHBQtRA" annotatedElement="_UYGyyfoAEdu-e7JlHBQtRA">
+ <body>Set of clauses composing the conditional.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYGyy_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGyzPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mJPoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ub-mX_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mJfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mJPoAEdu-e7JlHBQtRA">
+ <body>A list of output pins that constitute the data flow outputs of the conditional.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mJ_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9Cl_oAEdu-e7JlHBQtRA" name="StructuredActivityNode">
+ <ownedComment xmi:id="_UX9CmPoAEdu-e7JlHBQtRA" annotatedElement="_UX9Cl_oAEdu-e7JlHBQtRA">
+ <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>
+ <ownedComment xmi:id="_Ub-mKPoAEdu-e7JlHBQtRA" annotatedElement="_UX9Cl_oAEdu-e7JlHBQtRA">
+ <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="_Ub-mKfoAEdu-e7JlHBQtRA" name="edges" constrainedElement="_UX9Cl_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mKvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mKfoAEdu-e7JlHBQtRA">
+ <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="_Ub-mK_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9Cm_oAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <generalization xmi:id="_Ub-mLPoAEdu-e7JlHBQtRA" general="_UX9B-PoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UX9CmfoAEdu-e7JlHBQtRA" general="_UX9CWvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UX9CnPoAEdu-e7JlHBQtRA" name="variable" type="_UX9CgvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UYGzKvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CnfoAEdu-e7JlHBQtRA" annotatedElement="_UX9CnPoAEdu-e7JlHBQtRA">
+ <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="_UX9CnvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9Cn_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CoPoAEdu-e7JlHBQtRA" name="node" type="_UX9Cb_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UX9CXfoAEdu-e7JlHBQtRA" association="_UYGzK_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CofoAEdu-e7JlHBQtRA" annotatedElement="_UX9CoPoAEdu-e7JlHBQtRA">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CovoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9Co_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CpPoAEdu-e7JlHBQtRA" name="activity" type="_UX9CTPoAEdu-e7JlHBQtRA" redefinedProperty="_UX9CcvoAEdu-e7JlHBQtRA _UX9CYfoAEdu-e7JlHBQtRA" association="_UYGzTfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CpfoAEdu-e7JlHBQtRA" annotatedElement="_UX9CpPoAEdu-e7JlHBQtRA">
+ <body>Activity immediately containing the node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CpvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9Cp_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mLfoAEdu-e7JlHBQtRA" name="mustIsolate" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_Ub-mLvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mLfoAEdu-e7JlHBQtRA">
+ <body>If true, then the actions in the node execute in isolation from actions outside the node.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Ub-mL_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mMPoAEdu-e7JlHBQtRA" name="edge" type="_UYje-_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UYjfP_oAEdu-e7JlHBQtRA" association="_Ub-md_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mMfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mMPoAEdu-e7JlHBQtRA">
+ <body>Edges immediately contained in the structured node.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mMvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mM_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYGyzfoAEdu-e7JlHBQtRA" name="LoopNode">
+ <ownedComment xmi:id="_UYGyzvoAEdu-e7JlHBQtRA" annotatedElement="_UYGyzfoAEdu-e7JlHBQtRA">
+ <body>A loop node is a structured activity node that represents a loop with setup, test, and body sections.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_Ub-mNPoAEdu-e7JlHBQtRA" name="input_edges" constrainedElement="_UYGyzfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mNfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mNPoAEdu-e7JlHBQtRA">
+ <body>Loop variable inputs must not have outgoing edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ub-mNvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ub-mN_oAEdu-e7JlHBQtRA" name="body_output_pins" constrainedElement="_UYGyzfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mOPoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mN_oAEdu-e7JlHBQtRA">
+ <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="_Ub-mOfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ub-mOvoAEdu-e7JlHBQtRA" name="result_no_incoming" constrainedElement="_UYGyzfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mO_oAEdu-e7JlHBQtRA" annotatedElement="_Ub-mOvoAEdu-e7JlHBQtRA">
+ <body>The result output pins have no incoming edges.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ub-mPPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYGyz_oAEdu-e7JlHBQtRA" general="_UX9Cl_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYGy0PoAEdu-e7JlHBQtRA" name="isTestedFirst" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UYGy0foAEdu-e7JlHBQtRA" annotatedElement="_UYGy0PoAEdu-e7JlHBQtRA">
+ <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>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UYGy0voAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy0_oAEdu-e7JlHBQtRA" name="bodyPart" type="_UYGzFfoAEdu-e7JlHBQtRA" association="_UYGzNfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy1PoAEdu-e7JlHBQtRA" annotatedElement="_UYGy0_oAEdu-e7JlHBQtRA">
+ <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="_UYGy1foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy1voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy1_oAEdu-e7JlHBQtRA" name="setupPart" type="_UYGzFfoAEdu-e7JlHBQtRA" association="_UYGzOfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy2PoAEdu-e7JlHBQtRA" annotatedElement="_UYGy1_oAEdu-e7JlHBQtRA">
+ <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="_UYGy2foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy2voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy2_oAEdu-e7JlHBQtRA" name="decider" type="_UXz4MfoAEdu-e7JlHBQtRA" association="_UYGzRfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy3PoAEdu-e7JlHBQtRA" annotatedElement="_UYGy2_oAEdu-e7JlHBQtRA">
+ <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="_UYGy3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy3voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy3_oAEdu-e7JlHBQtRA" name="test" type="_UYGzFfoAEdu-e7JlHBQtRA" association="_UYGzSfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy4PoAEdu-e7JlHBQtRA" annotatedElement="_UYGy3_oAEdu-e7JlHBQtRA">
+ <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="_UYGy4foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy4voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mPfoAEdu-e7JlHBQtRA" name="result" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UX9B-_oAEdu-e7JlHBQtRA" association="_Ub-mY_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mPvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mPfoAEdu-e7JlHBQtRA">
+ <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="_Ub-mP_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mQPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mQfoAEdu-e7JlHBQtRA" name="loopVariable" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" association="_Ub-mZ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mQvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mQfoAEdu-e7JlHBQtRA">
+ <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="_Ub-mQ_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mRPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mRfoAEdu-e7JlHBQtRA" name="bodyOutput" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" association="_Ub-ma_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mRvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mRfoAEdu-e7JlHBQtRA">
+ <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="_Ub-mR_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mSPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mSfoAEdu-e7JlHBQtRA" name="loopVariableInput" type="_UXz4NPoAEdu-e7JlHBQtRA" isOrdered="true" aggregation="composite" subsettedProperty="_UX9B__oAEdu-e7JlHBQtRA" association="_Ub-mc_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mSvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mSfoAEdu-e7JlHBQtRA">
+ <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="_Ub-mS_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mTPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYGy4_oAEdu-e7JlHBQtRA" name="Clause">
+ <ownedComment xmi:id="_UYGy5PoAEdu-e7JlHBQtRA" annotatedElement="_UYGy4_oAEdu-e7JlHBQtRA">
+ <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="_UYGy5foAEdu-e7JlHBQtRA" name="decider_output" constrainedElement="_UYGy4_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy5voAEdu-e7JlHBQtRA" annotatedElement="_UYGy5foAEdu-e7JlHBQtRA">
+ <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="_UYGy5_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ub-mTfoAEdu-e7JlHBQtRA" name="body_output_pins" constrainedElement="_UYGy4_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mTvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mTfoAEdu-e7JlHBQtRA">
+ <body>The bodyOutput pins are output pins on actions in the body of the clause.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ub-mT_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYGy6PoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UYGy6foAEdu-e7JlHBQtRA" name="test" type="_UYGzFfoAEdu-e7JlHBQtRA" association="_UYGzLPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy6voAEdu-e7JlHBQtRA" annotatedElement="_UYGy6foAEdu-e7JlHBQtRA">
+ <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="_UYGy6_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy7PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy7foAEdu-e7JlHBQtRA" name="body" type="_UYGzFfoAEdu-e7JlHBQtRA" association="_UYGzMPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy7voAEdu-e7JlHBQtRA" annotatedElement="_UYGy7foAEdu-e7JlHBQtRA">
+ <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="_UYGy7_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy8PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy8foAEdu-e7JlHBQtRA" name="predecessorClause" type="_UYGy4_oAEdu-e7JlHBQtRA" association="_UYGzNPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy8voAEdu-e7JlHBQtRA" annotatedElement="_UYGy8foAEdu-e7JlHBQtRA">
+ <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="_UYGy8_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy9PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy9foAEdu-e7JlHBQtRA" name="successorClause" type="_UYGy4_oAEdu-e7JlHBQtRA" association="_UYGzNPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy9voAEdu-e7JlHBQtRA" annotatedElement="_UYGy9foAEdu-e7JlHBQtRA">
+ <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="_UYGy9_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy-PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYGy-foAEdu-e7JlHBQtRA" name="decider" type="_UXz4MfoAEdu-e7JlHBQtRA" association="_UYGzQfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYGy-voAEdu-e7JlHBQtRA" annotatedElement="_UYGy-foAEdu-e7JlHBQtRA">
+ <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="_UYGy-_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYGy_PoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mUPoAEdu-e7JlHBQtRA" name="bodyOutput" type="_UXz4MfoAEdu-e7JlHBQtRA" isOrdered="true" association="_Ub-mb_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mUfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mUPoAEdu-e7JlHBQtRA">
+ <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="_Ub-mUvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mU_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYje-_oAEdu-e7JlHBQtRA" name="ActivityEdge" isAbstract="true">
+ <ownedComment xmi:id="_UYje_PoAEdu-e7JlHBQtRA" annotatedElement="_UYje-_oAEdu-e7JlHBQtRA">
+ <body>An activity edge is an abstract class for directed connections between two activity nodes.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UbrrX_oAEdu-e7JlHBQtRA" annotatedElement="_UYje-_oAEdu-e7JlHBQtRA">
+ <body>Activity edges can be contained in interruptible regions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYje_foAEdu-e7JlHBQtRA" name="source_and_target" constrainedElement="_UYje-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYje_voAEdu-e7JlHBQtRA" annotatedElement="_UYje_foAEdu-e7JlHBQtRA">
+ <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="_UYje__oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfAPoAEdu-e7JlHBQtRA" name="owned" constrainedElement="_UYje-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfAfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfAPoAEdu-e7JlHBQtRA">
+ <body>Activity edges may be owned only by activities or groups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfAvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_Ub-mVPoAEdu-e7JlHBQtRA" name="structured_node" constrainedElement="_UYje-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mVfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mVPoAEdu-e7JlHBQtRA">
+ <body>Activity edges may be owned by at most one structured node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_Ub-mVvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYjfA_oAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UYjfBPoAEdu-e7JlHBQtRA" name="activity" type="_UX9CTPoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UYjfevoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfBfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfBPoAEdu-e7JlHBQtRA">
+ <body>Activity containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfBvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfCPoAEdu-e7JlHBQtRA" name="source" type="_UX9Cb_oAEdu-e7JlHBQtRA" association="_UYjfe_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfCfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfCPoAEdu-e7JlHBQtRA">
+ <body>Node from which tokens are taken when they traverse the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfCvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfC_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfDPoAEdu-e7JlHBQtRA" name="target" type="_UX9Cb_oAEdu-e7JlHBQtRA" association="_UYjffPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfDfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfDPoAEdu-e7JlHBQtRA">
+ <body>Node to which tokens are put when they traverse the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfDvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfD_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfFPoAEdu-e7JlHBQtRA" name="redefinedEdge" type="_UYje-_oAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UYsooPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfFfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfFPoAEdu-e7JlHBQtRA">
+ <body>Inherited edges replaced by this edge in a specialization of the activity.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjfFvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYjfF_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJU3_oAEdu-e7JlHBQtRA" name="inPartition" type="_UZJUtfoAEdu-e7JlHBQtRA" subsettedProperty="_UYjfEPoAEdu-e7JlHBQtRA" association="_UZTFmPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU4PoAEdu-e7JlHBQtRA" annotatedElement="_UZJU3_oAEdu-e7JlHBQtRA">
+ <body>Partitions containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU4foAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU4voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZJU4_oAEdu-e7JlHBQtRA" name="guard" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZTFn_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZJU5PoAEdu-e7JlHBQtRA" annotatedElement="_UZJU4_oAEdu-e7JlHBQtRA">
+ <body>Specification evaluated at runtime to determine if the edge can be traversed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZJU5foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZJU5voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrYPoAEdu-e7JlHBQtRA" name="weight" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_Ub1cRPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrYfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrYPoAEdu-e7JlHBQtRA">
+ <body>Number of tokens consumed from the source node on each traversal.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrYvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrY_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbrrZPoAEdu-e7JlHBQtRA" name="interrupts" type="_UbrrvPoAEdu-e7JlHBQtRA" association="_Ub1cXfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbrrZfoAEdu-e7JlHBQtRA" annotatedElement="_UbrrZPoAEdu-e7JlHBQtRA">
+ <body>Region that the edge can interrupt.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbrrZvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbrrZ_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mV_oAEdu-e7JlHBQtRA" name="inStructuredNode" type="_UX9Cl_oAEdu-e7JlHBQtRA" subsettedProperty="_UYjfEPoAEdu-e7JlHBQtRA" association="_Ub-md_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mWPoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mV_oAEdu-e7JlHBQtRA">
+ <body>Structured activity node containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mWfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mWvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfEPoAEdu-e7JlHBQtRA" name="inGroup" type="_UX9CWvoAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UYjfffoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfEfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfEPoAEdu-e7JlHBQtRA">
+ <body>Groups containing the edge.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mW_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mXPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UX9CWvoAEdu-e7JlHBQtRA" name="ActivityGroup" isAbstract="true">
+ <ownedComment xmi:id="_UX9CW_oAEdu-e7JlHBQtRA" annotatedElement="_UX9CWvoAEdu-e7JlHBQtRA">
+ <body>ActivityGroup is an abstract class for defining sets of nodes and edges in an activity.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYjfNvoAEdu-e7JlHBQtRA" name="nodes_and_edges" constrainedElement="_UX9CWvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfN_oAEdu-e7JlHBQtRA" annotatedElement="_UYjfNvoAEdu-e7JlHBQtRA">
+ <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="_UYjfOPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfOfoAEdu-e7JlHBQtRA" name="not_contained" constrainedElement="_UX9CWvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfOvoAEdu-e7JlHBQtRA" annotatedElement="_UYjfOfoAEdu-e7JlHBQtRA">
+ <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="_UYjfO_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UYjfPPoAEdu-e7JlHBQtRA" name="group_owned" constrainedElement="_UX9CWvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfPfoAEdu-e7JlHBQtRA" annotatedElement="_UYjfPPoAEdu-e7JlHBQtRA">
+ <body>Groups may only be owned by activities or groups.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYjfPvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UX9CXPoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UX9CZfoAEdu-e7JlHBQtRA" name="subgroup" type="_UX9CWvoAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UX9CffoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CZvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CZfoAEdu-e7JlHBQtRA">
+ <body>Groups immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9CZ_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CaPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CafoAEdu-e7JlHBQtRA" name="superGroup" type="_UX9CWvoAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UX9CffoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CavoAEdu-e7JlHBQtRA" annotatedElement="_UX9CafoAEdu-e7JlHBQtRA">
+ <body>Group immediately containing the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UX9Ca_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UX9CbPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CYfoAEdu-e7JlHBQtRA" name="inActivity" type="_UX9CTPoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UX9CfPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CYvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CYfoAEdu-e7JlHBQtRA">
+ <body>Activity containing the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFkPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFkfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UX9CXfoAEdu-e7JlHBQtRA" name="containedNode" type="_UX9Cb_oAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UX9Ce_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UX9CXvoAEdu-e7JlHBQtRA" annotatedElement="_UX9CXfoAEdu-e7JlHBQtRA">
+ <body>Nodes immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ubrr4PoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ubrr4foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjfP_oAEdu-e7JlHBQtRA" name="containedEdge" type="_UYje-_oAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_UYjfffoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjfQPoAEdu-e7JlHBQtRA" annotatedElement="_UYjfP_oAEdu-e7JlHBQtRA">
+ <body>Edges immediately contained in the group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mXfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mXvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-mX_oAEdu-e7JlHBQtRA" name="A_result_conditionalNode" memberEnd="_Ub-mJPoAEdu-e7JlHBQtRA _Ub-mYPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub-mYPoAEdu-e7JlHBQtRA" type="_UYGywPoAEdu-e7JlHBQtRA" association="_Ub-mX_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mYfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mYvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-mY_oAEdu-e7JlHBQtRA" name="A_result_loopNode" memberEnd="_Ub-mPfoAEdu-e7JlHBQtRA _Ub-mZPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub-mZPoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_Ub-mY_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mZfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mZvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-mZ_oAEdu-e7JlHBQtRA" name="A_loopVariable_loopNode" memberEnd="_Ub-mQfoAEdu-e7JlHBQtRA _Ub-maPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub-maPoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_Ub-mZ_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mafoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mavoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-ma_oAEdu-e7JlHBQtRA" name="A_bodyOutput_loopNode" memberEnd="_Ub-mRfoAEdu-e7JlHBQtRA _Ub-mbPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub-mbPoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_Ub-ma_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mbfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mbvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-mb_oAEdu-e7JlHBQtRA" name="A_bodyOutput_clause" memberEnd="_Ub-mUPoAEdu-e7JlHBQtRA _Ub-mcPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub-mcPoAEdu-e7JlHBQtRA" type="_UYGy4_oAEdu-e7JlHBQtRA" association="_Ub-mb_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mcfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mcvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-mc_oAEdu-e7JlHBQtRA" name="A_loopVariableInput_loopNode" memberEnd="_Ub-mSfoAEdu-e7JlHBQtRA _Ub-mdPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_Ub-mdPoAEdu-e7JlHBQtRA" type="_UYGyzfoAEdu-e7JlHBQtRA" association="_Ub-mc_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mdfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mdvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Ub-md_oAEdu-e7JlHBQtRA" name="A_edge_inStructuredNode" memberEnd="_Ub-mMPoAEdu-e7JlHBQtRA _Ub-mV_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYjfffoAEdu-e7JlHBQtRA" name="A_containedEdge_inGroup" memberEnd="_UYjfP_oAEdu-e7JlHBQtRA _UYjfEPoAEdu-e7JlHBQtRA" isDerived="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Ub-mePoAEdu-e7JlHBQtRA" name="ExpansionNode">
+ <ownedComment xmi:id="_Ub-mefoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mePoAEdu-e7JlHBQtRA">
+ <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="_Ub-mevoAEdu-e7JlHBQtRA" general="_UYje7voAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_Ub-me_oAEdu-e7JlHBQtRA" name="regionAsOutput" type="_Ub-mg_oAEdu-e7JlHBQtRA" association="_UcIXS_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mfPoAEdu-e7JlHBQtRA" annotatedElement="_Ub-me_oAEdu-e7JlHBQtRA">
+ <body>The expansion region for which the node is an output.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mffoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mfvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mf_oAEdu-e7JlHBQtRA" name="regionAsInput" type="_Ub-mg_oAEdu-e7JlHBQtRA" association="_UcIXTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mgPoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mf_oAEdu-e7JlHBQtRA">
+ <body>The expansion region for which the node is an input.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ub-mgfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mgvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Ub-mg_oAEdu-e7JlHBQtRA" name="ExpansionRegion">
+ <ownedComment xmi:id="_Ub-mhPoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mg_oAEdu-e7JlHBQtRA">
+ <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="_Ub-mhfoAEdu-e7JlHBQtRA" name="expansion_nodes" constrainedElement="_Ub-mg_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mhvoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mhfoAEdu-e7JlHBQtRA">
+ <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="_Ub-mh_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_Ub-miPoAEdu-e7JlHBQtRA" general="_UX9Cl_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_Ub-mifoAEdu-e7JlHBQtRA" name="mode" type="_UcIXQ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mivoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mifoAEdu-e7JlHBQtRA">
+ <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="_Ub-mi_oAEdu-e7JlHBQtRA" type="_UcIXQ_oAEdu-e7JlHBQtRA" instance="_UcIXR_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mjPoAEdu-e7JlHBQtRA" name="outputElement" type="_Ub-mePoAEdu-e7JlHBQtRA" association="_UcIXS_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mjfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mjPoAEdu-e7JlHBQtRA">
+ <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="_Ub-mjvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mj_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ub-mkPoAEdu-e7JlHBQtRA" name="inputElement" type="_Ub-mePoAEdu-e7JlHBQtRA" association="_UcIXTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ub-mkfoAEdu-e7JlHBQtRA" annotatedElement="_Ub-mkPoAEdu-e7JlHBQtRA">
+ <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="_Ub-mkvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ub-mk_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYGzFfoAEdu-e7JlHBQtRA" name="ExecutableNode" isAbstract="true">
+ <ownedComment xmi:id="_UYGzFvoAEdu-e7JlHBQtRA" annotatedElement="_UYGzFfoAEdu-e7JlHBQtRA">
+ <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="_UYGzF_oAEdu-e7JlHBQtRA" general="_UX9Cb_oAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UcIXIPoAEdu-e7JlHBQtRA" name="handler" type="_UcIXJPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UcIXTfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXIfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXIPoAEdu-e7JlHBQtRA">
+ <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="_UcIXIvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXI_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcIXJPoAEdu-e7JlHBQtRA" name="ExceptionHandler">
+ <ownedComment xmi:id="_UcIXJfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXJPoAEdu-e7JlHBQtRA">
+ <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="_UcIXJvoAEdu-e7JlHBQtRA" name="exception_body" constrainedElement="_UcIXJPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXJ_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXJvoAEdu-e7JlHBQtRA">
+ <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="_UcIXKPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXKfoAEdu-e7JlHBQtRA" name="result_pins" constrainedElement="_UcIXJPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXKvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXKfoAEdu-e7JlHBQtRA">
+ <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="_UcIXK_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXLPoAEdu-e7JlHBQtRA" name="one_input" constrainedElement="_UcIXJPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXLfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXLPoAEdu-e7JlHBQtRA">
+ <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="_UcIXLvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXL_oAEdu-e7JlHBQtRA" name="edge_source_target" constrainedElement="_UcIXJPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXMPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXL_oAEdu-e7JlHBQtRA">
+ <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="_UcIXMfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcIXMvoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UcIXM_oAEdu-e7JlHBQtRA" name="protectedNode" type="_UYGzFfoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UcIXTfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXNPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXM_oAEdu-e7JlHBQtRA">
+ <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="_UcIXNfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXNvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXN_oAEdu-e7JlHBQtRA" name="handlerBody" type="_UYGzFfoAEdu-e7JlHBQtRA" association="_UcIXTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXOPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXN_oAEdu-e7JlHBQtRA">
+ <body>A node that is executed if the handler satisfies an uncaught exception.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXOfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXOvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXO_oAEdu-e7JlHBQtRA" name="exceptionInput" type="_UYje7voAEdu-e7JlHBQtRA" association="_UcIXUvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXPPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXO_oAEdu-e7JlHBQtRA">
+ <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="_UcIXPfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXPvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXP_oAEdu-e7JlHBQtRA" name="exceptionType" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UcIXVvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXQPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXP_oAEdu-e7JlHBQtRA">
+ <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="_UcIXQfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXQvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_UcIXQ_oAEdu-e7JlHBQtRA" name="ExpansionKind">
+ <ownedComment xmi:id="_UcIXRPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXQ_oAEdu-e7JlHBQtRA">
+ <body>ExpansionKind is an enumeration type used to specify how multiple executions of an expansion region interact.</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_UcIXRfoAEdu-e7JlHBQtRA" name="parallel">
+ <ownedComment xmi:id="_UcIXRvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXRfoAEdu-e7JlHBQtRA">
+ <body>The executions are independent. They may be executed concurrently.</body>
+ </ownedComment>
+ </ownedLiteral>
+ <ownedLiteral xmi:id="_UcIXR_oAEdu-e7JlHBQtRA" name="iterative">
+ <ownedComment xmi:id="_UcIXSPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXR_oAEdu-e7JlHBQtRA">
+ <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="_UcIXSfoAEdu-e7JlHBQtRA" name="stream">
+ <ownedComment xmi:id="_UcIXSvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXSfoAEdu-e7JlHBQtRA">
+ <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="_UcIXS_oAEdu-e7JlHBQtRA" name="A_outputElement_regionAsOutput" memberEnd="_Ub-mjPoAEdu-e7JlHBQtRA _Ub-me_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXTPoAEdu-e7JlHBQtRA" name="A_inputElement_regionAsInput" memberEnd="_Ub-mkPoAEdu-e7JlHBQtRA _Ub-mf_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXTfoAEdu-e7JlHBQtRA" name="A_handler_protectedNode" memberEnd="_UcIXIPoAEdu-e7JlHBQtRA _UcIXM_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXTvoAEdu-e7JlHBQtRA" name="A_handlerBody_exceptionHandler" memberEnd="_UcIXN_oAEdu-e7JlHBQtRA _UcIXT_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcIXT_oAEdu-e7JlHBQtRA" type="_UcIXJPoAEdu-e7JlHBQtRA" association="_UcIXTvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXUPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXUfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXUvoAEdu-e7JlHBQtRA" name="A_exceptionInput_exceptionHandler" memberEnd="_UcIXO_oAEdu-e7JlHBQtRA _UcIXU_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcIXU_oAEdu-e7JlHBQtRA" type="_UcIXJPoAEdu-e7JlHBQtRA" association="_UcIXUvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXVPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXVfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXVvoAEdu-e7JlHBQtRA" name="A_exceptionType_exceptionHandler" memberEnd="_UcIXP_oAEdu-e7JlHBQtRA _UcIXV_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcIXV_oAEdu-e7JlHBQtRA" type="_UcIXJPoAEdu-e7JlHBQtRA" association="_UcIXVvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXWPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXWfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DAbfwa69EdqjppZik4kD8A" name="Component">
+ <ownedComment xmi:id="_UZTF-PoAEdu-e7JlHBQtRA" annotatedElement="_DAbfwa69EdqjppZik4kD8A">
+ <body>A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcIXWvoAEdu-e7JlHBQtRA" annotatedElement="_DAbfwa69EdqjppZik4kD8A">
+ <body>In the namespace of a component, all model elements that are involved in or related to its definition are either owned or imported explicitly. This may include, for example, use cases and dependencies (e.g. mappings), packages, components, and artifacts.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZTF-foAEdu-e7JlHBQtRA" general="_00owUGvdEdq4DLWZOhbdEA"/>
+ <generalization xmi:id="_UcIXW_oAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UZTF-_oAEdu-e7JlHBQtRA" name="isIndirectlyInstantiated" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZTF_PoAEdu-e7JlHBQtRA" annotatedElement="_UZTF-_oAEdu-e7JlHBQtRA">
+ <body>The kind of instantiation that applies to a Component. If false, the component is instantiated as an addressable object. If true, the Component is defined at design-time, but at runtime (or execution-time) an object specified by the Component does not exist, that is, the component is instantiated indirectly, through the instantiation of its realizing classifiers or parts. Several standard stereotypes use this meta attribute, e.g. &lt;&lt;specification>>, &lt;&lt;focus>>, &lt;&lt;subsystem>>.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZTF_foAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTF_voAEdu-e7JlHBQtRA" name="required" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_UZc21foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTF__oAEdu-e7JlHBQtRA" annotatedElement="_UZTF_voAEdu-e7JlHBQtRA">
+ <body>The interfaces that the component requires from other components in its environment in order to be able to offer its full set of provided functionality. These interfaces may be Used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTGAPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTGAfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTGAvoAEdu-e7JlHBQtRA" name="provided" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_UZc22foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTGA_oAEdu-e7JlHBQtRA" annotatedElement="_UZTGAvoAEdu-e7JlHBQtRA">
+ <body>The interfaces that the component exposes to its environment. These interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTGBPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTGBfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTGBvoAEdu-e7JlHBQtRA" name="realization" type="_UZc2rPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UZc23foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTGB_oAEdu-e7JlHBQtRA" annotatedElement="_UZTGBvoAEdu-e7JlHBQtRA">
+ <body>The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTGCPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTGCfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXXPoAEdu-e7JlHBQtRA" name="packagedElement" type="_jKxnwGwLEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UcIXYPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXXfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXXPoAEdu-e7JlHBQtRA">
+ <body>The set of PackageableElements that a Component owns. In the namespace of a component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies (e.g. mappings), and Artifacts.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXXvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXX_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_IJwKAK69EdqjppZik4kD8A" name="createOwnedClass">
+ <ownedComment xmi:id="_gykdUPZPEdqYHf-imTcTdw" annotatedElement="_IJwKAK69EdqjppZik4kD8A">
+ <body>Creates a(n) (abstract) class with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKAa69EdqjppZik4kD8A" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_IJwKAq69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_C_nlkPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKAq69EdqjppZik4kD8A">
+ <body>The name for the new class, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_IJwKA669EdqjppZik4kD8A" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_HLGHgPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKA669EdqjppZik4kD8A">
+ <body>Whether the new class should be abstract.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IJwKBK69EdqjppZik4kD8A" name="createOwnedEnumeration">
+ <ownedComment xmi:id="_lEKOUPZPEdqYHf-imTcTdw" annotatedElement="_IJwKBK69EdqjppZik4kD8A">
+ <body>Creates a enumeration with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKBa69EdqjppZik4kD8A" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_IJwKBq69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Jrb9UPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKBq69EdqjppZik4kD8A">
+ <body>The name for the new enumeration, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IJwKB669EdqjppZik4kD8A" name="createOwnedPrimitiveType">
+ <ownedComment xmi:id="_o0qrgPZPEdqYHf-imTcTdw" annotatedElement="_IJwKB669EdqjppZik4kD8A">
+ <body>Creates a primitive type with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKCK69EdqjppZik4kD8A" type="_V6vuYGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_IJwKCa69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Q2ZvMPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKCa69EdqjppZik4kD8A">
+ <body>The name for the new primitive type, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IJwKCq69EdqjppZik4kD8A" name="createOwnedInterface">
+ <ownedComment xmi:id="_s-DiwPZPEdqYHf-imTcTdw" annotatedElement="_IJwKCq69EdqjppZik4kD8A">
+ <body>Creates an interface with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKC669EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_IJwKDK69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_O886QPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKDK69EdqjppZik4kD8A">
+ <body>The name for the new interface, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UZc2kPoAEdu-e7JlHBQtRA" name="realizedInterfaces" isQuery="true" bodyCondition="_UZc2kvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2kfoAEdu-e7JlHBQtRA" annotatedElement="_UZc2kPoAEdu-e7JlHBQtRA">
+ <body>Utility returning the set of realized interfaces of a component:</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZc2kvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UZc2kPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2k_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (classifier.clientDependency->&#xA;select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface)))->&#xA;collect(dependency|dependency.client)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UZc2lPoAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2lfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2lvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UZc2l_oAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UZc2mPoAEdu-e7JlHBQtRA" name="usedInterfaces" isQuery="true" bodyCondition="_UZc2mvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc2mfoAEdu-e7JlHBQtRA" annotatedElement="_UZc2mPoAEdu-e7JlHBQtRA">
+ <body>Utility returning the set of used interfaces of a component:</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZc2mvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UZc2mPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2m_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (classifier.supplierDependency->&#xA;select(dependency|dependency.oclIsKindOf(Usage) and dependency.supplier.oclIsKindOf(interface)))->&#xA;collect(dependency|dependency.supplier)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UZc2nPoAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2nfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2nvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UZc2n_oAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UZc2oPoAEdu-e7JlHBQtRA" name="required" isQuery="true" bodyCondition="_UZc2ofoAEdu-e7JlHBQtRA">
+ <ownedRule xmi:id="_UZc2ofoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UZc2oPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2ovoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = let usedInterfaces = UsedInterfaces(self) and&#xD;&#xA; let realizingClassifierUsedInterfaces = UsedInterfaces(self.realizingClassifier) and&#xD;&#xA; let typesOfUsedPorts = self.ownedPort.required in&#xD;&#xA; ((usedInterfaces->union(realizingClassifierUsedInterfaces))->&#xD;&#xA; union(typesOfUsedPorts))->asSet()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UZc2o_oAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2pPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2pfoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UZc2pvoAEdu-e7JlHBQtRA" name="provided" isQuery="true" bodyCondition="_UZc2p_oAEdu-e7JlHBQtRA">
+ <ownedRule xmi:id="_UZc2p_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UZc2pvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc2qPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = let implementedInterfaces = self.implementation->collect(impl|impl.contract) and&#xD;&#xA; let realizedInterfaces = RealizedInterfaces(self) and&#xD;&#xA; let realizingClassifierInterfaces = RealizedInterfaces(self.realizingClassifier) and&#xD;&#xA; let typesOfRequiredPorts = self.ownedPort.provided in&#xD;&#xA; (((implementedInterfaces->union(realizedInterfaces)->union(realizingClassifierInterfaces))->&#xD;&#xA; union(typesOfRequiredPorts))->asSet()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UZc2qfoAEdu-e7JlHBQtRA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc2qvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc2q_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXYPoAEdu-e7JlHBQtRA" name="A_component_packagedElement" memberEnd="_UcIXYfoAEdu-e7JlHBQtRA _UcIXXPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcIXYfoAEdu-e7JlHBQtRA" type="_DAbfwa69EdqjppZik4kD8A" association="_UcIXYPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXYvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXY_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UZc3HvoAEdu-e7JlHBQtRA" name="Deployment">
+ <ownedComment xmi:id="_UZc3H_oAEdu-e7JlHBQtRA" annotatedElement="_UZc3HvoAEdu-e7JlHBQtRA">
+ <body>A deployment is the allocation of an artifact or artifact instance to a deployment target.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcIXZPoAEdu-e7JlHBQtRA" annotatedElement="_UZc3HvoAEdu-e7JlHBQtRA">
+ <body>A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files.</body>
+ </ownedComment>
+ <generalization xmi:id="_UZc3IPoAEdu-e7JlHBQtRA" general="_rEDGkGwKEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UZc3IfoAEdu-e7JlHBQtRA" name="deployedArtifact" type="_UZc3S_oAEdu-e7JlHBQtRA" subsettedProperty="_UYQjzfoAEdu-e7JlHBQtRA" association="_UZmAgvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3IvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3IfoAEdu-e7JlHBQtRA">
+ <body>The Artifacts that are deployed onto a Node. This association specializes the supplier association.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3I_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3JPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZc3JfoAEdu-e7JlHBQtRA" name="location" type="_UZc3OvoAEdu-e7JlHBQtRA" subsettedProperty="_UYQj0foAEdu-e7JlHBQtRA" association="_UZmAhvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZc3JvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3JfoAEdu-e7JlHBQtRA">
+ <body>The DeployedTarget which is the target of a Deployment.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZc3J_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZc3KPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXZfoAEdu-e7JlHBQtRA" name="configuration" type="_UcIXafoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UcIXfvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXZvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXZfoAEdu-e7JlHBQtRA">
+ <body>The specification of properties that parameterize the deployment and execution of one or more Artifacts.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXZ_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXaPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcIXafoAEdu-e7JlHBQtRA" name="DeploymentSpecification">
+ <ownedComment xmi:id="_UcIXavoAEdu-e7JlHBQtRA" annotatedElement="_UcIXafoAEdu-e7JlHBQtRA">
+ <body>A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcIXa_oAEdu-e7JlHBQtRA" name="deployed_elements" constrainedElement="_UcIXafoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXbPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXa_oAEdu-e7JlHBQtRA">
+ <body>The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e. the configured components).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXbfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.deployment->forAll (d | d.location.deployedElements->forAll (de |&#xD;&#xA; de.oclIsKindOf(Component)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXbvoAEdu-e7JlHBQtRA" name="deployment_target" constrainedElement="_UcIXafoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXb_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXbvoAEdu-e7JlHBQtRA">
+ <body>The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXcPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.deployment->forAll (d | d.location..oclIsKindOf(ExecutionEnvironment))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcIXcfoAEdu-e7JlHBQtRA" general="_-lGRgHLzEdqziYxiZo0YtA"/>
+ <ownedAttribute xmi:id="_UcIXcvoAEdu-e7JlHBQtRA" name="deploymentLocation" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UcIXc_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXcvoAEdu-e7JlHBQtRA">
+ <body>The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address'.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXdPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXdfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXdvoAEdu-e7JlHBQtRA" name="executionLocation" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UcIXd_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXdvoAEdu-e7JlHBQtRA">
+ <body>The location where a component Artifact executes. This may be a local or remote location.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXePoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXefoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXevoAEdu-e7JlHBQtRA" name="deployment" type="_UZc3HvoAEdu-e7JlHBQtRA" association="_UcIXfvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXe_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXevoAEdu-e7JlHBQtRA">
+ <body>The deployment with which the DeploymentSpecification is associated.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXfPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXffoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcIXfvoAEdu-e7JlHBQtRA" name="A_configuration_deployment" memberEnd="_UcIXZfoAEdu-e7JlHBQtRA _UcIXevoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcIXgfoAEdu-e7JlHBQtRA" name="ProtocolConformance">
+ <ownedComment xmi:id="_UcIXgvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXgfoAEdu-e7JlHBQtRA">
+ <body>Protocol state machines can be redefined into more specific protocol state machines, or into behavioral state machines. Protocol conformance declares that the specific protocol state machine specifies a protocol that conforms to the general state machine one, or that the specific behavioral state machine abide by the protocol of the general protocol state machine.</body>
+ </ownedComment>
+ <generalization xmi:id="_UcIXg_oAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UcIXhPoAEdu-e7JlHBQtRA" name="specificMachine" type="_UcIXrvoAEdu-e7JlHBQtRA" subsettedProperty="_UToivfoAEdu-e7JlHBQtRA _UToi0PoAEdu-e7JlHBQtRA" association="_UcRhFfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXhfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXhPoAEdu-e7JlHBQtRA">
+ <body>Specifies the state machine which conforms to the general state machine.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXhvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXh_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXiPoAEdu-e7JlHBQtRA" name="generalMachine" type="_UcIXrvoAEdu-e7JlHBQtRA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UcRhI_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXifoAEdu-e7JlHBQtRA" annotatedElement="_UcIXiPoAEdu-e7JlHBQtRA">
+ <body>Specifies the protocol state machine to which the specific state machine conforms.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXivoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXi_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_8Ugn8GvtEdqG6fBIPwe-mw" name="Interface">
+ <ownedComment xmi:id="_UYQj__oAEdu-e7JlHBQtRA" annotatedElement="_8Ugn8GvtEdqG6fBIPwe-mw">
+ <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>
+ <ownedComment xmi:id="_UZAK3_oAEdu-e7JlHBQtRA" annotatedElement="_8Ugn8GvtEdqG6fBIPwe-mw">
+ <body>Interfaces may include receptions (in addition to operations).</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcIXjPoAEdu-e7JlHBQtRA" annotatedElement="_8Ugn8GvtEdqG6fBIPwe-mw">
+ <body>Since an interface specifies conformance characteristics, it does not own detailed behavior specifications. Instead, interfaces may own a protocol state machine that specifies event sequences and pre/post conditions for the operations and receptions described by the interface.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYQkAPoAEdu-e7JlHBQtRA" name="visibility" constrainedElement="_8Ugn8GvtEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UYQkAfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkAPoAEdu-e7JlHBQtRA">
+ <body>The visibility of all features owned by an interface must be public.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYQkAvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.feature->forAll(f | f.visibility = #public)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYQkA_oAEdu-e7JlHBQtRA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UYQkBPoAEdu-e7JlHBQtRA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYifoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UYZtsPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkBfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkBPoAEdu-e7JlHBQtRA">
+ <body>The attributes (i.e. the properties) owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQkBvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQkCPoAEdu-e7JlHBQtRA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UYZttPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkCfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkCPoAEdu-e7JlHBQtRA">
+ <body>The operations owned by the class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQkCvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkC_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQkDPoAEdu-e7JlHBQtRA" name="nestedClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UYZtuvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkDfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkDPoAEdu-e7JlHBQtRA">
+ <body>References all the Classifiers that are defined (nested) within the Class.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQkDvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkD_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQkEPoAEdu-e7JlHBQtRA" name="redefinedInterface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UYZtvvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkEfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkEPoAEdu-e7JlHBQtRA">
+ <body>References all the Interfaces redefined by this Interface.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQkEvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkE_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZAK4PoAEdu-e7JlHBQtRA" name="ownedReception" type="_UZAK5PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA _UTyTxPoAEdu-e7JlHBQtRA" association="_UZALJfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZAK4foAEdu-e7JlHBQtRA" annotatedElement="_UZAK4PoAEdu-e7JlHBQtRA">
+ <body>Receptions that objects providing this interface are willing to accept.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZAK4voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZAK4_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXjfoAEdu-e7JlHBQtRA" name="protocol" type="_UcIXrvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UcRhHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXjvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXjfoAEdu-e7JlHBQtRA">
+ <body>References a protocol state machine specifying the legal sequences of the invocation of the behavioral features described in the interface.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXj_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXkPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_FzLo0HL0EdqziYxiZo0YtA" name="createOwnedOperation">
+ <ownedComment xmi:id="_59cM8OwgEdqYHf-imTcTdw" annotatedElement="_FzLo0HL0EdqziYxiZo0YtA">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FzLo0XL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_FzLo0nL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_mB3gAPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo0nL0EdqziYxiZo0YtA">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7NjlYaOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7NjlYKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FzLo1HL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_oBbkAPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo1HL0EdqziYxiZo0YtA">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FzLo1XL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FzLo1nL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FzLo13L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_pvZhsPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo13L0EdqziYxiZo0YtA">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FzLo2HL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FzLo2XL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FzLo03L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_sWcccPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo03L0EdqziYxiZo0YtA">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__G_8IaOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__G_8IKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_XUC3gHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_-2N5wOwgEdqYHf-imTcTdw" annotatedElement="_XUC3gHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_XUC3gXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_XUC3gnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_NDNDAPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3gnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EKqDQaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EKqDQKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XUC3g3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_OoiCEPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3g3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IuRYYaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IuRYYKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XUC3hHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_LlK-wPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3hHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XUC3hXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Qy-gYPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3hXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZAuvEGveEdq4DLWZOhbdEA" name="Port">
+ <ownedComment xmi:id="_UZTFq_oAEdu-e7JlHBQtRA" annotatedElement="_ZAuvEGveEdq4DLWZOhbdEA">
+ <body>A port is a property of a classifier that specifies a distinct interaction point between that classifier and its environment or between the (behavior of the) classifier and its internal parts. Ports are connected to properties of the classifier by connectors through which requests can be made to invoke the behavioral features of a classifier. A Port may specify the services a classifier provides (offers) to its environment as well as the services that a classifier expects (requires) of its environment.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcIXkfoAEdu-e7JlHBQtRA" annotatedElement="_ZAuvEGveEdq4DLWZOhbdEA">
+ <body>A port has an associated protocol state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UZTFrPoAEdu-e7JlHBQtRA" name="required_interfaces" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTFrfoAEdu-e7JlHBQtRA" annotatedElement="_UZTFrPoAEdu-e7JlHBQtRA">
+ <body>The required interfaces of a port must be provided by elements to which the port is connected.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTFrvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZTFr_oAEdu-e7JlHBQtRA" name="port_aggregation" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTFsPoAEdu-e7JlHBQtRA" annotatedElement="_UZTFr_oAEdu-e7JlHBQtRA">
+ <body>Port.aggregation must be composite.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTFsfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZTFsvoAEdu-e7JlHBQtRA" name="port_destroyed" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTFs_oAEdu-e7JlHBQtRA" annotatedElement="_UZTFsvoAEdu-e7JlHBQtRA">
+ <body>When a port is destroyed, all connectors attached to this port will be destroyed also.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTFtPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZTFtfoAEdu-e7JlHBQtRA" name="default_value" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTFtvoAEdu-e7JlHBQtRA" annotatedElement="_UZTFtfoAEdu-e7JlHBQtRA">
+ <body>A defaultValue for port cannot be specified when the type of the Port is an Interface</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTFt_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UZTFuPoAEdu-e7JlHBQtRA" general="_Jp_1oGveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UZTFufoAEdu-e7JlHBQtRA" name="isBehavior" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZTFuvoAEdu-e7JlHBQtRA" annotatedElement="_UZTFufoAEdu-e7JlHBQtRA">
+ <body>Specifies whether requests arriving at this port are sent to the classifier behavior of this classifier. Such ports are referred to as behavior port. Any invocation of a behavioral feature targeted at a behavior port will be handled by the instance of the owning classifier itself, rather than by any instances that this classifier may contain.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZTFu_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTFvPoAEdu-e7JlHBQtRA" name="isService" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UZTFvfoAEdu-e7JlHBQtRA" annotatedElement="_UZTFvPoAEdu-e7JlHBQtRA">
+ <body>If true indicates that this port is used to provide the published functionality of a classifier; if false, this port is used to implement the classifier but is not part of the essential externally-visible functionality of the classifier and can, therefore, be altered or deleted along with the internal implementation of the classifier and other properties that are considered part of its implementation.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UZTFvvoAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTFv_oAEdu-e7JlHBQtRA" name="required" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_UZTF4_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTFwPoAEdu-e7JlHBQtRA" annotatedElement="_UZTFv_oAEdu-e7JlHBQtRA">
+ <body>References the interfaces specifying the set of operations and receptions which the classifier expects its environment to handle. This association is derived as the set of interfaces required by the type of the port or its supertypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFwfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFwvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTFw_oAEdu-e7JlHBQtRA" name="redefinedPort" type="_ZAuvEGveEdq4DLWZOhbdEA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UZTF5_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTFxPoAEdu-e7JlHBQtRA" annotatedElement="_UZTFw_oAEdu-e7JlHBQtRA">
+ <body>A port may be redefined when its containing classifier is specialized. The redefining port may have additional interfaces to those that are associated with the redefined port or it may replace an interface by one of its subtypes.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFxfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFxvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTFx_oAEdu-e7JlHBQtRA" name="provided" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_UZTF6_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTFyPoAEdu-e7JlHBQtRA" annotatedElement="_UZTFx_oAEdu-e7JlHBQtRA">
+ <body>References the interfaces specifying the set of operations and receptions which the classifier offers to its environment, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived from the interfaces realized by the type of the port or by the type of the port, if the port was typed by an interface.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTFyfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTFyvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXkvoAEdu-e7JlHBQtRA" name="protocol" type="_UcIXrvoAEdu-e7JlHBQtRA" association="_UcRhFvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXk_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXkvoAEdu-e7JlHBQtRA">
+ <body>References an optional protocol state machine which describes valid interactions at this interaction point.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXlPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXlfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_gtr8cFYhEdqB6vblk3tuMA" name="getProvideds" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_jIqKEFYhEdqB6vblk3tuMA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k2x4wVYhEdqB6vblk3tuMA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k2x4wFYhEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_mxt7cFYhEdqB6vblk3tuMA" name="getRequireds" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_osMrIFYhEdqB6vblk3tuMA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pyY3IVYhEdqB6vblk3tuMA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pyY3IFYhEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcIXlvoAEdu-e7JlHBQtRA" name="ProtocolTransition">
+ <ownedComment xmi:id="_UcIXl_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXlvoAEdu-e7JlHBQtRA">
+ <body>A protocol transition specifies a legal transition for an operation. Transitions of protocol state machines have the following information: a pre condition (guard), on trigger, and a post condition. Every protocol transition is associated to zero or one operation (referred BehavioralFeature) that belongs to the context classifier of the protocol state machine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcIXmPoAEdu-e7JlHBQtRA" name="belongs_to_psm" constrainedElement="_UcIXlvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXmfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXmPoAEdu-e7JlHBQtRA">
+ <body>A protocol transition always belongs to a protocol state machine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXmvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>container.belongsToPSM()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXm_oAEdu-e7JlHBQtRA" name="associated_actions" constrainedElement="_UcIXlvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXnPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXm_oAEdu-e7JlHBQtRA">
+ <body>A protocol transition never has associated actions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXnfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>effect->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXnvoAEdu-e7JlHBQtRA" name="refers_to_operation" constrainedElement="_UcIXlvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXn_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXnvoAEdu-e7JlHBQtRA">
+ <body>If a protocol transition refers to an operation (i. e. has a call trigger corresponding to an operation), then that operation should apply to the context classifier of the state machine of the protocol transition.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXoPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcIXofoAEdu-e7JlHBQtRA" general="_UapJ3PoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UcIXovoAEdu-e7JlHBQtRA" name="postCondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UcRhGvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXo_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXovoAEdu-e7JlHBQtRA">
+ <body>Specifies the post condition of the transition which is the condition that should be obtained once the transition is triggered. This post condition is part of the post condition of the operation connected to the transition.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXpPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXpfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXpvoAEdu-e7JlHBQtRA" name="referred" type="_M4X2IGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_UcRhJ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXp_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXpvoAEdu-e7JlHBQtRA">
+ <body>This association refers to the associated operation. It is derived from the operation of the call trigger when applicable.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXqPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXqfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcIXqvoAEdu-e7JlHBQtRA" name="preCondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UapKCPoAEdu-e7JlHBQtRA" association="_UcRhK_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXq_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXqvoAEdu-e7JlHBQtRA">
+ <body>Specifies the precondition of the transition. It specifies the condition that should be verified before triggering the transition. This guard condition added to the source state will be evaluated as part of the precondition of the operation referred by the transition if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXrPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXrfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcIXrvoAEdu-e7JlHBQtRA" name="ProtocolStateMachine">
+ <ownedComment xmi:id="_UcIXr_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXrvoAEdu-e7JlHBQtRA">
+ <body>A protocol state machine is always defined in the context of a classifier. It specifies which operations of the classifier can be called in which state and under which condition, thus specifying the allowed call sequences on the classifier's operations. A protocol state machine presents the possible and permitted transitions on the instances of its context classifier, together with the operations which carry the transitions. In this manner, an instance lifecycle can be created for a classifier, by specifying the order in which the operations can be activated and the states through which an instance progresses during its existence.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcIXsPoAEdu-e7JlHBQtRA" name="classifier_context" constrainedElement="_UcIXrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXsfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXsPoAEdu-e7JlHBQtRA">
+ <body>A protocol state machine must only have a classifier context, not a behavioral feature context.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXsvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(not context->isEmpty( )) and specification->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXs_oAEdu-e7JlHBQtRA" name="protocol_transitions" constrainedElement="_UcIXrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXtPoAEdu-e7JlHBQtRA" annotatedElement="_UcIXs_oAEdu-e7JlHBQtRA">
+ <body>All transitions of a protocol state machine must be protocol transitions. (transitions as extended by the ProtocolStateMachines package)</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXtfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXtvoAEdu-e7JlHBQtRA" name="entry_exit_do" constrainedElement="_UcIXrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXt_oAEdu-e7JlHBQtRA" annotatedElement="_UcIXtvoAEdu-e7JlHBQtRA">
+ <body>The states of a protocol state machine cannot have entry, exit, or do activity actions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXuPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty())))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXufoAEdu-e7JlHBQtRA" name="deep_or_shallow_history" constrainedElement="_UcIXrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXuvoAEdu-e7JlHBQtRA" annotatedElement="_UcIXufoAEdu-e7JlHBQtRA">
+ <body>Protocol state machines cannot have deep or shallow history pseudostates.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXu_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies&#xA;((v.kind &lt;> #deepHistory) and (v.kind &lt;> #shallowHistory)))))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcIXvPoAEdu-e7JlHBQtRA" name="ports_connected" constrainedElement="_UcIXrvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXvfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXvPoAEdu-e7JlHBQtRA">
+ <body>If two ports are connected, then the protocol state machine of the required interface (if defined) must be conformant to the protocol state machine of the provided interface (if defined).</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcIXvvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcIXv_oAEdu-e7JlHBQtRA" general="_UaMdhfoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UcIXwPoAEdu-e7JlHBQtRA" name="conformance" type="_UcIXgfoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UcRhFfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcIXwfoAEdu-e7JlHBQtRA" annotatedElement="_UcIXwPoAEdu-e7JlHBQtRA">
+ <body>Conformance between protocol state machines.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcIXwvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcIXw_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UapJZvoAEdu-e7JlHBQtRA" name="State">
+ <ownedComment xmi:id="_UapJZ_oAEdu-e7JlHBQtRA" annotatedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <body>A state models a situation during which some (usually implicit) invariant condition holds.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcIXxPoAEdu-e7JlHBQtRA" annotatedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <body>The states of protocol state machines are exposed to the users of their context classifiers. A protocol state represents an exposed stable situation of its context classifier: when an instance of the classifier is not processing any operation, users of this instance can always know its state configuration.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJaPoAEdu-e7JlHBQtRA" name="submachine_states" constrainedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJafoAEdu-e7JlHBQtRA" annotatedElement="_UapJaPoAEdu-e7JlHBQtRA">
+ <body>Only submachine states can have connection point references.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJavoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isSubmachineState implies connection->notEmpty ( )</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJa_oAEdu-e7JlHBQtRA" name="destinations_or_sources_of_transitions" constrainedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJbPoAEdu-e7JlHBQtRA" annotatedElement="_UapJa_oAEdu-e7JlHBQtRA">
+ <body>The connection point references used as destinations/sources of transitions associated with a submachine state must be defined as entry/exit points in the submachine state machine.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJbfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.isSubmachineState implies (self.connection->forAll (cp |&#xD;&#xA;cp.entry->forAll (p | p.statemachine = self.submachine) and&#xD;&#xA;cp.exit->forAll (p | p.statemachine = self.submachine)))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJbvoAEdu-e7JlHBQtRA" name="submachine_or_regions" constrainedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJb_oAEdu-e7JlHBQtRA" annotatedElement="_UapJbvoAEdu-e7JlHBQtRA">
+ <body>A state is not allowed to have both a submachine and regions.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJcPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isComposite implies not isSubmachineState</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJcfoAEdu-e7JlHBQtRA" name="composite_states" constrainedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJcvoAEdu-e7JlHBQtRA" annotatedElement="_UapJcfoAEdu-e7JlHBQtRA">
+ <body>Only composite states can have entry or exit pseudostates defined.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJc_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>connectionPoint->notEmpty() implies isComoposite</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJdPoAEdu-e7JlHBQtRA" name="entry_or_exit" constrainedElement="_UapJZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJdfoAEdu-e7JlHBQtRA" annotatedElement="_UapJdPoAEdu-e7JlHBQtRA">
+ <body>Only entry or exit pseudostates can serve as connection points.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJdvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>connectionPoint->forAll(cp|cp.kind = #entry or cp.kind = #exit)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UapJd_oAEdu-e7JlHBQtRA" general="_UapKKvoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UapJePoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UapJefoAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UapJevoAEdu-e7JlHBQtRA" name="isComposite" type="_UdivYGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_UapJe_oAEdu-e7JlHBQtRA" annotatedElement="_UapJevoAEdu-e7JlHBQtRA">
+ <body>A state with isComposite=true is said to be a composite state. A composite state is a state that contains at least one region.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UapJfPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJffoAEdu-e7JlHBQtRA" name="isOrthogonal" type="_UdivYGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_UapJfvoAEdu-e7JlHBQtRA" annotatedElement="_UapJffoAEdu-e7JlHBQtRA">
+ <body>A state with isOrthogonal=true is said to be an orthogonal composite state. An orthogonal composite state contains two or more regions.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UapJf_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJgPoAEdu-e7JlHBQtRA" name="isSimple" type="_UdivYGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_UapJgfoAEdu-e7JlHBQtRA" annotatedElement="_UapJgPoAEdu-e7JlHBQtRA">
+ <body>A state with isSimple=true is said to be a simple state. A simple state does not have any regions and it does not refer to any submachine state machine.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UapJgvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJg_oAEdu-e7JlHBQtRA" name="isSubmachineState" type="_UdivYGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_UapJhPoAEdu-e7JlHBQtRA" annotatedElement="_UapJg_oAEdu-e7JlHBQtRA">
+ <body>A state with isSubmachineState=true is said to be a submachine state. Such a state refers to a state machine (submachine).</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UapJhfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJhvoAEdu-e7JlHBQtRA" name="submachine" type="_UaMdhfoAEdu-e7JlHBQtRA" association="_UayUDfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJh_oAEdu-e7JlHBQtRA" annotatedElement="_UapJhvoAEdu-e7JlHBQtRA">
+ <body>The state machine that is to be inserted in place of the (submachine) state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJiPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJifoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJivoAEdu-e7JlHBQtRA" name="connection" type="_UayTjvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UayUEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJi_oAEdu-e7JlHBQtRA" annotatedElement="_UapJivoAEdu-e7JlHBQtRA">
+ <body>The entry and exit connection points used in conjunction with this (submachine) state, i.e. as targets and sources, respectively, in the region with the submachine state. A connection point reference references the corresponding definition of a connection point pseudostate in the statemachine referenced by the submachinestate.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJjPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJjfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJjvoAEdu-e7JlHBQtRA" name="redefinedState" type="_UapJZvoAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UayUE_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJj_oAEdu-e7JlHBQtRA" annotatedElement="_UapJjvoAEdu-e7JlHBQtRA">
+ <body>The state of which this state is a redefinition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJkPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJkfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJkvoAEdu-e7JlHBQtRA" name="region" type="_UayTo_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UayUIfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJk_oAEdu-e7JlHBQtRA" annotatedElement="_UapJkvoAEdu-e7JlHBQtRA">
+ <body>The regions owned directly by the state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJlPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJlfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJlvoAEdu-e7JlHBQtRA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UayUMvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJl_oAEdu-e7JlHBQtRA" annotatedElement="_UapJlvoAEdu-e7JlHBQtRA">
+ <body>References the classifier in which context this element may be redefined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJmPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJmfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJmvoAEdu-e7JlHBQtRA" name="stateInvariant" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UayUOvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJm_oAEdu-e7JlHBQtRA" annotatedElement="_UapJmvoAEdu-e7JlHBQtRA">
+ <body>Specifies conditions that are always true when this state is the current state. In protocol state machines, state invariants are additional conditions to the preconditions of the outgoing transitions, and to the postcondition of the incoming transitions.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJnPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJnfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJnvoAEdu-e7JlHBQtRA" name="entry" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UayUQvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJn_oAEdu-e7JlHBQtRA" annotatedElement="_UapJnvoAEdu-e7JlHBQtRA">
+ <body>An optional behavior that is executed whenever this state is entered regardless of the transition taken to reach the state. If defined, entry actions are always executed to completion prior to any internal behavior or transitions performed within the state.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJoPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJofoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJovoAEdu-e7JlHBQtRA" name="exit" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UayURvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJo_oAEdu-e7JlHBQtRA" annotatedElement="_UapJovoAEdu-e7JlHBQtRA">
+ <body>An optional behavior that is executed whenever this state is exited regardless of which transition was taken out of the state. If defined, exit actions are always executed to completion only after all internal activities and transition actions have completed execution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJpPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJpfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJpvoAEdu-e7JlHBQtRA" name="doActivity" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UayUSvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJp_oAEdu-e7JlHBQtRA" annotatedElement="_UapJpvoAEdu-e7JlHBQtRA">
+ <body>An optional behavior that is executed while being in the state. The execution starts when this state is entered, and stops either by itself, or when the state is exited, whichever comes first.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJqPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJqfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJqvoAEdu-e7JlHBQtRA" name="connectionPoint" type="_UayTUPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UayUTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJq_oAEdu-e7JlHBQtRA" annotatedElement="_UapJqvoAEdu-e7JlHBQtRA">
+ <body>The entry and exit pseudostates of a composite state. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite states.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJrPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJrfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJrvoAEdu-e7JlHBQtRA" name="deferrableTrigger" type="_UZAK2PoAEdu-e7JlHBQtRA" aggregation="composite" association="_UayUU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJr_oAEdu-e7JlHBQtRA" annotatedElement="_UapJrvoAEdu-e7JlHBQtRA">
+ <body>A list of triggers that are candidates to be retained by the state machine if they trigger no transitions out of the state (not consumed). A deferred trigger is retained until the state machine reaches a state configuration where it is no longer deferred.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJsPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJsfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UapJsvoAEdu-e7JlHBQtRA" name="isSimple" isQuery="true" bodyCondition="_UapJtPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJs_oAEdu-e7JlHBQtRA" annotatedElement="_UapJsvoAEdu-e7JlHBQtRA">
+ <body>A simple state is a state without any regions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJtPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJsvoAEdu-e7JlHBQtRA _UapJgPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJtfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = region.isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJtvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJt_oAEdu-e7JlHBQtRA" name="isComposite" isQuery="true" bodyCondition="_UapJufoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJuPoAEdu-e7JlHBQtRA" annotatedElement="_UapJt_oAEdu-e7JlHBQtRA">
+ <body>A composite state is a state with at least one region.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJufoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJt_oAEdu-e7JlHBQtRA _UapJevoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJuvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = region.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJu_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJvPoAEdu-e7JlHBQtRA" name="isOrthogonal" isQuery="true" bodyCondition="_UapJvvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJvfoAEdu-e7JlHBQtRA" annotatedElement="_UapJvPoAEdu-e7JlHBQtRA">
+ <body>An orthogonal state is a composite state with at least 2 regions</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJvvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJvPoAEdu-e7JlHBQtRA _UapJffoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJv_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (region->size () > 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJwPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJwfoAEdu-e7JlHBQtRA" name="isSubmachineState" isQuery="true" bodyCondition="_UapJw_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJwvoAEdu-e7JlHBQtRA" annotatedElement="_UapJwfoAEdu-e7JlHBQtRA">
+ <body>Only submachine states can have a reference statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJw_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJwfoAEdu-e7JlHBQtRA _UapJg_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJxPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = submachine.notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJxfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJxvoAEdu-e7JlHBQtRA" name="redefinitionContext" isQuery="true" bodyCondition="_UapJyPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJx_oAEdu-e7JlHBQtRA" annotatedElement="_UapJxvoAEdu-e7JlHBQtRA">
+ <body>The redefinition context of a state is the nearest containing statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJyPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJxvoAEdu-e7JlHBQtRA _UapJlvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJyfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJyvoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJy_oAEdu-e7JlHBQtRA" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="_UT7dd_oAEdu-e7JlHBQtRA" bodyCondition="_UapJzfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJzPoAEdu-e7JlHBQtRA" annotatedElement="_UapJy_oAEdu-e7JlHBQtRA">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a state are properly related to the redefinition contexts of the specified state to allow this element to redefine the other. The containing region of a redefining state must redefine the containing region of the redefined state.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJzfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJy_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJzvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJz_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UapJ0PoAEdu-e7JlHBQtRA" name="redefined" type="_UapJZvoAEdu-e7JlHBQtRA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJ0foAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UapJ0_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ0voAEdu-e7JlHBQtRA" annotatedElement="_UapJ0foAEdu-e7JlHBQtRA">
+ <body>The query isConsistentWith() specifies that a redefining state is consistent with a redefined state provided that the redefining state is an extension of the redefined state: A simple state can be redefined (extended) to become a composite state (by adding a region) and a composite state can be redefined (extended) by adding regions and by adding vertices, states, and transitions to inherited regions. All states may add or replace entry, exit, and 'doActivity' actions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJ0_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJ0foAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ1PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJ1foAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UapJ1voAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapJ1_oAEdu-e7JlHBQtRA" name="containingStateMachine" isQuery="true" redefinedOperation="_UapKOfoAEdu-e7JlHBQtRA" bodyCondition="_UapJ2foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ2PoAEdu-e7JlHBQtRA" annotatedElement="_UapJ1_oAEdu-e7JlHBQtRA">
+ <body>The query containingStateMachine() returns the state machine that contains the state either directly or transitively.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJ2foAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapJ1_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ2voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = container.containingStateMachine()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapJ2_oAEdu-e7JlHBQtRA" type="_UaMdhfoAEdu-e7JlHBQtRA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UayTo_oAEdu-e7JlHBQtRA" name="Region">
+ <ownedComment xmi:id="_UayTpPoAEdu-e7JlHBQtRA" annotatedElement="_UayTo_oAEdu-e7JlHBQtRA">
+ <body>A region is an orthogonal part of either a composite state or a state machine. It contains states and transitions.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayTpfoAEdu-e7JlHBQtRA" name="initial_vertex" constrainedElement="_UayTo_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTpvoAEdu-e7JlHBQtRA" annotatedElement="_UayTpfoAEdu-e7JlHBQtRA">
+ <body>A region can have at most one initial vertex</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTp_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #initial)->size() &lt;= 1&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTqPoAEdu-e7JlHBQtRA" name="deep_history_vertex" constrainedElement="_UayTo_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTqfoAEdu-e7JlHBQtRA" annotatedElement="_UayTqPoAEdu-e7JlHBQtRA">
+ <body>A region can have at most one deep history vertex</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTqvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #deepHistory)->size() &lt;= 1&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTq_oAEdu-e7JlHBQtRA" name="shallow_history_vertex" constrainedElement="_UayTo_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTrPoAEdu-e7JlHBQtRA" annotatedElement="_UayTq_oAEdu-e7JlHBQtRA">
+ <body>A region can have at most one shallow history vertex</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTrfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.subvertex->select(v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #shallowHistory)->size() &lt;= 1&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UayTrvoAEdu-e7JlHBQtRA" name="owned" constrainedElement="_UayTo_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTr_oAEdu-e7JlHBQtRA" annotatedElement="_UayTrvoAEdu-e7JlHBQtRA">
+ <body>If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTsPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(stateMachine->notEmpty() implies state->isEmpty()) and (state->notEmpty() implies stateMachine->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UayTsfoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UayTsvoAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UayTs_oAEdu-e7JlHBQtRA" name="subvertex" type="_UapKKvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UayUCfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTtPoAEdu-e7JlHBQtRA" annotatedElement="_UayTs_oAEdu-e7JlHBQtRA">
+ <body>The set of vertices that are owned by this region.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTtfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTtvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTt_oAEdu-e7JlHBQtRA" name="transition" type="_UapJ3PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UayUCvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTuPoAEdu-e7JlHBQtRA" annotatedElement="_UayTt_oAEdu-e7JlHBQtRA">
+ <body>The set of transitions owned by the region. Note that internal transitions are owned by a region, but applies to the source state.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTufoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTuvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTu_oAEdu-e7JlHBQtRA" name="stateMachine" type="_UaMdhfoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UayUH_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTvPoAEdu-e7JlHBQtRA" annotatedElement="_UayTu_oAEdu-e7JlHBQtRA">
+ <body>The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTvfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTvvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTv_oAEdu-e7JlHBQtRA" name="state" type="_UapJZvoAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UayUIfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTwPoAEdu-e7JlHBQtRA" annotatedElement="_UayTv_oAEdu-e7JlHBQtRA">
+ <body>The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTwfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTwvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTw_oAEdu-e7JlHBQtRA" name="extendedRegion" type="_UayTo_oAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UayUIvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTxPoAEdu-e7JlHBQtRA" annotatedElement="_UayTw_oAEdu-e7JlHBQtRA">
+ <body>The region of which this region is an extension.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTxfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTxvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UayTx_oAEdu-e7JlHBQtRA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UayULvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTyPoAEdu-e7JlHBQtRA" annotatedElement="_UayTx_oAEdu-e7JlHBQtRA">
+ <body>References the classifier in which context this element may be redefined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UayTyfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UayTyvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UayTy_oAEdu-e7JlHBQtRA" name="redefinitionContext" isQuery="true" bodyCondition="_UayTzfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayTzPoAEdu-e7JlHBQtRA" annotatedElement="_UayTy_oAEdu-e7JlHBQtRA">
+ <body>The redefinition context of a region is the nearest containing statemachine</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayTzfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UayTy_oAEdu-e7JlHBQtRA _UayTx_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayTzvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UayTz_oAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UayT0PoAEdu-e7JlHBQtRA" name="isRedefinitionContextValid" isQuery="true" redefinedOperation="_UT7dd_oAEdu-e7JlHBQtRA" bodyCondition="_UayT0voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayT0foAEdu-e7JlHBQtRA" annotatedElement="_UayT0PoAEdu-e7JlHBQtRA">
+ <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a region are properly related to the redefinition contexts of the specified region to allow this element to redefine the other. The containing statemachine/state of a redefining region must redefine the containing statemachine/state of the redefined region.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayT0voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UayT0PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayT0_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UayT1PoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UayT1foAEdu-e7JlHBQtRA" name="redefined" type="_UayTo_oAEdu-e7JlHBQtRA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UayT1voAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UayT2PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayT1_oAEdu-e7JlHBQtRA" annotatedElement="_UayT1voAEdu-e7JlHBQtRA">
+ <body>The query isConsistentWith() specifies that a redefining region is consistent with a redefined region provided that the redefining region is an extension of the redefined region, i.e. it adds vertices and transitions and it redefines states and transitions of the redefined region.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayT2PoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UayT1voAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayT2foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UayT2voAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UayT2_oAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UayT3PoAEdu-e7JlHBQtRA" name="containingStateMachine" isQuery="true" bodyCondition="_UayT3voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UayT3foAEdu-e7JlHBQtRA" annotatedElement="_UayT3PoAEdu-e7JlHBQtRA">
+ <body>The operation containingStateMachine() returns the sate machine in which this Region is defined</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UayT3voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UayT3PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UayT3_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if stateMachine->isEmpty() &#xA;then&#xA;state.containingStateMachine()&#xA;else&#xA;stateMachine&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UayT4PoAEdu-e7JlHBQtRA" type="_UaMdhfoAEdu-e7JlHBQtRA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcRhEPoAEdu-e7JlHBQtRA" name="belongsToPSM" isQuery="true" bodyCondition="_UcRhEvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhEfoAEdu-e7JlHBQtRA" annotatedElement="_UcRhEPoAEdu-e7JlHBQtRA">
+ <body>The operation belongsToPSM () checks if the region belongs to a protocol state machine</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcRhEvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcRhEPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcRhE_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if not stateMachine->isEmpty() then&#xA;oclIsTypeOf(ProtocolStateMachine)&#xA;else if not state->isEmpty() then&#xA;state.container.belongsToPSM ()&#xA;else false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcRhFPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhFfoAEdu-e7JlHBQtRA" name="A_conformance_specificMachine" memberEnd="_UcIXwPoAEdu-e7JlHBQtRA _UcIXhPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhFvoAEdu-e7JlHBQtRA" name="A_protocol_port" memberEnd="_UcIXkvoAEdu-e7JlHBQtRA _UcRhF_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcRhF_oAEdu-e7JlHBQtRA" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_UcRhFvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhGPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhGfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhGvoAEdu-e7JlHBQtRA" name="A_postCondition_owningTransition" memberEnd="_UcIXovoAEdu-e7JlHBQtRA _UcRhG_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcRhG_oAEdu-e7JlHBQtRA" name="owningTransition" type="_UcIXlvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UcRhGvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhHPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhHfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhHvoAEdu-e7JlHBQtRA" name="A_protocol_interface" memberEnd="_UcIXjfoAEdu-e7JlHBQtRA _UcRhH_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcRhH_oAEdu-e7JlHBQtRA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UcRhHvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhIPoAEdu-e7JlHBQtRA" annotatedElement="_UcRhH_oAEdu-e7JlHBQtRA">
+ <body>Specifies the namespace in which the protocol state machine is defined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhIfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhIvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhI_oAEdu-e7JlHBQtRA" name="A_generalMachine_protocolConformance" memberEnd="_UcIXiPoAEdu-e7JlHBQtRA _UcRhJPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcRhJPoAEdu-e7JlHBQtRA" type="_UcIXgfoAEdu-e7JlHBQtRA" association="_UcRhI_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhJfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhJvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhJ_oAEdu-e7JlHBQtRA" name="A_referred_protocolTransition" memberEnd="_UcIXpvoAEdu-e7JlHBQtRA _UcRhKPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcRhKPoAEdu-e7JlHBQtRA" type="_UcIXlvoAEdu-e7JlHBQtRA" association="_UcRhJ_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhKfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhKvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhK_oAEdu-e7JlHBQtRA" name="A_preCondition_protocolTransition" memberEnd="_UcIXqvoAEdu-e7JlHBQtRA _UcRhLPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcRhLPoAEdu-e7JlHBQtRA" type="_UcIXlvoAEdu-e7JlHBQtRA" association="_UcRhK_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhLfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhLvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcRhMPoAEdu-e7JlHBQtRA" name="AssociationClass">
+ <ownedComment xmi:id="_UcRhMfoAEdu-e7JlHBQtRA" annotatedElement="_UcRhMPoAEdu-e7JlHBQtRA">
+ <body>A model element that has both association and class properties. An AssociationClass can be seen as an association that also has class properties, or as a class that also has association properties. It not only connects a set of classifiers but also defines a set of features that belong to the relationship itself and not to any of the classifiers.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcRhMvoAEdu-e7JlHBQtRA" name="cannot_be_defined" constrainedElement="_UcRhMPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhM_oAEdu-e7JlHBQtRA" annotatedElement="_UcRhMvoAEdu-e7JlHBQtRA">
+ <body>An AssociationClass cannot be defined between itself and something else.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcRhNPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcRhNfoAEdu-e7JlHBQtRA" general="_AwvxoGwNEdq7X4sGURiZYA"/>
+ <generalization xmi:id="_UcRhNvoAEdu-e7JlHBQtRA" general="_00owUGvdEdq4DLWZOhbdEA"/>
+ <ownedOperation xmi:id="_UcRhN_oAEdu-e7JlHBQtRA" name="allConnections" isQuery="true" bodyCondition="_UcRhOfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhOPoAEdu-e7JlHBQtRA" annotatedElement="_UcRhN_oAEdu-e7JlHBQtRA">
+ <body>The operation allConnections results in the set of all AssociationEnds of the Association.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcRhOfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcRhN_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcRhOvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = memberEnd->union ( self.parents ()->collect (p | p.allConnections () )</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcRhO_oAEdu-e7JlHBQtRA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhPPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhPfoAEdu-e7JlHBQtRA" value="2"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcRhR_oAEdu-e7JlHBQtRA" name="A_qualifier_associationEnd" memberEnd="_UcRhP_oAEdu-e7JlHBQtRA _UcRhQ_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcRhSPoAEdu-e7JlHBQtRA" name="TemplateSignature">
+ <ownedComment xmi:id="_UcRhSfoAEdu-e7JlHBQtRA" annotatedElement="_UcRhSPoAEdu-e7JlHBQtRA">
+ <body>A template signature bundles the set of formal template parameters for a templated element.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcRhSvoAEdu-e7JlHBQtRA" name="own_elements" constrainedElement="_UcRhSPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhS_oAEdu-e7JlHBQtRA" annotatedElement="_UcRhSvoAEdu-e7JlHBQtRA">
+ <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="_UcRhTPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcRhTfoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UcRhTvoAEdu-e7JlHBQtRA" name="parameter" type="_KxRzgGvuEdqG6fBIPwe-mw" isOrdered="true" association="_UclDTvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhT_oAEdu-e7JlHBQtRA" annotatedElement="_UcRhTvoAEdu-e7JlHBQtRA">
+ <body>The ordered set of all formal template parameters for this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhUPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhUfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcRhUvoAEdu-e7JlHBQtRA" name="ownedParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA _UcRhTvoAEdu-e7JlHBQtRA" association="_UclDUvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhU_oAEdu-e7JlHBQtRA" annotatedElement="_UcRhUvoAEdu-e7JlHBQtRA">
+ <body>The formal template parameters that are owned by this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhVPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhVfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcRhVvoAEdu-e7JlHBQtRA" name="template" type="_UcbSYvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UclDY_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhV_oAEdu-e7JlHBQtRA" annotatedElement="_UcRhVvoAEdu-e7JlHBQtRA">
+ <body>The element that owns this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhWPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhWfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_csVgUGvtEdqG6fBIPwe-mw" name="NamedElement" isAbstract="true">
+ <ownedComment xmi:id="_UUYJvvoAEdu-e7JlHBQtRA" annotatedElement="_csVgUGvtEdqG6fBIPwe-mw">
+ <body>A named element is an element in a model that may have a name.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcRhWvoAEdu-e7JlHBQtRA" annotatedElement="_csVgUGvtEdqG6fBIPwe-mw">
+ <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>
+ <ownedRule xmi:id="_UUYJv_oAEdu-e7JlHBQtRA" name="has_no_qualified_name" constrainedElement="_csVgUGvtEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUYJwPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJv_oAEdu-e7JlHBQtRA">
+ <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="_UVRhMvoAEdu-e7JlHBQtRA">
+ <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="_UUYJwvoAEdu-e7JlHBQtRA" name="has_qualified_name" constrainedElement="_csVgUGvtEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUYJw_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJwvoAEdu-e7JlHBQtRA">
+ <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="_UVRhM_oAEdu-e7JlHBQtRA">
+ <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="_UUYJxfoAEdu-e7JlHBQtRA" name="visibility_needs_ownership" constrainedElement="_csVgUGvtEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUYJxvoAEdu-e7JlHBQtRA" annotatedElement="_UUYJxfoAEdu-e7JlHBQtRA">
+ <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="_UVRhNPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>namespace->isEmpty() implies visibility->isEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUYJyPoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UUYJyfoAEdu-e7JlHBQtRA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUYJyvoAEdu-e7JlHBQtRA" annotatedElement="_UUYJyfoAEdu-e7JlHBQtRA">
+ <body>The name of the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVRhNfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhNvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJzfoAEdu-e7JlHBQtRA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUYJzvoAEdu-e7JlHBQtRA" annotatedElement="_UUYJzfoAEdu-e7JlHBQtRA">
+ <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="_UVRhN_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhOPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJ1foAEdu-e7JlHBQtRA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
+ <ownedComment xmi:id="_UUYJ1voAEdu-e7JlHBQtRA" annotatedElement="_UUYJ1foAEdu-e7JlHBQtRA">
+ <body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVRhOfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhOvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQj6PoAEdu-e7JlHBQtRA" name="clientDependency" type="_rEDGkGwKEdq7X4sGURiZYA" association="_UYQj_voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQj6foAEdu-e7JlHBQtRA" annotatedElement="_UYQj6PoAEdu-e7JlHBQtRA">
+ <body>Indicates the dependencies that reference the client.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj6voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj6_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJ0foAEdu-e7JlHBQtRA" name="namespace" type="_ZiwkoGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UUh61voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJ0voAEdu-e7JlHBQtRA" annotatedElement="_UUYJ0foAEdu-e7JlHBQtRA">
+ <body>Specifies the namespace that owns the NamedElement.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj7PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj7foAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcRhW_oAEdu-e7JlHBQtRA" name="nameExpression" type="_UcbSIPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UclDe_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhXPoAEdu-e7JlHBQtRA" annotatedElement="_UcRhW_oAEdu-e7JlHBQtRA">
+ <body>The string expression used to define the name of this named element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhXfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhXvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_o2CW4GwKEdq7X4sGURiZYA" name="createDependency">
+ <ownedComment xmi:id="_kZ5L8OwgEdqYHf-imTcTdw" annotatedElement="_o2CW4GwKEdq7X4sGURiZYA">
+ <body>Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_us8f4GwKEdq7X4sGURiZYA" type="_rEDGkGwKEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_vYdiEGwKEdq7X4sGURiZYA" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_z0MAYPIDEdulR8T2OJRyFQ" annotatedElement="_vYdiEGwKEdq7X4sGURiZYA">
+ <body>The supplier for the new dependency.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_z4f-wGwKEdq7X4sGURiZYA" name="getLabel" isQuery="true">
+ <ownedComment xmi:id="_pnOzgOwgEdqYHf-imTcTdw" annotatedElement="_z4f-wGwKEdq7X4sGURiZYA">
+ <body>Retrieves a localized label for this named element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1p5q8GwKEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_34WfgWwKEdq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_34WfgGwKEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5KmxkGwKEdq7X4sGURiZYA" name="getLabel" isQuery="true">
+ <ownedComment xmi:id="_rCa_IOwgEdqYHf-imTcTdw" annotatedElement="_5KmxkGwKEdq7X4sGURiZYA">
+ <body>Retrieves a label for this named element, localized if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_5KmxkWwKEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5KmxkmwKEdq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Kmxk2wKEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_6FwyQGwKEdq7X4sGURiZYA" name="localize" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_3OVzEPIDEdulR8T2OJRyFQ" annotatedElement="_6FwyQGwKEdq7X4sGURiZYA">
+ <body>Whether to localize the label.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Dww9MNlrEduDKPkA-0jJZg" name="createUsage">
+ <ownedComment xmi:id="_wQPHYNlrEduDKPkA-0jJZg" annotatedElement="_Dww9MNlrEduDKPkA-0jJZg">
+ <body>Creates a usage between this named element and the specified supplier, owned by this named element's nearest package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_phglkNlrEduDKPkA-0jJZg" type="_h18oENlrEduDKPkA-0jJZg" direction="return"/>
+ <ownedParameter xmi:id="_xcQ1oNlrEduDKPkA-0jJZg" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_05e0gPIDEdulR8T2OJRyFQ" annotatedElement="_xcQ1oNlrEduDKPkA-0jJZg">
+ <body>The supplier for the new usage.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJ7PoAEdu-e7JlHBQtRA" name="qualifiedName" isQuery="true" bodyCondition="_UUYJ7voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJ7foAEdu-e7JlHBQtRA" annotatedElement="_UUYJ7PoAEdu-e7JlHBQtRA">
+ <body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUYJ7voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJ7PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UUYJ7_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUYJ8PoAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJ2foAEdu-e7JlHBQtRA" name="allNamespaces" isQuery="true" bodyCondition="_UUYJ2_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJ2voAEdu-e7JlHBQtRA" annotatedElement="_UUYJ2foAEdu-e7JlHBQtRA">
+ <body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUYJ2_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJ2foAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhPfoAEdu-e7JlHBQtRA">
+ <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="_UUYJ3foAEdu-e7JlHBQtRA" type="_ZiwkoGwLEdq7X4sGURiZYA" isOrdered="true" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVRhPvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVRhP_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJ4PoAEdu-e7JlHBQtRA" name="isDistinguishableFrom" isQuery="true" bodyCondition="_UUYJ4voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJ4foAEdu-e7JlHBQtRA" annotatedElement="_UUYJ4PoAEdu-e7JlHBQtRA">
+ <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="_UUYJ4voAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJ4PoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhQPoAEdu-e7JlHBQtRA">
+ <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="_UUYJ5PoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUYJ5foAEdu-e7JlHBQtRA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedParameter xmi:id="_UUYJ5voAEdu-e7JlHBQtRA" name="ns" type="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJ5_oAEdu-e7JlHBQtRA" name="separator" isQuery="true" bodyCondition="_UUYJ6foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJ6PoAEdu-e7JlHBQtRA" annotatedElement="_UUYJ5_oAEdu-e7JlHBQtRA">
+ <body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUYJ6foAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJ5_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVRhQfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = '::'</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUYJ6_oAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UbFOQPoAEdu-e7JlHBQtRA" name="allOwningPackages" isQuery="true" bodyCondition="_UbFOQvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbFOQfoAEdu-e7JlHBQtRA" annotatedElement="_UbFOQPoAEdu-e7JlHBQtRA">
+ <body>The query allOwningPackages() returns all the directly or indirectly owning packages.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UbFOQvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UbFOQPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbFOQ_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.namespace->select(p | p.oclIsKindOf(Package))->union(p.allOwningPackages())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UbFORPoAEdu-e7JlHBQtRA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbFORfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbFORvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KxRzgGvuEdqG6fBIPwe-mw" name="TemplateParameter">
+ <ownedComment xmi:id="_UcRhX_oAEdu-e7JlHBQtRA" annotatedElement="_KxRzgGvuEdqG6fBIPwe-mw">
+ <body>A template parameter exposes a parameterable element as a formal template parameter of a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcRhYPoAEdu-e7JlHBQtRA" name="must_be_compatible" constrainedElement="_KxRzgGvuEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UcRhYfoAEdu-e7JlHBQtRA" annotatedElement="_UcRhYPoAEdu-e7JlHBQtRA">
+ <body>The default must be compatible with the formal template parameter.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcRhYvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>default->notEmpty() implies default->isCompatibleWith(parameteredElement)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcRhY_oAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UcRhZPoAEdu-e7JlHBQtRA" name="signature" type="_UcRhSPoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UclDUvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhZfoAEdu-e7JlHBQtRA" annotatedElement="_UcRhZPoAEdu-e7JlHBQtRA">
+ <body>The template signature that owns this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhZvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhZ_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSEPoAEdu-e7JlHBQtRA" name="parameteredElement" type="_UcbSefoAEdu-e7JlHBQtRA" association="_UclDYfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSEfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSEPoAEdu-e7JlHBQtRA">
+ <body>The element exposed by this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSEvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSE_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSFPoAEdu-e7JlHBQtRA" name="ownedParameteredElement" type="_UcbSefoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA _UcbSEPoAEdu-e7JlHBQtRA" association="_UclDZPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSFfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSFPoAEdu-e7JlHBQtRA">
+ <body>The element that is owned by this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSFvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSF_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSGPoAEdu-e7JlHBQtRA" name="default" type="_UcbSefoAEdu-e7JlHBQtRA" association="_UclDZfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSGfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSGPoAEdu-e7JlHBQtRA">
+ <body>The element that is the default for this formal template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSGvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSG_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSHPoAEdu-e7JlHBQtRA" name="ownedDefault" type="_UcbSefoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UcbSGPoAEdu-e7JlHBQtRA _UToizPoAEdu-e7JlHBQtRA" association="_UclDafoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSHfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSHPoAEdu-e7JlHBQtRA">
+ <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="_UcbSHvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSH_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcbSIPoAEdu-e7JlHBQtRA" name="StringExpression">
+ <ownedComment xmi:id="_UcbSIfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSIPoAEdu-e7JlHBQtRA">
+ <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="_UcbSIvoAEdu-e7JlHBQtRA" name="operands" constrainedElement="_UcbSIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSI_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSIvoAEdu-e7JlHBQtRA">
+ <body>All the operands of a StringExpression must be LiteralStrings</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSJPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>operand->forAll (op | op.oclIsKindOf (LiteralString))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcbSJfoAEdu-e7JlHBQtRA" name="subexpressions" constrainedElement="_UcbSIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSJvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSJfoAEdu-e7JlHBQtRA">
+ <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="_UcbSJ_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcbSKPoAEdu-e7JlHBQtRA" general="_UcbSYvoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UcbSKfoAEdu-e7JlHBQtRA" general="_UUYJ8foAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UcbSKvoAEdu-e7JlHBQtRA" name="subExpression" type="_UcbSIPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UclDYvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSK_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSKvoAEdu-e7JlHBQtRA">
+ <body>The StringExpressions that constitute this StringExpression.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSLPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSLfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSLvoAEdu-e7JlHBQtRA" name="owningExpression" type="_UcbSIPoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UclDYvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSL_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSLvoAEdu-e7JlHBQtRA">
+ <body>The string expression of which this expression is a substring.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSMPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSMfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UcbSMvoAEdu-e7JlHBQtRA" name="stringValue" isQuery="true" redefinedOperation="_UT7dovoAEdu-e7JlHBQtRA" bodyCondition="_UcbSNPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSM_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSMvoAEdu-e7JlHBQtRA">
+ <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="_UcbSNPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSMvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSNfoAEdu-e7JlHBQtRA">
+ <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="_UcbSNvoAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcbSN_oAEdu-e7JlHBQtRA" name="TemplateBinding">
+ <ownedComment xmi:id="_UcbSOPoAEdu-e7JlHBQtRA" annotatedElement="_UcbSN_oAEdu-e7JlHBQtRA">
+ <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="_UcbSOfoAEdu-e7JlHBQtRA" name="parameter_substitution_formal" constrainedElement="_UcbSN_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSOvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSOfoAEdu-e7JlHBQtRA">
+ <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="_UcbSO_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>parameterSubstitution->forAll(b | template.parameter->includes(b.formal))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcbSPPoAEdu-e7JlHBQtRA" name="one_parameter_substitution" constrainedElement="_UcbSN_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSPfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSPPoAEdu-e7JlHBQtRA">
+ <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="_UcbSPvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcbSP_oAEdu-e7JlHBQtRA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
+ <ownedAttribute xmi:id="_UcbSQPoAEdu-e7JlHBQtRA" name="boundElement" type="_UcbSYvoAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA _UToivfoAEdu-e7JlHBQtRA" association="_UclDU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSQfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSQPoAEdu-e7JlHBQtRA">
+ <body>The element that is bound by this binding.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSQvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSQ_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSRPoAEdu-e7JlHBQtRA" name="signature" type="_UcRhSPoAEdu-e7JlHBQtRA" subsettedProperty="_UToiwfoAEdu-e7JlHBQtRA" association="_UclDWPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSRfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSRPoAEdu-e7JlHBQtRA">
+ <body>The template signature for the template that is the target of the binding.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSRvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSR_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSSPoAEdu-e7JlHBQtRA" name="parameterSubstitution" type="_UcbSTPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UclDXPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSSfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSSPoAEdu-e7JlHBQtRA">
+ <body>The parameter substitutions owned by this template binding.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSSvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSS_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcbSTPoAEdu-e7JlHBQtRA" name="TemplateParameterSubstitution">
+ <ownedComment xmi:id="_UcbSTfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSTPoAEdu-e7JlHBQtRA">
+ <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="_UcbSTvoAEdu-e7JlHBQtRA" name="must_be_compatible" constrainedElement="_UcbSTPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbST_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSTvoAEdu-e7JlHBQtRA">
+ <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="_UcbSUPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UcbSUfoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UcbSUvoAEdu-e7JlHBQtRA" name="formal" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_UclDVPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSU_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSUvoAEdu-e7JlHBQtRA">
+ <body>The formal template parameter that is associated with this substitution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSVPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSVfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSVvoAEdu-e7JlHBQtRA" name="templateBinding" type="_UcbSN_oAEdu-e7JlHBQtRA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UclDXPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSV_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSVvoAEdu-e7JlHBQtRA">
+ <body>The optional bindings from this element to templates.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSWPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSWfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSWvoAEdu-e7JlHBQtRA" name="actual" type="_UcbSefoAEdu-e7JlHBQtRA" association="_UclDXfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSW_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSWvoAEdu-e7JlHBQtRA">
+ <body>The elements that are the actual parameters for this substitution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSXPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSXfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSXvoAEdu-e7JlHBQtRA" name="ownedActual" type="_UcbSefoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UcbSWvoAEdu-e7JlHBQtRA _UToizPoAEdu-e7JlHBQtRA" association="_UclDbfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSX_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSXvoAEdu-e7JlHBQtRA">
+ <body>The actual parameters that are owned by this substitution.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSYPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSYfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcbSYvoAEdu-e7JlHBQtRA" name="TemplateableElement" isAbstract="true">
+ <ownedComment xmi:id="_UcbSY_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSYvoAEdu-e7JlHBQtRA">
+ <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="_UcbSZPoAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UcbSZfoAEdu-e7JlHBQtRA" name="templateBinding" type="_UcbSN_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UclDU_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSZvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSZfoAEdu-e7JlHBQtRA">
+ <body>The optional bindings from this element to templates.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSZ_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSaPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSafoAEdu-e7JlHBQtRA" name="ownedTemplateSignature" type="_UcRhSPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UclDY_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSavoAEdu-e7JlHBQtRA" annotatedElement="_UcbSafoAEdu-e7JlHBQtRA">
+ <body>The optional template signature specifying the formal template parameters.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSa_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSbPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UcbSbfoAEdu-e7JlHBQtRA" name="parameterableElements" isQuery="true" bodyCondition="_UcbSb_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSbvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSbfoAEdu-e7JlHBQtRA">
+ <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="_UcbSb_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSbfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbScPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = allOwnedElements->select(oclIsKindOf(ParameterableElement))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbScfoAEdu-e7JlHBQtRA" type="_UcbSefoAEdu-e7JlHBQtRA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbScvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSc_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcbSdPoAEdu-e7JlHBQtRA" name="isTemplate" isQuery="true" bodyCondition="_UcbSdvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSdfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSdPoAEdu-e7JlHBQtRA">
+ <body>The query isTemplate() returns whether this templateable element is actually a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcbSdvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSdPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSd_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = ownedTemplateSignature->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbSePoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcbSefoAEdu-e7JlHBQtRA" name="ParameterableElement" isAbstract="true">
+ <ownedComment xmi:id="_UcbSevoAEdu-e7JlHBQtRA" annotatedElement="_UcbSefoAEdu-e7JlHBQtRA">
+ <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="_UcbSe_oAEdu-e7JlHBQtRA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UcbSfPoAEdu-e7JlHBQtRA" name="templateParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_UclDYfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSffoAEdu-e7JlHBQtRA" annotatedElement="_UcbSfPoAEdu-e7JlHBQtRA">
+ <body>The template parameter that exposes this element as a formal parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSfvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSf_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSgPoAEdu-e7JlHBQtRA" name="owningTemplateParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA _UcbSfPoAEdu-e7JlHBQtRA" association="_UclDZPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSgfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSgPoAEdu-e7JlHBQtRA">
+ <body>The formal template parameter that owns this element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSgvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSg_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UcbShPoAEdu-e7JlHBQtRA" name="isCompatibleWith" isQuery="true" bodyCondition="_UcbShvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbShfoAEdu-e7JlHBQtRA" annotatedElement="_UcbShPoAEdu-e7JlHBQtRA">
+ <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="_UcbShvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbShPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSh_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = p->oclIsKindOf(self.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbSiPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UcbSifoAEdu-e7JlHBQtRA" name="p" type="_UcbSefoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcbSivoAEdu-e7JlHBQtRA" name="isTemplateParameter" isQuery="true" bodyCondition="_UcbSjPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSi_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSivoAEdu-e7JlHBQtRA">
+ <body>The query isTemplateParameter() determines if this parameterable element is exposed as a formal template parameter.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcbSjPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSivoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSjfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = templateParameter->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbSjvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Jp_1oGveEdq4DLWZOhbdEA" name="Property">
+ <ownedComment xmi:id="_UUFOavoAEdu-e7JlHBQtRA" annotatedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <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>
+ <ownedComment xmi:id="_UYZt5_oAEdu-e7JlHBQtRA" annotatedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <body>A property represents a set of instances that are owned by a containing classifier instance.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UZc3VPoAEdu-e7JlHBQtRA" annotatedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <body>A property has the capability of being a deployment target in a deployment relationship. This enables modeling the deployment to hierarchical nodes that have properties functioning as internal parts.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcRhPvoAEdu-e7JlHBQtRA" annotatedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <body>Property represents a declared state of one or more instances in terms of a named relationship to a value or values. When a property is an attribute of a classifier, the value or values are related to the instance of the classifier by being held in slots of the instance. When a property is an association end, the value or values are related to the instance or instances at the other end(s) of the association. The range of valid values represented by the property can be controlled by setting the property's type.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcbSj_oAEdu-e7JlHBQtRA" annotatedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <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="_UUFOa_oAEdu-e7JlHBQtRA" name="multiplicity_of_composite" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFObPoAEdu-e7JlHBQtRA" annotatedElement="_UUFOa_oAEdu-e7JlHBQtRA">
+ <body>A multiplicity of a composite aggregation must not have an upper bound greater than 1.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWwu8_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOa_oAEdu-e7JlHBQtRA">
+ <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="_UWwu9PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUFObvoAEdu-e7JlHBQtRA" name="subsetting_context_conforms" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFOb_oAEdu-e7JlHBQtRA" annotatedElement="_UUFObvoAEdu-e7JlHBQtRA">
+ <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="_UWwu9foAEdu-e7JlHBQtRA">
+ <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="_UUFOcfoAEdu-e7JlHBQtRA" name="redefined_property_inherited" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFOcvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOcfoAEdu-e7JlHBQtRA">
+ <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="_UWwu9voAEdu-e7JlHBQtRA">
+ <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="_UUFOdPoAEdu-e7JlHBQtRA" name="subsetting_rules" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFOdfoAEdu-e7JlHBQtRA" annotatedElement="_UUFOdPoAEdu-e7JlHBQtRA">
+ <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="_UWwu9_oAEdu-e7JlHBQtRA">
+ <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="_UUFOd_oAEdu-e7JlHBQtRA" name="navigable_readonly" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFOePoAEdu-e7JlHBQtRA" annotatedElement="_UUFOd_oAEdu-e7JlHBQtRA">
+ <body>Only a navigable property can be marked as readOnly.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwu-PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isReadOnly implies isNavigable()</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUFOevoAEdu-e7JlHBQtRA" name="derived_union_is_derived" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFOe_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOevoAEdu-e7JlHBQtRA">
+ <body>A derived union is derived.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwu-foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isDerivedUnion implies isDerived</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UWwu-voAEdu-e7JlHBQtRA" name="derived_union_is_read_only" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UWwu-_oAEdu-e7JlHBQtRA" annotatedElement="_UWwu-voAEdu-e7JlHBQtRA">
+ <body>A derived union is read only.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwu_PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>isDerivedUnion implies isReadOnly</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUFOffoAEdu-e7JlHBQtRA" name="subsetted_property_names" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUFOfvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOffoAEdu-e7JlHBQtRA">
+ <body>A property may not subset a property with the same name.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwu_foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZc3VfoAEdu-e7JlHBQtRA" name="deployment_target" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZc3VvoAEdu-e7JlHBQtRA" annotatedElement="_UZc3VfoAEdu-e7JlHBQtRA">
+ <body>A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZc3V_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UcbSkPoAEdu-e7JlHBQtRA" name="binding_to_attribute" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UcbSkfoAEdu-e7JlHBQtRA" annotatedElement="_UcbSkPoAEdu-e7JlHBQtRA">
+ <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="_UcbSkvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(isAttribute(self) and (templateParameterSubstitution->notEmpty())&#xD;&#xA; implies (templateParameterSubstitution->forAll(ts | isAttribute(ts.formal)))</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYZt6PoAEdu-e7JlHBQtRA" general="_UYZt_voAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UZc3WPoAEdu-e7JlHBQtRA" general="_UZc3OvoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UUFOgPoAEdu-e7JlHBQtRA" general="_UT7dg_oAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UcbSlPoAEdu-e7JlHBQtRA" general="_UcbSYvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UUFOi_oAEdu-e7JlHBQtRA" name="isDerived" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUFOjPoAEdu-e7JlHBQtRA" annotatedElement="_UUFOi_oAEdu-e7JlHBQtRA">
+ <body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWwu_voAEdu-e7JlHBQtRA" annotatedElement="_UUFOi_oAEdu-e7JlHBQtRA">
+ <body>Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWwu__oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOgfoAEdu-e7JlHBQtRA" name="isReadOnly" type="_UdivYGvsEdqG6fBIPwe-mw" redefinedProperty="_UWnlCvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOgvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOgfoAEdu-e7JlHBQtRA">
+ <body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWwvAPoAEdu-e7JlHBQtRA" annotatedElement="_UUFOgfoAEdu-e7JlHBQtRA">
+ <body>If true, the attribute may only be read, and not written.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWwvAfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOjvoAEdu-e7JlHBQtRA" name="isDerivedUnion" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUFOj_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOjvoAEdu-e7JlHBQtRA">
+ <body>Specifies whether the property is derived as the union of all of the properties that are constrained to subset it.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UWwvAvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOhPoAEdu-e7JlHBQtRA" name="default" type="_aAyVgGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUFOhfoAEdu-e7JlHBQtRA" annotatedElement="_UUFOhPoAEdu-e7JlHBQtRA">
+ <body>Specifies a String that represents a value to be used when no argument is supplied for the Property.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWwvA_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOhPoAEdu-e7JlHBQtRA">
+ <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>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvBPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvBfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWwvBvoAEdu-e7JlHBQtRA" name="aggregation" type="_B3q9cGwNEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UWwvB_oAEdu-e7JlHBQtRA" annotatedElement="_UWwvBvoAEdu-e7JlHBQtRA">
+ <body>Specifies the kind of aggregation that applies to the Property.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UWwvCPoAEdu-e7JlHBQtRA" instance="_UXNbFPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOiPoAEdu-e7JlHBQtRA" name="isComposite" type="_UdivYGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUFOifoAEdu-e7JlHBQtRA" annotatedElement="_UUFOiPoAEdu-e7JlHBQtRA">
+ <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWwvCfoAEdu-e7JlHBQtRA" annotatedElement="_UUFOiPoAEdu-e7JlHBQtRA">
+ <body>This is a derived value, indicating whether the aggregation of the Property is composite or not.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UUFOivoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOkfoAEdu-e7JlHBQtRA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA" association="_UUh6ZPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOkvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOkfoAEdu-e7JlHBQtRA">
+ <body>References the Class that owns the Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvCvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvC_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOmfoAEdu-e7JlHBQtRA" name="redefinedProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UUh6a_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOmvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOmfoAEdu-e7JlHBQtRA">
+ <body>References the properties that are redefined by this property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvDPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvDfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOlfoAEdu-e7JlHBQtRA" name="owningAssociation" type="_AwvxoGwNEdq7X4sGURiZYA" subsettedProperty="_UUFOqfoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA" association="_UUh6ZvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOlvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOlfoAEdu-e7JlHBQtRA">
+ <body>References the owning association of this property, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvDvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvD_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOpfoAEdu-e7JlHBQtRA" name="datatype" type="__1ap4HLzEdqziYxiZo0YtA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA _UUh6aPoAEdu-e7JlHBQtRA" association="_UUh6gPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOpvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOpfoAEdu-e7JlHBQtRA">
+ <body>The DataType that owns this Property.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvEPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvEfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UWwvEvoAEdu-e7JlHBQtRA" name="defaultValue" type="_UT7dj_oAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXXMIfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWwvE_oAEdu-e7JlHBQtRA" annotatedElement="_UWwvEvoAEdu-e7JlHBQtRA">
+ <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="_UWwvFPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvFfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOofoAEdu-e7JlHBQtRA" name="opposite" type="_Jp_1oGveEdq4DLWZOhbdEA" isDerived="true" association="_UUh6c_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOovoAEdu-e7JlHBQtRA" annotatedElement="_UUFOofoAEdu-e7JlHBQtRA">
+ <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="_UWwvFvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvF_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOnfoAEdu-e7JlHBQtRA" name="subsettedProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_UUh6b_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOnvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOnfoAEdu-e7JlHBQtRA">
+ <body>References the properties of which this property is constrained to be a subset.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvGPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvGfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUFOqfoAEdu-e7JlHBQtRA" name="association" type="_AwvxoGwNEdq7X4sGURiZYA" association="_UUh6pfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOqvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOqfoAEdu-e7JlHBQtRA">
+ <body>References the association of which this property is a member, if any.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvGvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvG_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcRhP_oAEdu-e7JlHBQtRA" name="qualifier" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UcRhR_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhQPoAEdu-e7JlHBQtRA" annotatedElement="_UcRhP_oAEdu-e7JlHBQtRA">
+ <body>An optional list of ordered qualifier attributes for the end. If the list is empty, then the Association is not qualified.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhQfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhQvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcRhQ_oAEdu-e7JlHBQtRA" name="associationEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_UToi0PoAEdu-e7JlHBQtRA" association="_UcRhR_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcRhRPoAEdu-e7JlHBQtRA" annotatedElement="_UcRhQ_oAEdu-e7JlHBQtRA">
+ <body>Designates the optional association end that owns a qualifier attribute.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcRhRfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcRhRvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_oLamMFYJEdqrn7iZ0eqieg" name="getDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_vkrSwFYJEdqrn7iZ0eqieg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uJsjsVYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uJsjsFYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_f-9wMGXCEdqEJs8umHJc9g" name="isSetDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_iAwBwGXCEdqEJs8umHJc9g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vbp60FYjEdqB6vblk3tuMA" name="setDefault" visibility="protected">
+ <ownedParameter xmi:id="_xXxpQFYjEdqB6vblk3tuMA" name="newDefault" visibility="protected" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_d8dDkFYkEdqB6vblk3tuMA" name="setIsComposite" visibility="protected">
+ <ownedParameter xmi:id="_gOfXoFYkEdqB6vblk3tuMA" name="newIsComposite" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_sJdfYFYlEdqB6vblk3tuMA" name="setOpposite" visibility="protected">
+ <ownedParameter xmi:id="_tesM8FYlEdqB6vblk3tuMA" name="newOpposite" visibility="protected" type="_Jp_1oGveEdq4DLWZOhbdEA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kGtosGXCEdqEJs8umHJc9g" name="unsetDefault" visibility="protected"/>
+ <ownedOperation xmi:id="_SzqSgK6-EdqjppZik4kD8A" name="setIsNavigable">
+ <ownedComment xmi:id="_7VJRoOweEdqYHf-imTcTdw" annotatedElement="_SzqSgK6-EdqjppZik4kD8A">
+ <body>Sets the navigability of this property as indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_VzI7YK6-EdqjppZik4kD8A" name="isNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_r9T40PIFEdulR8T2OJRyFQ" annotatedElement="_VzI7YK6-EdqjppZik4kD8A">
+ <body>The new navigability.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bAUx8K6-EdqjppZik4kD8A" name="getOtherEnd">
+ <ownedComment xmi:id="__u7VUOweEdqYHf-imTcTdw" annotatedElement="_bAUx8K6-EdqjppZik4kD8A">
+ <body>Retrieves the other end of the (binary) association in which this property is a member end.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_eTnusK6-EdqjppZik4kD8A" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6Sxka6-EdqjppZik4kD8A" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6SxkK6-EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lYUggK6-EdqjppZik4kD8A" name="setBooleanDefaultValue">
+ <ownedComment xmi:id="_GdHroOwfEdqYHf-imTcTdw" annotatedElement="_lYUggK6-EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified Boolean value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_4BKD4K6-EdqjppZik4kD8A" name="value" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_pKCf8PIFEdulR8T2OJRyFQ" annotatedElement="_4BKD4K6-EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_94N94K6-EdqjppZik4kD8A" name="setIntegerDefaultValue">
+ <ownedComment xmi:id="_Js2XAOwfEdqYHf-imTcTdw" annotatedElement="_94N94K6-EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified integer value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_94N94a6-EdqjppZik4kD8A" name="value" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_pv4_APIFEdulR8T2OJRyFQ" annotatedElement="_94N94a6-EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GW7PkK6_EdqjppZik4kD8A" name="setStringDefaultValue">
+ <ownedComment xmi:id="_LLBlMOwfEdqYHf-imTcTdw" annotatedElement="_GW7PkK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified string value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GW7Pka6_EdqjppZik4kD8A" name="value" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_syWqcPIFEdulR8T2OJRyFQ" annotatedElement="_GW7Pka6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_NXJxEK6_EdqjppZik4kD8A" name="setUnlimitedNaturalDefaultValue">
+ <ownedComment xmi:id="_NTqssOwfEdqYHf-imTcTdw" annotatedElement="_NXJxEK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified unlimited natural value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NXJxEa6_EdqjppZik4kD8A" name="value" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_tZjNUPIFEdulR8T2OJRyFQ" annotatedElement="_NXJxEa6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WU_10K6_EdqjppZik4kD8A" name="setNullDefaultValue">
+ <ownedComment xmi:id="_O5cXsOwfEdqYHf-imTcTdw" annotatedElement="_WU_10K6_EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the null value.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFOxvoAEdu-e7JlHBQtRA" name="isAttribute" isQuery="true" bodyCondition="_UUFOyPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOx_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOxvoAEdu-e7JlHBQtRA">
+ <body>The query isAttribute() is true if the Property is defined as an attribute of some classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUFOyPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFOxvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvHPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = Classifier.allInstances->exists(c | c.attribute->includes(p))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUFOyvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUFOy_oAEdu-e7JlHBQtRA" name="p" type="_Jp_1oGveEdq4DLWZOhbdEA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFOrfoAEdu-e7JlHBQtRA" name="opposite" isQuery="true" bodyCondition="_UUFOr_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOrvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOrfoAEdu-e7JlHBQtRA">
+ <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="_UUFOr_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFOrfoAEdu-e7JlHBQtRA _UUFOofoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvHfoAEdu-e7JlHBQtRA">
+ <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="_UUFOsfoAEdu-e7JlHBQtRA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UWwvHvoAEdu-e7JlHBQtRA" name="isComposite" isQuery="true" bodyCondition="_UWwvIPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UWwvH_oAEdu-e7JlHBQtRA" annotatedElement="_UWwvHvoAEdu-e7JlHBQtRA">
+ <body>The value of isComposite is true only if aggregation is composite.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UWwvIPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UWwvHvoAEdu-e7JlHBQtRA _UUFOiPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvIfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (self.aggregation = #composite)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UWwvIvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFOsvoAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" precondition="_UUFOtPoAEdu-e7JlHBQtRA" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UUFOtvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOs_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOsvoAEdu-e7JlHBQtRA">
+ <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="_UUFOtPoAEdu-e7JlHBQtRA" constrainedElement="_UUFOsvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvI_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUFOtvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFOsvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvJPoAEdu-e7JlHBQtRA">
+ <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="_UUFOuPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUFOufoAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFOuvoAEdu-e7JlHBQtRA" name="subsettingContext" isQuery="true" bodyCondition="_UUFOvPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOu_oAEdu-e7JlHBQtRA" annotatedElement="_UUFOuvoAEdu-e7JlHBQtRA">
+ <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="_UUFOvPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFOuvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvJfoAEdu-e7JlHBQtRA">
+ <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="_UUFOvvoAEdu-e7JlHBQtRA" type="_ynRtoGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWwvJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWwvJ_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUFOwfoAEdu-e7JlHBQtRA" name="isNavigable" isQuery="true" bodyCondition="_UUFOw_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUFOwvoAEdu-e7JlHBQtRA" annotatedElement="_UUFOwfoAEdu-e7JlHBQtRA">
+ <body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUFOw_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUFOwfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWwvKPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = not classifier->isEmpty() or association.owningAssociation.navigableOwnedEnd->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUFOxfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcbSlfoAEdu-e7JlHBQtRA" name="isCompatibleWith" isQuery="true" redefinedOperation="_UcbShPoAEdu-e7JlHBQtRA" bodyCondition="_UcbSl_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSlvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSlfoAEdu-e7JlHBQtRA">
+ <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="_UcbSl_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSlfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSmPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbSmfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UcbSmvoAEdu-e7JlHBQtRA" name="p" type="_UcbSefoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UT7dj_oAEdu-e7JlHBQtRA" name="ValueSpecification" isAbstract="true">
+ <ownedComment xmi:id="_UT7dkPoAEdu-e7JlHBQtRA" annotatedElement="_UT7dj_oAEdu-e7JlHBQtRA">
+ <body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcbSm_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dj_oAEdu-e7JlHBQtRA">
+ <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="_UT7dkfoAEdu-e7JlHBQtRA" general="_UT7diPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UT7dkvoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <ownedOperation xmi:id="_UT7dk_oAEdu-e7JlHBQtRA" name="isComputable" isQuery="true" bodyCondition="_UT7dlfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dlPoAEdu-e7JlHBQtRA" annotatedElement="_UT7dk_oAEdu-e7JlHBQtRA">
+ <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="_UT7dlfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dk_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa5_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7dl_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UT7dmPoAEdu-e7JlHBQtRA" name="integerValue" isQuery="true" bodyCondition="_UT7dmvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dmfoAEdu-e7JlHBQtRA" annotatedElement="_UT7dmPoAEdu-e7JlHBQtRA">
+ <body>The query integerValue() gives a single Integer value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UT7dmvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dmPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa6PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7dnPoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UT7dnfoAEdu-e7JlHBQtRA" name="booleanValue" isQuery="true" bodyCondition="_UT7dn_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dnvoAEdu-e7JlHBQtRA" annotatedElement="_UT7dnfoAEdu-e7JlHBQtRA">
+ <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UT7dn_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dnfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa6foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7dofoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UT7dovoAEdu-e7JlHBQtRA" name="stringValue" isQuery="true" bodyCondition="_UT7dpPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7do_oAEdu-e7JlHBQtRA" annotatedElement="_UT7dovoAEdu-e7JlHBQtRA">
+ <body>The query stringValue() gives a single String value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UT7dpPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dovoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa6voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7dpvoAEdu-e7JlHBQtRA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UT7dp_oAEdu-e7JlHBQtRA" name="unlimitedValue" isQuery="true" bodyCondition="_UT7dqfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7dqPoAEdu-e7JlHBQtRA" annotatedElement="_UT7dp_oAEdu-e7JlHBQtRA">
+ <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UT7dqfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7dp_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa6_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = Set{}</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7dq_oAEdu-e7JlHBQtRA" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UT7drPoAEdu-e7JlHBQtRA" name="isNull" isQuery="true" bodyCondition="_UT7drvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UT7drfoAEdu-e7JlHBQtRA" annotatedElement="_UT7drPoAEdu-e7JlHBQtRA">
+ <body>The query isNull() returns true when it can be computed that the value is null.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UT7drvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UT7drPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXNa7PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UT7dsPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcbSnfoAEdu-e7JlHBQtRA" name="isCompatibleWith" isQuery="true" redefinedOperation="_UcbShPoAEdu-e7JlHBQtRA" bodyCondition="_UcbSn_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSnvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSnfoAEdu-e7JlHBQtRA">
+ <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="_UcbSn_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSnfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSoPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbSofoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UcbSovoAEdu-e7JlHBQtRA" name="p" type="_UcbSefoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_M4X2IGveEdq4DLWZOhbdEA" name="Operation">
+ <ownedComment xmi:id="_UUO_ZPoAEdu-e7JlHBQtRA" annotatedElement="_M4X2IGveEdq4DLWZOhbdEA">
+ <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>
+ <ownedComment xmi:id="_UZALEPoAEdu-e7JlHBQtRA" annotatedElement="_M4X2IGveEdq4DLWZOhbdEA">
+ <body>An operation may invoke both the execution of method behaviors as well as other behavioral responses.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcbSo_oAEdu-e7JlHBQtRA" annotatedElement="_M4X2IGveEdq4DLWZOhbdEA">
+ <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>
+ <ownedRule xmi:id="_UUO_aPoAEdu-e7JlHBQtRA" name="at_most_one_return" constrainedElement="_M4X2IGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUO_afoAEdu-e7JlHBQtRA" annotatedElement="_UUO_aPoAEdu-e7JlHBQtRA">
+ <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="_UW6f8PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUO_ZfoAEdu-e7JlHBQtRA" name="only_body_for_query" constrainedElement="_M4X2IGveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UUO_ZvoAEdu-e7JlHBQtRA" annotatedElement="_UUO_ZfoAEdu-e7JlHBQtRA">
+ <body>A bodyCondition can only be specified for a query operation.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6f8foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>bodyCondition->notEmpty() implies isQuery</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UUO_a_oAEdu-e7JlHBQtRA" general="_rHT3YKOsEdqi_5gqUMOQtA"/>
+ <generalization xmi:id="_UcbSpPoAEdu-e7JlHBQtRA" general="_UcbSefoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UcbSpfoAEdu-e7JlHBQtRA" general="_UcbSYvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UUO_bPoAEdu-e7JlHBQtRA" name="isQuery" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UUO_bfoAEdu-e7JlHBQtRA" annotatedElement="_UUO_bPoAEdu-e7JlHBQtRA">
+ <body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UW6f8voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_b_oAEdu-e7JlHBQtRA" name="isOrdered" type="_UdivYGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUO_cPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_b_oAEdu-e7JlHBQtRA">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6f8_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_b_oAEdu-e7JlHBQtRA">
+ <body>Specifies whether the return parameter is ordered or not, if present.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UW6f9PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_cvoAEdu-e7JlHBQtRA" name="isUnique" type="_UdivYGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUO_c_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_cvoAEdu-e7JlHBQtRA">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6f9foAEdu-e7JlHBQtRA" annotatedElement="_UUO_cvoAEdu-e7JlHBQtRA">
+ <body>Specifies whether the return parameter is unique or not, if present.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UW6f9voAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_dfoAEdu-e7JlHBQtRA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUO_dvoAEdu-e7JlHBQtRA" annotatedElement="_UUO_dfoAEdu-e7JlHBQtRA">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6f9_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_dfoAEdu-e7JlHBQtRA">
+ <body>Specifies the lower multiplicity of the return parameter, if present.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6f-PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6f-foAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_UW6f-voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_evoAEdu-e7JlHBQtRA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" isDerived="true">
+ <ownedComment xmi:id="_UUO_e_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_evoAEdu-e7JlHBQtRA">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6f-_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_evoAEdu-e7JlHBQtRA">
+ <body>Specifies the upper multiplicity of the return parameter, if present.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6f_PoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6f_foAEdu-e7JlHBQtRA"/>
+ <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6f_voAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_f_oAEdu-e7JlHBQtRA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA" association="_UUh6ZfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_gPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_f_oAEdu-e7JlHBQtRA">
+ <body>The class that owns the operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6f__oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gAPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_l_oAEdu-e7JlHBQtRA" name="precondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UUh67PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UW6gAfoAEdu-e7JlHBQtRA" annotatedElement="_UUO_l_oAEdu-e7JlHBQtRA">
+ <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="_UW6gAvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gA_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_mvoAEdu-e7JlHBQtRA" name="postcondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UUh68PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UW6gBPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_mvoAEdu-e7JlHBQtRA">
+ <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="_UW6gBfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gBvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_i_oAEdu-e7JlHBQtRA" name="redefinedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UUh6hvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_jPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_i_oAEdu-e7JlHBQtRA">
+ <body>References the Operations that are redefined by this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6gB_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gCPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_g_oAEdu-e7JlHBQtRA" name="datatype" type="__1ap4HLzEdqziYxiZo0YtA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA _UUYJ0foAEdu-e7JlHBQtRA _UTyTc_oAEdu-e7JlHBQtRA" association="_UUh6gfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_hPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_g_oAEdu-e7JlHBQtRA">
+ <body>The DataType that owns this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6gCfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gCvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_nfoAEdu-e7JlHBQtRA" name="bodyCondition" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UUrrUPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UW6gC_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_nfoAEdu-e7JlHBQtRA">
+ <body>An optional Constraint on the result values of an invocation of this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6gDPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gDfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_j_oAEdu-e7JlHBQtRA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" isDerived="true" association="_UUh6p_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_kPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_j_oAEdu-e7JlHBQtRA">
+ <body>This information is derived from the return result for this Operation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6gDvoAEdu-e7JlHBQtRA" annotatedElement="_UUO_j_oAEdu-e7JlHBQtRA">
+ <body>Specifies the return result of the operation, if present.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6gD_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gEPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_k_oAEdu-e7JlHBQtRA" name="ownedParameter" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" redefinedProperty="_UUO_2PoAEdu-e7JlHBQtRA" association="_UUh64_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_lPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_k_oAEdu-e7JlHBQtRA">
+ <body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6gEfoAEdu-e7JlHBQtRA" annotatedElement="_UUO_k_oAEdu-e7JlHBQtRA">
+ <body>Specifies the parameters owned by this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UW6gEvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gE_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUO_h_oAEdu-e7JlHBQtRA" name="raisedException" type="_ynRtoGvtEdqG6fBIPwe-mw" redefinedProperty="_UUO_3PoAEdu-e7JlHBQtRA" association="_UUh6gvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_iPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_h_oAEdu-e7JlHBQtRA">
+ <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="_UW6gFPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UW6gFfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQkJPoAEdu-e7JlHBQtRA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UYZttPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQkJfoAEdu-e7JlHBQtRA" annotatedElement="_UYQkJPoAEdu-e7JlHBQtRA">
+ <body>The Interface that owns this Operation.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQkJvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQkJ_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSpvoAEdu-e7JlHBQtRA" name="templateParameter" type="_UcbSqvoAEdu-e7JlHBQtRA" redefinedProperty="_UcbSfPoAEdu-e7JlHBQtRA" association="_UclDf_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSp_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSpvoAEdu-e7JlHBQtRA">
+ <body>The template parameter that exposes this element as a formal parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSqPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSqfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_ho5pgFYLEdqrn7iZ0eqieg" name="getLower" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_jukVgFYLEdqrn7iZ0eqieg" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ljsEEFYLEdqrn7iZ0eqieg" name="getUpper" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_pAh-YFYLEdqrn7iZ0eqieg" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LgBIAFYlEdqB6vblk3tuMA" name="setIsOrdered" visibility="protected">
+ <ownedParameter xmi:id="_NIoEkFYlEdqB6vblk3tuMA" name="newIsOrdered" visibility="protected" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QTIRsFYlEdqB6vblk3tuMA" name="setIsUnique" visibility="protected">
+ <ownedParameter xmi:id="_SFRkwFYlEdqB6vblk3tuMA" name="newIsUnique" visibility="protected" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VrpOgFYlEdqB6vblk3tuMA" name="setLower" visibility="protected">
+ <ownedParameter xmi:id="_XdMrsFYlEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kqFjwFYlEdqB6vblk3tuMA" name="setType" visibility="protected">
+ <ownedParameter xmi:id="_l2PN0FYlEdqB6vblk3tuMA" name="newType" visibility="protected" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_arIAQFYlEdqB6vblk3tuMA" name="setUpper" visibility="protected">
+ <ownedParameter xmi:id="_b-4HIFYlEdqB6vblk3tuMA" name="newUpper" visibility="protected" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_HxDswKOyEdqi_5gqUMOQtA" name="getReturnResult">
+ <ownedComment xmi:id="_tVUrUOwfEdqYHf-imTcTdw" annotatedElement="_HxDswKOyEdqi_5gqUMOQtA">
+ <body>Retrieves the (only) return result parameter for this operation.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_MiYGsKOyEdqi_5gqUMOQtA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OvfegaOyEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OvfegKOyEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_oPoAEdu-e7JlHBQtRA" name="isOrdered" isQuery="true" bodyCondition="_UUO_ovoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_ofoAEdu-e7JlHBQtRA" annotatedElement="_UUO_oPoAEdu-e7JlHBQtRA">
+ <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="_UUO_ovoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_oPoAEdu-e7JlHBQtRA _UUO_b_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gFvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().isOrdered else false endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUO_pPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_pfoAEdu-e7JlHBQtRA" name="isUnique" isQuery="true" bodyCondition="_UUO_p_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_pvoAEdu-e7JlHBQtRA" annotatedElement="_UUO_pfoAEdu-e7JlHBQtRA">
+ <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="_UUO_p_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_pfoAEdu-e7JlHBQtRA _UUO_cvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gF_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().isUnique else true endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUO_qfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_qvoAEdu-e7JlHBQtRA" name="lower" isQuery="true" bodyCondition="_UUO_rPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_q_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_qvoAEdu-e7JlHBQtRA">
+ <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="_UUO_rPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_qvoAEdu-e7JlHBQtRA _UUO_dfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gGPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().lower else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUO_rvoAEdu-e7JlHBQtRA" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_r_oAEdu-e7JlHBQtRA" name="upper" isQuery="true" bodyCondition="_UUO_sfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_sPoAEdu-e7JlHBQtRA" annotatedElement="_UUO_r_oAEdu-e7JlHBQtRA">
+ <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="_UUO_sfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_r_oAEdu-e7JlHBQtRA _UUO_evoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gGfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().upper else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUO_s_oAEdu-e7JlHBQtRA" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_tPoAEdu-e7JlHBQtRA" name="type" isQuery="true" bodyCondition="_UUO_tvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_tfoAEdu-e7JlHBQtRA" annotatedElement="_UUO_tPoAEdu-e7JlHBQtRA">
+ <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="_UUO_tvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_tPoAEdu-e7JlHBQtRA _UUO_j_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gGvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if returnResult()->notEmpty() then returnResult()->any().type else Set{} endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUO_uPoAEdu-e7JlHBQtRA" type="_ynRtoGvtEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_ufoAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" precondition="_UUO_u_oAEdu-e7JlHBQtRA" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UUO_vfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUO_uvoAEdu-e7JlHBQtRA" annotatedElement="_UUO_ufoAEdu-e7JlHBQtRA">
+ <body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UW6gG_oAEdu-e7JlHBQtRA" annotatedElement="_UUO_ufoAEdu-e7JlHBQtRA">
+ <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="_UUO_u_oAEdu-e7JlHBQtRA" constrainedElement="_UUO_ufoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gHPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUO_vfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_ufoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UW6gHfoAEdu-e7JlHBQtRA">
+ <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="_UUO_v_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUO_wPoAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUO_wfoAEdu-e7JlHBQtRA" name="returnResult" isQuery="true" bodyCondition="_UUO_wvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UXEQ8PoAEdu-e7JlHBQtRA" annotatedElement="_UUO_wfoAEdu-e7JlHBQtRA">
+ <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="_UUO_wvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUO_wfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UXEQ8foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = ownedParameter->select (par | par.direction = #return)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUO_xPoAEdu-e7JlHBQtRA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UXEQ8voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UXEQ8_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UcbSqvoAEdu-e7JlHBQtRA" name="OperationTemplateParameter">
+ <ownedComment xmi:id="_UcbSq_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSqvoAEdu-e7JlHBQtRA">
+ <body>An operation template parameter exposes an operation as a formal parameter for a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_UcbSrPoAEdu-e7JlHBQtRA" general="_KxRzgGvuEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UcbSrfoAEdu-e7JlHBQtRA" name="parameteredElement" type="_M4X2IGveEdq4DLWZOhbdEA" redefinedProperty="_UcbSEPoAEdu-e7JlHBQtRA" association="_UclDf_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSrvoAEdu-e7JlHBQtRA" annotatedElement="_UcbSrfoAEdu-e7JlHBQtRA">
+ <body>The operation for this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSr_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSsPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jKxnwGwLEdq7X4sGURiZYA" name="PackageableElement" isAbstract="true">
+ <ownedComment xmi:id="_UTyT9_oAEdu-e7JlHBQtRA" annotatedElement="_jKxnwGwLEdq7X4sGURiZYA">
+ <body>A packageable element indicates a named element that may be owned directly by a package.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcbSsfoAEdu-e7JlHBQtRA" annotatedElement="_jKxnwGwLEdq7X4sGURiZYA">
+ <body>Packageable elements are able to serve as a template parameter.</body>
+ </ownedComment>
+ <generalization xmi:id="_UTyT-PoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <generalization xmi:id="_UcbSsvoAEdu-e7JlHBQtRA" general="_UcbSefoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UVRhQvoAEdu-e7JlHBQtRA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" redefinedProperty="_UUYJzfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVRhQ_oAEdu-e7JlHBQtRA" annotatedElement="_UVRhQvoAEdu-e7JlHBQtRA">
+ <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="_UVRhRPoAEdu-e7JlHBQtRA" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_UUh6WPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6UV2QGwJEdq7X4sGURiZYA" name="Classifier" isAbstract="true">
+ <ownedComment xmi:id="_UTfYgPoAEdu-e7JlHBQtRA" annotatedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <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>
+ <ownedComment xmi:id="_UYZuBfoAEdu-e7JlHBQtRA" annotatedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <body>A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UY2advoAEdu-e7JlHBQtRA" annotatedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <body>A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UcbSs_oAEdu-e7JlHBQtRA" annotatedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <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>
+ <ownedRule xmi:id="_UTfYgfoAEdu-e7JlHBQtRA" name="no_cycles_in_generalization" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UTfYgvoAEdu-e7JlHBQtRA" annotatedElement="_UTfYgfoAEdu-e7JlHBQtRA">
+ <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="_UTfYg_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UVkcTPoAEdu-e7JlHBQtRA" name="generalization_hierarchies" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UVkcTfoAEdu-e7JlHBQtRA" annotatedElement="_UVkcTPoAEdu-e7JlHBQtRA">
+ <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="_UVkcTvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>not self.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UTfYhPoAEdu-e7JlHBQtRA" name="specialize_type" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UTfYhfoAEdu-e7JlHBQtRA" annotatedElement="_UTfYhPoAEdu-e7JlHBQtRA">
+ <body>A classifier may only specialize classifiers of a valid type.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVkcT_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.parents()->forAll(c | self.maySpecializeType(c))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UbO_b_oAEdu-e7JlHBQtRA" name="maps_to_generalization_set" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UbO_cPoAEdu-e7JlHBQtRA" annotatedElement="_UbO_b_oAEdu-e7JlHBQtRA">
+ <body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UbO_cfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UVuNIPoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UTfYiPoAEdu-e7JlHBQtRA" general="_ynRtoGvtEdqG6fBIPwe-mw"/>
+ <generalization xmi:id="_UcbStPoAEdu-e7JlHBQtRA" general="_UcbSYvoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UTfYh_oAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UVuNIfoAEdu-e7JlHBQtRA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UVuNIvoAEdu-e7JlHBQtRA" annotatedElement="_UVuNIfoAEdu-e7JlHBQtRA">
+ <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>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UVuNI_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UVuNJPoAEdu-e7JlHBQtRA" name="generalization" type="_C7AF4GwREdq14q0ETb1t3g" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UXXL8foAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVuNJfoAEdu-e7JlHBQtRA" annotatedElement="_UVuNJPoAEdu-e7JlHBQtRA">
+ <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="_UVuNJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVuNJ_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTfYjfoAEdu-e7JlHBQtRA" name="feature" type="_UTyTcPoAEdu-e7JlHBQtRA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UTyTyPoAEdu-e7JlHBQtRA" association="_UUh6yfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTfYjvoAEdu-e7JlHBQtRA" annotatedElement="_UTfYjfoAEdu-e7JlHBQtRA">
+ <body>Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UVuNKPoAEdu-e7JlHBQtRA" annotatedElement="_UTfYjfoAEdu-e7JlHBQtRA">
+ <body>Specifies each feature defined in the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVuNKfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVuNKvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTfYlfoAEdu-e7JlHBQtRA" name="inheritedMember" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_UTyTyPoAEdu-e7JlHBQtRA" association="_UUh66PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTfYlvoAEdu-e7JlHBQtRA" annotatedElement="_UTfYlfoAEdu-e7JlHBQtRA">
+ <body>Specifies all elements inherited by this classifier from the general classifiers.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVuNK_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVuNLPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UVuNL_oAEdu-e7JlHBQtRA" name="redefinedClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UXXMF_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UVuNMPoAEdu-e7JlHBQtRA" annotatedElement="_UVuNL_oAEdu-e7JlHBQtRA">
+ <body>References the Classifiers that are redefined by this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVuNMfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVuNMvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTfYkfoAEdu-e7JlHBQtRA" name="general" type="_6UV2QGwJEdq7X4sGURiZYA" isDerived="true" association="_UUh60voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTfYkvoAEdu-e7JlHBQtRA" annotatedElement="_UTfYkfoAEdu-e7JlHBQtRA">
+ <body>References the general classifier in the Generalization relationship.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UVuNM_oAEdu-e7JlHBQtRA" annotatedElement="_UTfYkfoAEdu-e7JlHBQtRA">
+ <body>Specifies the general Classifiers for this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVuNNPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVuNNfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYQj5PoAEdu-e7JlHBQtRA" name="substitution" type="_UYQj2PoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA _UYQj6PoAEdu-e7JlHBQtRA" association="_UYQj-PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYQj5foAEdu-e7JlHBQtRA" annotatedElement="_UYQj5PoAEdu-e7JlHBQtRA">
+ <body>References the substitutions that are owned by this Classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYQj5voAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYQj5_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UTfYifoAEdu-e7JlHBQtRA" name="attribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_UTfYjfoAEdu-e7JlHBQtRA" association="_UUh6Z_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UTfYivoAEdu-e7JlHBQtRA" annotatedElement="_UTfYifoAEdu-e7JlHBQtRA">
+ <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="_UYZuBvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZuB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYjezfoAEdu-e7JlHBQtRA" name="representation" type="_UYjesPoAEdu-e7JlHBQtRA" subsettedProperty="_UYje0foAEdu-e7JlHBQtRA" association="_UYje4voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYjezvoAEdu-e7JlHBQtRA" annotatedElement="_UYjezfoAEdu-e7JlHBQtRA">
+ <body>References a collaboration use which indicates the collaboration that represents this classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYjez_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje0PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYje0foAEdu-e7JlHBQtRA" name="collaborationUse" type="_UYjesPoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UYje5voAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYje0voAEdu-e7JlHBQtRA" annotatedElement="_UYje0foAEdu-e7JlHBQtRA">
+ <body>References the collaboration uses owned by the classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYje0_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYje1PoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2ad_oAEdu-e7JlHBQtRA" name="ownedUseCase" type="_UY2aRvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UZAKs_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2aePoAEdu-e7JlHBQtRA" annotatedElement="_UY2ad_oAEdu-e7JlHBQtRA">
+ <body>References the use cases owned by this classifier.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2aefoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2aevoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UY2ae_oAEdu-e7JlHBQtRA" name="useCase" type="_UY2aRvoAEdu-e7JlHBQtRA" association="_UZAKt_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UY2afPoAEdu-e7JlHBQtRA" annotatedElement="_UY2ae_oAEdu-e7JlHBQtRA">
+ <body>The set of use cases for which this Classifier is the subject.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UY2affoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UY2afvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UbO_cvoAEdu-e7JlHBQtRA" name="powertypeExtent" type="_UbO_WPoAEdu-e7JlHBQtRA" association="_UbO_fvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UbO_c_oAEdu-e7JlHBQtRA" annotatedElement="_UbO_cvoAEdu-e7JlHBQtRA">
+ <body>Designates the GeneralizationSet of which the associated Classifier is a power type.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UbO_dPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UbO_dfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbStvoAEdu-e7JlHBQtRA" name="ownedTemplateSignature" type="_9keOQGvdEdq4DLWZOhbdEA" aggregation="composite" redefinedProperty="_UcbSafoAEdu-e7JlHBQtRA" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UclDcfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSt_oAEdu-e7JlHBQtRA" annotatedElement="_UcbStvoAEdu-e7JlHBQtRA">
+ <body>The optional template signature specifying the formal template parameters.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSuPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSufoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UcbSuvoAEdu-e7JlHBQtRA" name="templateParameter" type="_UclDEPoAEdu-e7JlHBQtRA" redefinedProperty="_UcbSfPoAEdu-e7JlHBQtRA" association="_UclDevoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSu_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSuvoAEdu-e7JlHBQtRA">
+ <body>The template parameter that exposes this element as a formal parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcbSvPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcbSvfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_KjT7EGwREdq14q0ETb1t3g" name="getAllAttributes" isQuery="true">
+ <ownedComment xmi:id="_osV7wOwkEdqYHf-imTcTdw" annotatedElement="_KjT7EGwREdq14q0ETb1t3g">
+ <body>Retrieves all the attributes of this classifier, including those inherited from its parents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_OXZQsGwREdq14q0ETb1t3g" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q1zM0WwREdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q1zM0GwREdq14q0ETb1t3g"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_XVsBYGwREdq14q0ETb1t3g" name="getOperations" isQuery="true">
+ <ownedComment xmi:id="_wywpQOwkEdqYHf-imTcTdw" annotatedElement="_XVsBYGwREdq14q0ETb1t3g">
+ <body>Retrieves the operations of this classifier.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ZvULMGwREdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cOT9MWwREdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cOT9MGwREdq14q0ETb1t3g"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_d5JuYGwREdq14q0ETb1t3g" name="getAllOperations" isQuery="true">
+ <ownedComment xmi:id="_yDq3gOwkEdqYHf-imTcTdw" annotatedElement="_d5JuYGwREdq14q0ETb1t3g">
+ <body>Retrieves all the operations of this classifier, including those inherited from its parents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_d5JuYWwREdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d5JuYmwREdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d5JuY2wREdq14q0ETb1t3g"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hw6gIHFhEdqziYxiZo0YtA" name="getOperation" isQuery="true">
+ <ownedComment xmi:id="_-qt3kOwkEdqYHf-imTcTdw" annotatedElement="_hw6gIHFhEdqziYxiZo0YtA">
+ <body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ls4mcHFhEdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skn6UXFhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skn6UHFhEdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_usha8HFhEdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_R1RdIPH-EdulR8T2OJRyFQ" annotatedElement="_usha8HFhEdqziYxiZo0YtA">
+ <body>The name of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UQSfgaOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UQSfgKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_LgAVoKOwEdqi_5gqUMOQtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_VK9mkPH-EdulR8T2OJRyFQ" annotatedElement="_LgAVoKOwEdqi_5gqUMOQtA">
+ <body>The parameter names of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Vz1V4aOwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Vz1V4KOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_s8hlMKOvEdqi_5gqUMOQtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_XUDaAPH-EdulR8T2OJRyFQ" annotatedElement="_s8hlMKOvEdqi_5gqUMOQtA">
+ <body>The parameter types of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XhDssaOwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XhDssKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aGT3sKOwEdqi_5gqUMOQtA" name="getOperation" isQuery="true">
+ <ownedComment xmi:id="_-8cgwOwkEdqYHf-imTcTdw" annotatedElement="_aGT3sKOwEdqi_5gqUMOQtA">
+ <body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_aGT3saOwEdqi_5gqUMOQtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3sqOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3s6OwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aGT3tKOwEdqi_5gqUMOQtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_3HC1EPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3tKOwEdqi_5gqUMOQtA">
+ <body>The name of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3taOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3tqOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aGT3t6OwEdqi_5gqUMOQtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_6FotIPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3t6OwEdqi_5gqUMOQtA">
+ <body>The parameter names of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3uKOwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3uaOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aGT3uqOwEdqi_5gqUMOQtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_-UGRoPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3uqOwEdqi_5gqUMOQtA">
+ <body>The parameter types of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3u6OwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3vKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_c2vX8KOwEdqi_5gqUMOQtA" name="ignoreCase" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_0yxsYPH_EdulR8T2OJRyFQ" annotatedElement="_c2vX8KOwEdqi_5gqUMOQtA">
+ <body>Whether to ignore case in String comparisons.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_8OsQwK69EdqjppZik4kD8A" name="getUsedInterfaces">
+ <ownedComment xmi:id="_IHZ0cOwlEdqYHf-imTcTdw" annotatedElement="_8OsQwK69EdqjppZik4kD8A">
+ <body>Retrieves the interfaces on which this classifier has a usage dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GDE78K6-EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J92vca6-EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J92vcK6-EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_MH_rwK6-EdqjppZik4kD8A" name="getAllUsedInterfaces">
+ <ownedComment xmi:id="_LQH44OwlEdqYHf-imTcTdw" annotatedElement="_MH_rwK6-EdqjppZik4kD8A">
+ <body>Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_MH_rwa6-EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MH_rwq6-EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MH_rw66-EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToiffoAEdu-e7JlHBQtRA" name="general" isQuery="true" bodyCondition="_UToif_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToifvoAEdu-e7JlHBQtRA" annotatedElement="_UToiffoAEdu-e7JlHBQtRA">
+ <body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UToif_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToiffoAEdu-e7JlHBQtRA _UTfYkfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UVuNNvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.parents()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToigfoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UVuNN_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UVuNOPoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToii_oAEdu-e7JlHBQtRA" name="inheritedMember" isQuery="true" bodyCondition="_UToijfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToijPoAEdu-e7JlHBQtRA" annotatedElement="_UToii_oAEdu-e7JlHBQtRA">
+ <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UToijfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToii_oAEdu-e7JlHBQtRA _UTfYlfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWUDAPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToij_oAEdu-e7JlHBQtRA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWUDAfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWUDAvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToidvoAEdu-e7JlHBQtRA" name="allFeatures" isQuery="true" bodyCondition="_UToiePoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToid_oAEdu-e7JlHBQtRA" annotatedElement="_UToidvoAEdu-e7JlHBQtRA">
+ <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="_UToiePoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToidvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWUDA_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = member->select(oclIsKindOf(Feature))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToievoAEdu-e7JlHBQtRA" type="_UTyTcPoAEdu-e7JlHBQtRA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWUDBPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWUDBfoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToihPoAEdu-e7JlHBQtRA" name="parents" isQuery="true" bodyCondition="_UToihvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToihfoAEdu-e7JlHBQtRA" annotatedElement="_UToihPoAEdu-e7JlHBQtRA">
+ <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UToihvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToihPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWUDBvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = generalization.general</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToiiPoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWUDB_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWUDCPoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToimfoAEdu-e7JlHBQtRA" name="inheritableMembers" isQuery="true" precondition="_UToim_oAEdu-e7JlHBQtRA" postcondition="_UToim_oAEdu-e7JlHBQtRA" bodyCondition="_UToinfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToimvoAEdu-e7JlHBQtRA" annotatedElement="_UToimfoAEdu-e7JlHBQtRA">
+ <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="_UToim_oAEdu-e7JlHBQtRA" constrainedElement="_UToimfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWUDCvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>c.allParents()->includes(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UToinfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToimfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWUDC_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = member->select(m | c.hasVisibilityOf(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToin_oAEdu-e7JlHBQtRA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWUDDPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWUDDfoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UToiovoAEdu-e7JlHBQtRA" name="c" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToio_oAEdu-e7JlHBQtRA" name="hasVisibilityOf" isQuery="true" precondition="_UToipfoAEdu-e7JlHBQtRA" bodyCondition="_UToip_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToipPoAEdu-e7JlHBQtRA" annotatedElement="_UToio_oAEdu-e7JlHBQtRA">
+ <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="_UToipfoAEdu-e7JlHBQtRA" constrainedElement="_UToio_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0APoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.allParents()->collect(c | c.member)->includes(n)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UToip_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToio_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0AfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if (self.inheritedMember->includes(n)) then (n.visibility &lt;> #private) else true</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToiqfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UToiqvoAEdu-e7JlHBQtRA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToicPoAEdu-e7JlHBQtRA" name="conformsTo" isQuery="true" redefinedOperation="_UUYJuPoAEdu-e7JlHBQtRA" bodyCondition="_UToicvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToicfoAEdu-e7JlHBQtRA" annotatedElement="_UToicPoAEdu-e7JlHBQtRA">
+ <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="_UToicvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToicPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0AvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (self=other) or (self.allParents()->includes(other))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToidPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UToidfoAEdu-e7JlHBQtRA" name="other" type="_6UV2QGwJEdq7X4sGURiZYA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToiq_oAEdu-e7JlHBQtRA" name="inherit" isQuery="true" bodyCondition="_UToirfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToirPoAEdu-e7JlHBQtRA" annotatedElement="_UToiq_oAEdu-e7JlHBQtRA">
+ <body>The inherit operation is overridden to exclude redefined properties.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UWd0A_oAEdu-e7JlHBQtRA" annotatedElement="_UToiq_oAEdu-e7JlHBQtRA">
+ <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="_UToirfoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToiq_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0BPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = inhs</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToir_oAEdu-e7JlHBQtRA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0BfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0BvoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_UToisvoAEdu-e7JlHBQtRA" name="inhs" type="_csVgUGvtEdqG6fBIPwe-mw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0B_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0CPoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToitfoAEdu-e7JlHBQtRA" name="maySpecializeType" isQuery="true" bodyCondition="_UToit_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToitvoAEdu-e7JlHBQtRA" annotatedElement="_UToitfoAEdu-e7JlHBQtRA">
+ <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="_UToit_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToitfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0CfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.oclIsKindOf(c.oclType)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToiufoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UToiuvoAEdu-e7JlHBQtRA" name="c" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UToikvoAEdu-e7JlHBQtRA" name="allParents" isQuery="true" bodyCondition="_UToilPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UToik_oAEdu-e7JlHBQtRA" annotatedElement="_UToikvoAEdu-e7JlHBQtRA">
+ <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UToilPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UToikvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWd0CvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = self.parents()->union(self.parents()->collect(p | p.allParents())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UToilvoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWd0C_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWd0DPoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcbSvvoAEdu-e7JlHBQtRA" name="isTemplate" isQuery="true" redefinedOperation="_UcbSdPoAEdu-e7JlHBQtRA" bodyCondition="_UcbSwPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UcbSv_oAEdu-e7JlHBQtRA" annotatedElement="_UcbSvvoAEdu-e7JlHBQtRA">
+ <body>The query isTemplate() returns whether this templateable element is actually a template.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UcbSwPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UcbSvvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UcbSwfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = oclAsType(TemplatableElement).isTemplate() or general->exists(g | g.isTemplate())</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UcbSwvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UclDEPoAEdu-e7JlHBQtRA" name="ClassifierTemplateParameter">
+ <ownedComment xmi:id="_UclDEfoAEdu-e7JlHBQtRA" annotatedElement="_UclDEPoAEdu-e7JlHBQtRA">
+ <body>A classifier template parameter exposes a classifier as a formal template parameter.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UclDEvoAEdu-e7JlHBQtRA" name="has_constraining_classifier" constrainedElement="_UclDEPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDE_oAEdu-e7JlHBQtRA" annotatedElement="_UclDEvoAEdu-e7JlHBQtRA">
+ <body>If &quot;allowSubstitutable&quot; is true, then there must be a constrainingClassifier.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UclDFPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>allowSubstitutable implies constrainingClassifier->notEmpty()</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UclDFfoAEdu-e7JlHBQtRA" general="_KxRzgGvuEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UclDFvoAEdu-e7JlHBQtRA" name="allowSubstitutable" type="_UdivYGvsEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_UclDF_oAEdu-e7JlHBQtRA" annotatedElement="_UclDFvoAEdu-e7JlHBQtRA">
+ <body>Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_UclDGPoAEdu-e7JlHBQtRA" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UclDGfoAEdu-e7JlHBQtRA" name="parameteredElement" type="_6UV2QGwJEdq7X4sGURiZYA" redefinedProperty="_UcbSEPoAEdu-e7JlHBQtRA" association="_UclDevoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDGvoAEdu-e7JlHBQtRA" annotatedElement="_UclDGfoAEdu-e7JlHBQtRA">
+ <body>The parameterable classifier for this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDG_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDHPoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UclDHfoAEdu-e7JlHBQtRA" name="defaultClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UclDgfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDHvoAEdu-e7JlHBQtRA" annotatedElement="_UclDHfoAEdu-e7JlHBQtRA">
+ <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="_UclDH_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDIPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UclDIfoAEdu-e7JlHBQtRA" name="constrainingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_UclDg_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDIvoAEdu-e7JlHBQtRA" annotatedElement="_UclDIfoAEdu-e7JlHBQtRA">
+ <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="_UclDI_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDJPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9keOQGvdEdq4DLWZOhbdEA" name="RedefinableTemplateSignature">
+ <ownedComment xmi:id="_UclDJfoAEdu-e7JlHBQtRA" annotatedElement="_9keOQGvdEdq4DLWZOhbdEA">
+ <body>A redefinable template signature supports the addition of formal template parameters in a specialization of a template classifier.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UclDJvoAEdu-e7JlHBQtRA" name="inherited_parameters" constrainedElement="_9keOQGvdEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UclDJ_oAEdu-e7JlHBQtRA" annotatedElement="_UclDJvoAEdu-e7JlHBQtRA">
+ <body>The inherited parameters are the parameters of the extended template signature.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UclDKPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UclDKfoAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UclDKvoAEdu-e7JlHBQtRA" general="_UcRhSPoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UclDK_oAEdu-e7JlHBQtRA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UclDcfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDLPoAEdu-e7JlHBQtRA" annotatedElement="_UclDK_oAEdu-e7JlHBQtRA">
+ <body>The classifier that owns this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDLfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDLvoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UclDL_oAEdu-e7JlHBQtRA" name="extendedSignature" type="_9keOQGvdEdq4DLWZOhbdEA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UclDcvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDMPoAEdu-e7JlHBQtRA" annotatedElement="_UclDL_oAEdu-e7JlHBQtRA">
+ <body>The template signature that is extended by this template signature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDMfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDMvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UclDM_oAEdu-e7JlHBQtRA" name="inheritedParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_UcRhTvoAEdu-e7JlHBQtRA" association="_UclDdvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDNPoAEdu-e7JlHBQtRA" annotatedElement="_UclDM_oAEdu-e7JlHBQtRA">
+ <body>The formal template parameters of the extendedSignature.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDNfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDNvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_FvJUYFYLEdqrn7iZ0eqieg" name="getInheritedParameters" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_Jbx-MFYLEdqrn7iZ0eqieg" type="_KxRzgGvuEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LQdA0VYLEdqrn7iZ0eqieg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LQdA0FYLEdqrn7iZ0eqieg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UclDN_oAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" precondition="_UclDOfoAEdu-e7JlHBQtRA" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UclDO_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDOPoAEdu-e7JlHBQtRA" annotatedElement="_UclDN_oAEdu-e7JlHBQtRA">
+ <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="_UclDOfoAEdu-e7JlHBQtRA" constrainedElement="_UclDN_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UclDOvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UclDO_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UclDN_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UclDPPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = redefinee.oclIsKindOf(RedefineableTemplateSignature)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UclDPfoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UclDPvoAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UclDRfoAEdu-e7JlHBQtRA" name="ConnectableElementTemplateParameter">
+ <ownedComment xmi:id="_UclDRvoAEdu-e7JlHBQtRA" annotatedElement="_UclDRfoAEdu-e7JlHBQtRA">
+ <body>A connectable element template parameter exposes a connectable element as a formal parameter for a template.</body>
+ </ownedComment>
+ <generalization xmi:id="_UclDR_oAEdu-e7JlHBQtRA" general="_KxRzgGvuEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UclDSPoAEdu-e7JlHBQtRA" name="parameteredElement" type="_UYZt_voAEdu-e7JlHBQtRA" redefinedProperty="_UcbSEPoAEdu-e7JlHBQtRA" association="_UclDgPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDSfoAEdu-e7JlHBQtRA" annotatedElement="_UclDSPoAEdu-e7JlHBQtRA">
+ <body>The ConnectableElement for this template parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDSvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDS_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-cvRAGvzEdq7X4sGURiZYA" name="Package">
+ <ownedComment xmi:id="_UUYJaPoAEdu-e7JlHBQtRA" annotatedElement="_-cvRAGvzEdq7X4sGURiZYA">
+ <body>A package is used to group elements, and provides a namespace for the grouped elements.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ua8EcvoAEdu-e7JlHBQtRA" annotatedElement="_-cvRAGvzEdq7X4sGURiZYA">
+ <body>A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UclDTPoAEdu-e7JlHBQtRA" annotatedElement="_-cvRAGvzEdq7X4sGURiZYA">
+ <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>
+ <ownedRule xmi:id="_UUYJafoAEdu-e7JlHBQtRA" name="elements_public_or_private" constrainedElement="_-cvRAGvzEdq7X4sGURiZYA">
+ <ownedComment xmi:id="_UUYJavoAEdu-e7JlHBQtRA" annotatedElement="_UUYJafoAEdu-e7JlHBQtRA">
+ <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="_UWnlMfoAEdu-e7JlHBQtRA">
+ <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="_UUYJbPoAEdu-e7JlHBQtRA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
+ <generalization xmi:id="_UUYJbfoAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <generalization xmi:id="_UclDTfoAEdu-e7JlHBQtRA" general="_UcbSYvoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UUYJfvoAEdu-e7JlHBQtRA" name="packageMerge" type="_UUYJpvoAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UUh6q_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJf_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJfvoAEdu-e7JlHBQtRA">
+ <body>References the PackageMerges that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlMvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlM_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJbvoAEdu-e7JlHBQtRA" name="packagedElement" type="_jKxnwGwLEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UTyTxPoAEdu-e7JlHBQtRA" association="_UUh6oPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJb_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJbvoAEdu-e7JlHBQtRA">
+ <body>Specifies the packageable elements that are owned by this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlNPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlNfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJcvoAEdu-e7JlHBQtRA" name="ownedType" type="_ynRtoGvtEdqG6fBIPwe-mw" isDerived="true" aggregation="composite" subsettedProperty="_UUYJbvoAEdu-e7JlHBQtRA" association="_UUh6pPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJc_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJcvoAEdu-e7JlHBQtRA">
+ <body>References the packaged elements that are Types.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlNvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlN_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJdvoAEdu-e7JlHBQtRA" name="nestedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" isDerived="true" aggregation="composite" subsettedProperty="_UUYJbvoAEdu-e7JlHBQtRA" association="_UUh6pvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJd_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJdvoAEdu-e7JlHBQtRA">
+ <body>References the packaged elements that are Packages.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlOPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlOfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UUYJevoAEdu-e7JlHBQtRA" name="nestingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UUh6pvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJe_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJevoAEdu-e7JlHBQtRA">
+ <body>References the Package that owns this Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlOvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlO_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ua8Ec_oAEdu-e7JlHBQtRA" name="profileApplication" type="_uY5yQGv5Edq7X4sGURiZYA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UbFOR_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_Ua8EdPoAEdu-e7JlHBQtRA" annotatedElement="_Ua8Ec_oAEdu-e7JlHBQtRA">
+ <body>References the ProfileApplications that indicate which profiles have been applied to the Package.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ua8EdfoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ua8EdvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_4JyAAGwFEdq7X4sGURiZYA" name="createOwnedClass">
+ <ownedComment xmi:id="_RcX8kOwhEdqYHf-imTcTdw" annotatedElement="_4JyAAGwFEdq7X4sGURiZYA">
+ <body>Creates a(n) (abstract) class with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_94M7YGwFEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_BGSA8GwGEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_OgV58PIEEdulR8T2OJRyFQ" annotatedElement="_BGSA8GwGEdq7X4sGURiZYA">
+ <body>The name for the new class, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-i0lsGwFEdq7X4sGURiZYA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_MPDMwPIEEdulR8T2OJRyFQ" annotatedElement="_-i0lsGwFEdq7X4sGURiZYA">
+ <body>Whether the new class should be abstract.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Fqo88GwGEdq7X4sGURiZYA" name="createOwnedEnumeration">
+ <ownedComment xmi:id="_aE54oOwhEdqYHf-imTcTdw" annotatedElement="_Fqo88GwGEdq7X4sGURiZYA">
+ <body>Creates a enumeration with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_MMBmUGwGEdq7X4sGURiZYA" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_Mz9wEGwGEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_UWEXMPIEEdulR8T2OJRyFQ" annotatedElement="_Mz9wEGwGEdq7X4sGURiZYA">
+ <body>The name for the new enumeration, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SSSZ8GwGEdq7X4sGURiZYA" name="createOwnedPrimitiveType">
+ <ownedComment xmi:id="_bT4NMOwhEdqYHf-imTcTdw" annotatedElement="_SSSZ8GwGEdq7X4sGURiZYA">
+ <body>Creates a primitive type with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Y8BHAGwGEdq7X4sGURiZYA" type="_V6vuYGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_ZY7FcGwGEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_ZtP3QPIEEdulR8T2OJRyFQ" annotatedElement="_ZY7FcGwGEdq7X4sGURiZYA">
+ <body>The name for the new primitive type, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SwrbIHFhEdqziYxiZo0YtA" name="createOwnedInterface">
+ <ownedComment xmi:id="_ecTWsOwhEdqYHf-imTcTdw" annotatedElement="_SwrbIHFhEdqziYxiZo0YtA">
+ <body>Creates an interface with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_SwrbIXFhEdqziYxiZo0YtA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_SwrbInFhEdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_YHUbQPIEEdulR8T2OJRyFQ" annotatedElement="_SwrbInFhEdqziYxiZo0YtA">
+ <body>The name for the new interface, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_z4Q98Gv5Edq7X4sGURiZYA" name="isProfileApplied" isQuery="true">
+ <ownedComment xmi:id="_h951MOwhEdqYHf-imTcTdw" annotatedElement="_z4Q98Gv5Edq7X4sGURiZYA">
+ <body>Determines whether the specified profile is applied to this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_19CSEGv5Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_2TitkGv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_sf7TIPIEEdulR8T2OJRyFQ" annotatedElement="_2TitkGv5Edq7X4sGURiZYA">
+ <body>The profile in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r--GcGv5Edq7X4sGURiZYA" name="applyProfile">
+ <ownedComment xmi:id="_pfXbgOwhEdqYHf-imTcTdw" annotatedElement="_r--GcGv5Edq7X4sGURiZYA">
+ <body>Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_w2ZvcGv5Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ObBOMXF8EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ObBOMHF8EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_xMwZ8Gv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_KbQ68PIEEdulR8T2OJRyFQ" annotatedElement="_xMwZ8Gv5Edq7X4sGURiZYA">
+ <body>The profile to apply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_448CgGv5Edq7X4sGURiZYA" name="unapplyProfile">
+ <ownedComment xmi:id="_4cT78OwhEdqYHf-imTcTdw" annotatedElement="_448CgGv5Edq7X4sGURiZYA">
+ <body>Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_6yryYGv5Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZvqLMXF8EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZvqLMHF8EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7KhqoGv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_ubdLsPIEEdulR8T2OJRyFQ" annotatedElement="_7KhqoGv5Edq7X4sGURiZYA">
+ <body>The profile to unapply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZCKeMGv5Edq7X4sGURiZYA" name="getAppliedProfiles" isQuery="true">
+ <ownedComment xmi:id="_G2jX8OwiEdqYHf-imTcTdw" annotatedElement="_ZCKeMGv5Edq7X4sGURiZYA">
+ <body>Retrieves the profiles that are applied to this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_cExTkGv5Edq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eExccWv5Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eExccGv5Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kCeTgGwFEdq7X4sGURiZYA" name="getAllAppliedProfiles" isQuery="true">
+ <ownedComment xmi:id="_KHdvEOwiEdqYHf-imTcTdw" annotatedElement="_kCeTgGwFEdq7X4sGURiZYA">
+ <body>Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kCeTgWwFEdq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCeTgmwFEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCeTg2wFEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tasT4G11EdqniMBnIUw7ig" name="getAppliedProfile" isQuery="true">
+ <ownedComment xmi:id="_SSMU0OwiEdqYHf-imTcTdw" annotatedElement="_tasT4G11EdqniMBnIUw7ig">
+ <body>Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wSH0AG11EdqniMBnIUw7ig" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yo7TUW11EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yo7TUG11EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_2bXqMG11EdqniMBnIUw7ig" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_c7n3wPIEEdulR8T2OJRyFQ" annotatedElement="_2bXqMG11EdqniMBnIUw7ig">
+ <body>The qualified name of the applied profile to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7MPYMG11EdqniMBnIUw7ig" name="getAppliedProfile" isQuery="true">
+ <ownedComment xmi:id="_fm_LsOwiEdqYHf-imTcTdw" annotatedElement="_7MPYMG11EdqniMBnIUw7ig">
+ <body>Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_7MPYMW11EdqniMBnIUw7ig" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7MPYMm11EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7MPYM211EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7MPYNG11EdqniMBnIUw7ig" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_fzp00PIEEdulR8T2OJRyFQ" annotatedElement="_7MPYNG11EdqniMBnIUw7ig">
+ <body>The qualified name of the applied profile to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_8HGd8G11EdqniMBnIUw7ig" name="recurse" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_j8mnMPIEEdulR8T2OJRyFQ" annotatedElement="_8HGd8G11EdqniMBnIUw7ig">
+ <body>Whether to look in nesting packages.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kxh7IG10EdqniMBnIUw7ig" name="getAllProfileApplications" isQuery="true">
+ <ownedComment xmi:id="_pMBMQOwiEdqYHf-imTcTdw" annotatedElement="_kxh7IG10EdqniMBnIUw7ig">
+ <body>Retrieves all the profile applications for this package, including profile applications for its nesting package(s).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_pW8AAG10EdqniMBnIUw7ig" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvqx8W10EdqniMBnIUw7ig" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvqx8G10EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FOcTIKO_Edqi_5gqUMOQtA" name="getProfileApplication" isQuery="true">
+ <ownedComment xmi:id="_vvVvUOwiEdqYHf-imTcTdw" annotatedElement="_FOcTIKO_Edqi_5gqUMOQtA">
+ <body>Retrieves the application of the specified profile to this package, or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FOcTIaO_Edqi_5gqUMOQtA" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FOcTIqO_Edqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FOcTI6O_Edqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FOcTJKO_Edqi_5gqUMOQtA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_nAG0cPIEEdulR8T2OJRyFQ" annotatedElement="_FOcTJKO_Edqi_5gqUMOQtA">
+ <body>The profile whose application to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QaTt4G11EdqniMBnIUw7ig" name="getProfileApplication" isQuery="true">
+ <ownedComment xmi:id="_wmn8oOwiEdqYHf-imTcTdw" annotatedElement="_QaTt4G11EdqniMBnIUw7ig">
+ <body>Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_QaTt4W11EdqniMBnIUw7ig" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QaTt4m11EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QaTt4211EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rYVqgG2JEdq0sOo3CGeQEg" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_pERroPIEEdulR8T2OJRyFQ" annotatedElement="_rYVqgG2JEdq0sOo3CGeQEg">
+ <body>The profile whose application to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RiuHcG11EdqniMBnIUw7ig" name="recurse" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_q8YcwPIEEdulR8T2OJRyFQ" annotatedElement="_RiuHcG11EdqniMBnIUw7ig">
+ <body>Whether to look in nesting packages.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_NrOGAIbSEdqhgMOAOWpjfQ" name="isModelLibrary" isQuery="true">
+ <ownedComment xmi:id="_4KKmkOwiEdqYHf-imTcTdw" annotatedElement="_NrOGAIbSEdqhgMOAOWpjfQ">
+ <body>Determines whether this package is a model library.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NrOGAYbSEdqhgMOAOWpjfQ" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJgvoAEdu-e7JlHBQtRA" name="mustBeOwned" isQuery="true" redefinedOperation="_UToi3_oAEdu-e7JlHBQtRA" bodyCondition="_UUYJhPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJg_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJgvoAEdu-e7JlHBQtRA">
+ <body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUYJhPoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJgvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWnlPPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = false</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUYJhvoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJh_oAEdu-e7JlHBQtRA" name="visibleMembers" isQuery="true" bodyCondition="_UUYJifoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJiPoAEdu-e7JlHBQtRA" annotatedElement="_UUYJh_oAEdu-e7JlHBQtRA">
+ <body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UUYJifoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJh_oAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWnlPfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = member->select( m | self.makesVisible(m))</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UUYJi_oAEdu-e7JlHBQtRA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWnlPvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWnlP_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UUYJjvoAEdu-e7JlHBQtRA" name="makesVisible" isQuery="true" precondition="_UUYJkPoAEdu-e7JlHBQtRA" bodyCondition="_UUYJkvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UUYJj_oAEdu-e7JlHBQtRA" annotatedElement="_UUYJjvoAEdu-e7JlHBQtRA">
+ <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="_UUYJkPoAEdu-e7JlHBQtRA" constrainedElement="_UUYJjvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWnlQPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.member->includes(el)</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UUYJkvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UUYJjvoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UWnlQfoAEdu-e7JlHBQtRA">
+ <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="_UUYJlPoAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UUYJlfoAEdu-e7JlHBQtRA" name="el" type="_csVgUGvtEdqG6fBIPwe-mw"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDTvoAEdu-e7JlHBQtRA" name="A_parameter_templateSignature" memberEnd="_UcRhTvoAEdu-e7JlHBQtRA _UclDT_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDT_oAEdu-e7JlHBQtRA" type="_UcRhSPoAEdu-e7JlHBQtRA" association="_UclDTvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDUPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDUfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDUvoAEdu-e7JlHBQtRA" name="A_ownedParameter_signature" memberEnd="_UcRhUvoAEdu-e7JlHBQtRA _UcRhZPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDU_oAEdu-e7JlHBQtRA" name="A_boundElement_templateBinding" memberEnd="_UcbSQPoAEdu-e7JlHBQtRA _UcbSZfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDVPoAEdu-e7JlHBQtRA" name="A_formal_templateParameterSubstitution" memberEnd="_UcbSUvoAEdu-e7JlHBQtRA _UclDVfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDVfoAEdu-e7JlHBQtRA" type="_UcbSTPoAEdu-e7JlHBQtRA" association="_UclDVPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDVvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDV_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDWPoAEdu-e7JlHBQtRA" name="A_signature_templateBinding" memberEnd="_UcbSRPoAEdu-e7JlHBQtRA _UclDWfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDWfoAEdu-e7JlHBQtRA" type="_UcbSN_oAEdu-e7JlHBQtRA" association="_UclDWPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDWvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDW_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDXPoAEdu-e7JlHBQtRA" name="A_parameterSubstitution_templateBinding" memberEnd="_UcbSSPoAEdu-e7JlHBQtRA _UcbSVvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDXfoAEdu-e7JlHBQtRA" name="A_actual_templateParameterSubstitution" memberEnd="_UcbSWvoAEdu-e7JlHBQtRA _UclDXvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDXvoAEdu-e7JlHBQtRA" type="_UcbSTPoAEdu-e7JlHBQtRA" association="_UclDXfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDX_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDYPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDYfoAEdu-e7JlHBQtRA" name="A_parameteredElement_templateParameter" memberEnd="_UcbSEPoAEdu-e7JlHBQtRA _UcbSfPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDYvoAEdu-e7JlHBQtRA" name="A_subExpression_owningExpression" memberEnd="_UcbSKvoAEdu-e7JlHBQtRA _UcbSLvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDY_oAEdu-e7JlHBQtRA" name="A_ownedTemplateSignature_template" memberEnd="_UcbSafoAEdu-e7JlHBQtRA _UcRhVvoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDZPoAEdu-e7JlHBQtRA" name="A_ownedParameteredElement_owningTemplateParameter" memberEnd="_UcbSFPoAEdu-e7JlHBQtRA _UcbSgPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDZfoAEdu-e7JlHBQtRA" name="A_default_templateParameter" memberEnd="_UcbSGPoAEdu-e7JlHBQtRA _UclDZvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDZvoAEdu-e7JlHBQtRA" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_UclDZfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDZ_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDaPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDafoAEdu-e7JlHBQtRA" name="A_ownedDefault_templateParameter" memberEnd="_UcbSHPoAEdu-e7JlHBQtRA _UclDavoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDavoAEdu-e7JlHBQtRA" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_UclDafoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDa_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDbPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDbfoAEdu-e7JlHBQtRA" name="A_ownedActual_templateParameterSubstitution" memberEnd="_UcbSXvoAEdu-e7JlHBQtRA _UclDbvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDbvoAEdu-e7JlHBQtRA" type="_UcbSTPoAEdu-e7JlHBQtRA" association="_UclDbfoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDb_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDcPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDcfoAEdu-e7JlHBQtRA" name="A_ownedTemplateSignature_classifier" memberEnd="_UcbStvoAEdu-e7JlHBQtRA _UclDK_oAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDcvoAEdu-e7JlHBQtRA" name="A_extendedSignature_redefinableTemplateSignature" memberEnd="_UclDL_oAEdu-e7JlHBQtRA _UclDc_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDc_oAEdu-e7JlHBQtRA" type="_9keOQGvdEdq4DLWZOhbdEA" association="_UclDcvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDdPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDdfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDdvoAEdu-e7JlHBQtRA" name="A_inheritedParameter_redefinableTemplateSignature" memberEnd="_UclDM_oAEdu-e7JlHBQtRA _UclDd_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDd_oAEdu-e7JlHBQtRA" type="_9keOQGvdEdq4DLWZOhbdEA" association="_UclDdvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDePoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDefoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDevoAEdu-e7JlHBQtRA" name="A_templateParameter_parameteredElement" memberEnd="_UcbSuvoAEdu-e7JlHBQtRA _UclDGfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDe_oAEdu-e7JlHBQtRA" name="A_nameExpression_namedElement" memberEnd="_UcRhW_oAEdu-e7JlHBQtRA _UclDfPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDfPoAEdu-e7JlHBQtRA" type="_csVgUGvtEdqG6fBIPwe-mw" association="_UclDe_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDffoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDfvoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDf_oAEdu-e7JlHBQtRA" name="A_templateParameter_parameteredElement" memberEnd="_UcbSpvoAEdu-e7JlHBQtRA _UcbSrfoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDgPoAEdu-e7JlHBQtRA" name="A_templateParameter_parameteredElement" memberEnd="_UclDQfoAEdu-e7JlHBQtRA _UclDSPoAEdu-e7JlHBQtRA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDgfoAEdu-e7JlHBQtRA" name="A_defaultClassifier_classifierTemplateParameter" memberEnd="_UclDHfoAEdu-e7JlHBQtRA _UclDgvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDgvoAEdu-e7JlHBQtRA" type="_UclDEPoAEdu-e7JlHBQtRA" association="_UclDgfoAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UclDg_oAEdu-e7JlHBQtRA" name="A_constrainingClassifier_classifierTemplateParameter" memberEnd="_UclDIfoAEdu-e7JlHBQtRA _UclDhPoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UclDhPoAEdu-e7JlHBQtRA" type="_UclDEPoAEdu-e7JlHBQtRA" association="_UclDg_oAEdu-e7JlHBQtRA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UYZt_voAEdu-e7JlHBQtRA" name="ConnectableElement" isAbstract="true">
+ <ownedComment xmi:id="_UYZt__oAEdu-e7JlHBQtRA" annotatedElement="_UYZt_voAEdu-e7JlHBQtRA">
+ <body>ConnectableElement is an abstract metaclass representing a set of instances that play roles of a classifier. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_UclDP_oAEdu-e7JlHBQtRA" annotatedElement="_UYZt_voAEdu-e7JlHBQtRA">
+ <body>A connectable element may be exposed as a connectable element template parameter.</body>
+ </ownedComment>
+ <generalization xmi:id="_UYZuAPoAEdu-e7JlHBQtRA" general="_UT7diPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UclDQPoAEdu-e7JlHBQtRA" general="_UcbSefoAEdu-e7JlHBQtRA"/>
+ <ownedAttribute xmi:id="_UclDQfoAEdu-e7JlHBQtRA" name="templateParameter" type="_UclDRfoAEdu-e7JlHBQtRA" redefinedProperty="_UcbSfPoAEdu-e7JlHBQtRA" association="_UclDgPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UclDQvoAEdu-e7JlHBQtRA" annotatedElement="_UclDQfoAEdu-e7JlHBQtRA">
+ <body>The ConnectableElementTemplateParameter for this ConnectableElement parameter.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UclDQ_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UclDRPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZuAfoAEdu-e7JlHBQtRA" name="end" type="_aOgw0GveEdq4DLWZOhbdEA" isOrdered="true" isDerived="true" association="_UcuNCvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZuAvoAEdu-e7JlHBQtRA" annotatedElement="_UYZuAfoAEdu-e7JlHBQtRA">
+ <body>Denotes a connector that attaches to this connectable element.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNAvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNA_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UcuNBPoAEdu-e7JlHBQtRA" name="getEnds" visibility="protected">
+ <ownedParameter xmi:id="_UcuNBfoAEdu-e7JlHBQtRA" name="" type="_aOgw0GveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNBvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNB_oAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_aOgw0GveEdq4DLWZOhbdEA" name="ConnectorEnd">
+ <ownedComment xmi:id="_UYZtwvoAEdu-e7JlHBQtRA" annotatedElement="_aOgw0GveEdq4DLWZOhbdEA">
+ <body>A connector end is an endpoint of a connector, which attaches the connector to a connectable element. Each connector end is part of one connector.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UYZtw_oAEdu-e7JlHBQtRA" name="multiplicity" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UYZtxPoAEdu-e7JlHBQtRA" annotatedElement="_UYZtw_oAEdu-e7JlHBQtRA">
+ <body>The multiplicity of the connector end may not be more general than the multiplicity of the association typing the owning connector.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UYZtxfoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZTF0voAEdu-e7JlHBQtRA" name="part_with_port_empty" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTF0_oAEdu-e7JlHBQtRA" annotatedElement="_UZTF0voAEdu-e7JlHBQtRA">
+ <body>If a connector end is attached to a port of the containing classifier, partWithPort will be empty.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTF1PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZTF1foAEdu-e7JlHBQtRA" name="role_and_part_with_port" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTF1voAEdu-e7JlHBQtRA" annotatedElement="_UZTF1foAEdu-e7JlHBQtRA">
+ <body>If a connector end references both a role and a partWithPort, then the role must be a port that is defined by the type of the partWithPort.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTF1_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UZTF2PoAEdu-e7JlHBQtRA" name="self_part_with_port" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
+ <ownedComment xmi:id="_UZTF2foAEdu-e7JlHBQtRA" annotatedElement="_UZTF2PoAEdu-e7JlHBQtRA">
+ <body>The property held in self.partWithPort must not be a Port.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UZTF2voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UYZtxvoAEdu-e7JlHBQtRA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
+ <ownedAttribute xmi:id="_UYZtx_oAEdu-e7JlHBQtRA" name="definingEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_UYZuJPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZtyPoAEdu-e7JlHBQtRA" annotatedElement="_UYZtx_oAEdu-e7JlHBQtRA">
+ <body>A derived association referencing the corresponding association end on the association which types the connector owing this connector end. This association is derived by selecting the association end at the same place in the ordering of association ends as this connector end.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYZtyfoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYZtyvoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UZTF2_oAEdu-e7JlHBQtRA" name="partWithPort" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_UZTF7_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UZTF3PoAEdu-e7JlHBQtRA" annotatedElement="_UZTF2_oAEdu-e7JlHBQtRA">
+ <body>Indicates the role of the internal structure of a classifier with the port to which the connector end is attached.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UZTF3foAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UZTF3voAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UYZty_oAEdu-e7JlHBQtRA" name="role" type="_UYZt_voAEdu-e7JlHBQtRA" association="_UYZuKPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UYZtzPoAEdu-e7JlHBQtRA" annotatedElement="_UYZty_oAEdu-e7JlHBQtRA">
+ <body>The connectable element attached at this connector end. When an instance of the containing classifier is created, a link may (depending on the multiplicities) be created to an instance of the classifier that types this connectable element.&#xD;
+</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNCPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNCfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_QT7XMFYKEdqrn7iZ0eqieg" name="getDefiningEnd" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_VkstQFYKEdqrn7iZ0eqieg" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcuNCvoAEdu-e7JlHBQtRA" name="A_connectableElement_end" memberEnd="_UYZuAfoAEdu-e7JlHBQtRA _UcuNC_oAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcuNC_oAEdu-e7JlHBQtRA" name="" visibility="private" type="_UYZt_voAEdu-e7JlHBQtRA" association="_UcuNCvoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNDPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNDfoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UYZuKPoAEdu-e7JlHBQtRA" name="A_end_role" memberEnd="_UYZty_oAEdu-e7JlHBQtRA _UcuNDvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcuNDvoAEdu-e7JlHBQtRA" name="end" visibility="private" type="_aOgw0GveEdq4DLWZOhbdEA" association="_UYZuKPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuND_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNEPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UapKKvoAEdu-e7JlHBQtRA" name="Vertex" isAbstract="true">
+ <ownedComment xmi:id="_UapKK_oAEdu-e7JlHBQtRA" annotatedElement="_UapKKvoAEdu-e7JlHBQtRA">
+ <body>A vertex is an abstraction of a node in a state machine graph. In general, it can be the source or destination of any number of transitions.</body>
+ </ownedComment>
+ <generalization xmi:id="_UapKLPoAEdu-e7JlHBQtRA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
+ <ownedAttribute xmi:id="_UapKLfoAEdu-e7JlHBQtRA" name="container" type="_UayTo_oAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UayUCfoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKLvoAEdu-e7JlHBQtRA" annotatedElement="_UapKLfoAEdu-e7JlHBQtRA">
+ <body>The region that contains this vertex.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapKL_oAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapKMPoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKNfoAEdu-e7JlHBQtRA" name="incoming" type="_UapJ3PoAEdu-e7JlHBQtRA" isDerived="true" association="_UcuNKPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKNvoAEdu-e7JlHBQtRA" annotatedElement="_UapKNfoAEdu-e7JlHBQtRA">
+ <body>Specifies the transitions entering this vertex.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNEvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNE_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKMfoAEdu-e7JlHBQtRA" name="outgoing" type="_UapJ3PoAEdu-e7JlHBQtRA" isDerived="true" association="_UcuNLPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKMvoAEdu-e7JlHBQtRA" annotatedElement="_UapKMfoAEdu-e7JlHBQtRA">
+ <body>Specifies the transitions departing from this vertex.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNFPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNFfoAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UapKOfoAEdu-e7JlHBQtRA" name="containingStateMachine" isQuery="true" bodyCondition="_UapKO_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKOvoAEdu-e7JlHBQtRA" annotatedElement="_UapKOfoAEdu-e7JlHBQtRA">
+ <body>The operation containingStateMachine() returns the state machine in which this Vertex is defined</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapKO_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapKOfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapKPPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = if not container->isEmpty()&#xA;then&#xA;-- the container is a region&#xA;container.containingStateMachine()&#xA;else if (oclIsKindOf(Pseudostate)) then&#xA;-- entry or exit point?&#xA;if (kind = #entryPoint) or (kind = #exitPoint) then&#xA;stateMachine&#xA;else if (oclIsKindOf(ConnectionPointReference)) then&#xA;state.containingStateMachine() -- no other valid cases possible&#xA;endif&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapKPfoAEdu-e7JlHBQtRA" type="_UaMdhfoAEdu-e7JlHBQtRA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcuNFvoAEdu-e7JlHBQtRA" name="getIncomings" visibility="protected">
+ <ownedParameter xmi:id="_UcuNF_oAEdu-e7JlHBQtRA" name="" type="_UapJ3PoAEdu-e7JlHBQtRA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNGPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNGfoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcuNGvoAEdu-e7JlHBQtRA" name="getOutgoings" visibility="protected">
+ <ownedParameter xmi:id="_UcuNG_oAEdu-e7JlHBQtRA" name="" type="_UapJ3PoAEdu-e7JlHBQtRA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNHPoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNHfoAEdu-e7JlHBQtRA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UapJ3PoAEdu-e7JlHBQtRA" name="Transition">
+ <ownedComment xmi:id="_UapJ3foAEdu-e7JlHBQtRA" annotatedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <body>A transition is a directed relationship between a source vertex and a target vertex. It may be part of a compound transition, which takes the state machine from one state configuration to another, representing the complete response of the state machine to an occurrence of an event of a particular type.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapJ3voAEdu-e7JlHBQtRA" name="fork_segment_guards" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ3_oAEdu-e7JlHBQtRA" annotatedElement="_UapJ3voAEdu-e7JlHBQtRA">
+ <body>A fork segment must not have guards or triggers.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ4PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (guard->isEmpty() and trigger->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJ4foAEdu-e7JlHBQtRA" name="join_segment_guards" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ4voAEdu-e7JlHBQtRA" annotatedElement="_UapJ4foAEdu-e7JlHBQtRA">
+ <body>A join segment must not have guards or triggers.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ4_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (guard->isEmpty() and trigger->isEmpty())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJ5PoAEdu-e7JlHBQtRA" name="fork_segment_state" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ5foAEdu-e7JlHBQtRA" annotatedElement="_UapJ5PoAEdu-e7JlHBQtRA">
+ <body>A fork segment must always target a state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ5voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (target.oclIsKindOf(State))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJ5_oAEdu-e7JlHBQtRA" name="join_segment_state" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ6PoAEdu-e7JlHBQtRA" annotatedElement="_UapJ5_oAEdu-e7JlHBQtRA">
+ <body>A join segment must always originate from a state.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ6foAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (source.oclIsKindOf(State))</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJ6voAEdu-e7JlHBQtRA" name="outgoing_pseudostates" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ6_oAEdu-e7JlHBQtRA" annotatedElement="_UapJ6voAEdu-e7JlHBQtRA">
+ <body>Transitions outgoing pseudostates may not have a trigger.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ7PoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>source.oclIsKindOf(Pseudostate) and&#xA;((source.kind &lt;> #junction) and (source.kind &lt;> #join) and (source.kind &lt;> #initial)) implies trigger->isEmpty()&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJ7foAEdu-e7JlHBQtRA" name="initial_transition" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ7voAEdu-e7JlHBQtRA" annotatedElement="_UapJ7foAEdu-e7JlHBQtRA">
+ <body>An initial transition at the topmost level (region of a statemachine) either has no trigger or it has a trigger with the stereotype &lt;&lt;create>>.</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ7_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>self.source.oclIsKindOf(Pseudostate) implies&#xA;(self.source.oclAsType(Pseudostate).kind = #initial) implies&#xA;(self.source.container = self.stateMachine.top) implies&#xA;((self.trigger->isEmpty) or&#xA;(self.trigger.stereotype.name = 'create'))&#xA;</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapJ8PoAEdu-e7JlHBQtRA" name="signatures_compatible" constrainedElement="_UapJ3PoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ8foAEdu-e7JlHBQtRA" annotatedElement="_UapJ8PoAEdu-e7JlHBQtRA">
+ <body>In case of more than one trigger, the signatures of these must be compatible in case the parameters of the signal are assigned to local variables/attributes.&#xD;
+</body>
+ </ownedComment>
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapJ8voAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>true</body>
+ </specification>
+ </ownedRule>
+ <generalization xmi:id="_UapJ8_oAEdu-e7JlHBQtRA" general="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ <generalization xmi:id="_UapJ9PoAEdu-e7JlHBQtRA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
+ <ownedAttribute xmi:id="_UapJ9foAEdu-e7JlHBQtRA" name="kind" type="_UayT-_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ9voAEdu-e7JlHBQtRA" annotatedElement="_UapJ9foAEdu-e7JlHBQtRA">
+ <body>Indicates the precise type of the transition.</body>
+ </ownedComment>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_UapJ9_oAEdu-e7JlHBQtRA" type="_UayT-_oAEdu-e7JlHBQtRA" instance="_UayUB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJ-PoAEdu-e7JlHBQtRA" name="container" type="_UayTo_oAEdu-e7JlHBQtRA" subsettedProperty="_UUYJ0foAEdu-e7JlHBQtRA" association="_UayUCvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ-foAEdu-e7JlHBQtRA" annotatedElement="_UapJ-PoAEdu-e7JlHBQtRA">
+ <body>Designates the region that owns this transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapJ-voAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapJ-_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKBPoAEdu-e7JlHBQtRA" name="redefinedTransition" type="_UapJ3PoAEdu-e7JlHBQtRA" subsettedProperty="_UT7dbfoAEdu-e7JlHBQtRA" association="_UayUF_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKBfoAEdu-e7JlHBQtRA" annotatedElement="_UapKBPoAEdu-e7JlHBQtRA">
+ <body>The transition that is redefined by this transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapKBvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapKB_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKCPoAEdu-e7JlHBQtRA" name="guard" type="_UUFO7voAEdu-e7JlHBQtRA" aggregation="composite" subsettedProperty="_UTyTzPoAEdu-e7JlHBQtRA" association="_UayUKvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKCfoAEdu-e7JlHBQtRA" annotatedElement="_UapKCPoAEdu-e7JlHBQtRA">
+ <body>A guard is a constraint that provides a fine-grained control over the firing of the transition. The guard is evaluated when an event occurrence is dispatched by the state machine. If the guard is true at that time, the transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapKCvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapKC_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKDPoAEdu-e7JlHBQtRA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_UT7dafoAEdu-e7JlHBQtRA" association="_UayUNvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKDfoAEdu-e7JlHBQtRA" annotatedElement="_UapKDPoAEdu-e7JlHBQtRA">
+ <body>References the classifier in which context this element may be redefined.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapKDvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapKD_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKEPoAEdu-e7JlHBQtRA" name="effect" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_UToizPoAEdu-e7JlHBQtRA" association="_UayUPvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKEfoAEdu-e7JlHBQtRA" annotatedElement="_UapKEPoAEdu-e7JlHBQtRA">
+ <body>Specifies an optional behavior to be performed when the transition fires.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapKEvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapKE_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKFPoAEdu-e7JlHBQtRA" name="trigger" type="_UZAK2PoAEdu-e7JlHBQtRA" aggregation="composite" association="_UayUT_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKFfoAEdu-e7JlHBQtRA" annotatedElement="_UapKFPoAEdu-e7JlHBQtRA">
+ <body>Specifies the triggers that may fire the transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UapKFvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UapKF_oAEdu-e7JlHBQtRA"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapKAPoAEdu-e7JlHBQtRA" name="target" type="_UapKKvoAEdu-e7JlHBQtRA" association="_UayUDPoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKAfoAEdu-e7JlHBQtRA" annotatedElement="_UapKAPoAEdu-e7JlHBQtRA">
+ <body>Designates the target vertex that is reached when the transition is taken.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNHvoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNH_oAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UapJ_PoAEdu-e7JlHBQtRA" name="source" type="_UapKKvoAEdu-e7JlHBQtRA" association="_UayUC_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapJ_foAEdu-e7JlHBQtRA" annotatedElement="_UapJ_PoAEdu-e7JlHBQtRA">
+ <body>Designates the originating vertex (state or pseudostate) of the transition.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNIPoAEdu-e7JlHBQtRA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNIfoAEdu-e7JlHBQtRA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_UapKGPoAEdu-e7JlHBQtRA" name="redefinitionContext" isQuery="true" bodyCondition="_UapKGvoAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKGfoAEdu-e7JlHBQtRA" annotatedElement="_UapKGPoAEdu-e7JlHBQtRA">
+ <body>The redefinition context of a transition is the nearest containing statemachine.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapKGvoAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapKGPoAEdu-e7JlHBQtRA _UapKDPoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapKG_oAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = let sm = containingStateMachine() in&#xA;if sm.context->isEmpty() or sm.general->notEmpty() then&#xA;sm&#xA;else&#xA;sm.context&#xA;endif</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapKHPoAEdu-e7JlHBQtRA" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapKHfoAEdu-e7JlHBQtRA" name="isConsistentWith" isQuery="true" precondition="_UapKIfoAEdu-e7JlHBQtRA" redefinedOperation="_UT7dcfoAEdu-e7JlHBQtRA" bodyCondition="_UapKH_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKHvoAEdu-e7JlHBQtRA" annotatedElement="_UapKHfoAEdu-e7JlHBQtRA">
+ <body>The query isConsistentWith() specifies that a redefining transition is consistent with a redefined transition provided that the redefining transition has the following relation to the redefined transition: A redefining transition redefines all properties of the corresponding redefined transition, except the source state and the trigger.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapKH_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapKHfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapKIPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = (redefinee.oclIsKindOf(Transition) and&#xD;&#xA; let trans: Transition = redefinee.oclAsType(Transition) in&#xD;&#xA; (source() = trans.source() and trigger() = tran.trigger())</body>
+ </specification>
+ </ownedRule>
+ <ownedRule xmi:id="_UapKIfoAEdu-e7JlHBQtRA" constrainedElement="_UapKHfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapKIvoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>redefinee.isRedefinitionContextValid(self)</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapKI_oAEdu-e7JlHBQtRA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_UapKJPoAEdu-e7JlHBQtRA" name="redefinee" type="_UT7dYPoAEdu-e7JlHBQtRA"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UapKJfoAEdu-e7JlHBQtRA" name="containingStateMachine" isQuery="true" bodyCondition="_UapKJ_oAEdu-e7JlHBQtRA">
+ <ownedComment xmi:id="_UapKJvoAEdu-e7JlHBQtRA" annotatedElement="_UapKJfoAEdu-e7JlHBQtRA">
+ <body>The query containingStateMachine() returns the state machine that contains the transition either directly or transitively.</body>
+ </ownedComment>
+ <ownedRule xmi:id="_UapKJ_oAEdu-e7JlHBQtRA" name="spec" constrainedElement="_UapKJfoAEdu-e7JlHBQtRA">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_UapKKPoAEdu-e7JlHBQtRA">
+ <language>OCL</language>
+ <body>result = container.containingStateMachine()</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_UapKKfoAEdu-e7JlHBQtRA" type="_UaMdhfoAEdu-e7JlHBQtRA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUDPoAEdu-e7JlHBQtRA" name="A_incoming_target" memberEnd="_UapKAPoAEdu-e7JlHBQtRA _UcuNIvoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcuNIvoAEdu-e7JlHBQtRA" name="incoming" visibility="private" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUDPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNI_oAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNJPoAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UayUC_oAEdu-e7JlHBQtRA" name="A_outgoing_source" memberEnd="_UapJ_PoAEdu-e7JlHBQtRA _UcuNJfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcuNJfoAEdu-e7JlHBQtRA" name="outgoing" visibility="private" type="_UapJ3PoAEdu-e7JlHBQtRA" association="_UayUC_oAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNJvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNJ_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcuNKPoAEdu-e7JlHBQtRA" name="A_vertex_incoming" memberEnd="_UapKNfoAEdu-e7JlHBQtRA _UcuNKfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcuNKfoAEdu-e7JlHBQtRA" name="" visibility="private" type="_UapKKvoAEdu-e7JlHBQtRA" association="_UcuNKPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNKvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNK_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_UcuNLPoAEdu-e7JlHBQtRA" name="A_vertex_outgoing" memberEnd="_UapKMfoAEdu-e7JlHBQtRA _UcuNLfoAEdu-e7JlHBQtRA">
+ <ownedEnd xmi:id="_UcuNLfoAEdu-e7JlHBQtRA" name="" visibility="private" type="_UapKKvoAEdu-e7JlHBQtRA" association="_UcuNLPoAEdu-e7JlHBQtRA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UcuNLvoAEdu-e7JlHBQtRA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UcuNL_oAEdu-e7JlHBQtRA"/>
+ </ownedEnd>
+ </packagedElement>
+ <profileApplication xmi:id="_0TBYYGvaEdq4DLWZOhbdEA">
+ <eAnnotations xmi:id="_0TBYYWvaEdq4DLWZOhbdEA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_LWVYQN7NEduglsXU_NKRsA" base_Package="_o8I_sGvaEdq4DLWZOhbdEA" packageName="uml" nsPrefix="uml" nsURI="http://www.eclipse.org/uml2/2.1.0/UML" basePackage="org.eclipse.uml2" prefix="UML"/>
+ <Ecore:EAttribute xmi:id="_LWVYQd7NEduglsXU_NKRsA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_EOZfkC4xEduBJv9HKGdiyg"/>
+ <Ecore:EDataType xmi:id="_LWfJQN7NEduglsXU_NKRsA" instanceClassName="boolean" base_PrimitiveType="_UdivYGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EDataType xmi:id="_LWfJQd7NEduglsXU_NKRsA" instanceClassName="int" base_PrimitiveType="_XqvEIGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EDataType xmi:id="_LWfJQt7NEduglsXU_NKRsA" instanceClassName="java.lang.String" base_PrimitiveType="_aAyVgGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EDataType xmi:id="_LWfJQ97NEduglsXU_NKRsA" instanceClassName="int" base_PrimitiveType="_dRZxsGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EAttribute xmi:id="_LWfJRN7NEduglsXU_NKRsA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_c_GaAC7qEdutFcse1QllAQ"/>
+ <Ecore:EAttribute xmi:id="_LWfJRd7NEduglsXU_NKRsA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_ldWYsS7qEdutFcse1QllAQ"/>
+ <Ecore:EGenericType xmi:id="_PUkIYN7NEduglsXU_NKRsA" base_DataType="_HmwyMtrxEduW-vlXzvw90A"/>
+ <Ecore:EGenericType xmi:id="_QfhfoN7NEduglsXU_NKRsA" base_DataType="_HmwyNtrxEduW-vlXzvw90A"/>
+ <Ecore:EReference xmi:id="_UUrrVfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTfYifoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrVvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTfYjfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrV_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTfYlfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UUrrWPoAEdu-e7JlHBQtRA" base_Operation="_UToiffoAEdu-e7JlHBQtRA" operationName="getGenerals"/>
+ <Ecore:EOperation xmi:id="_UUrrWfoAEdu-e7JlHBQtRA" base_Operation="_UToii_oAEdu-e7JlHBQtRA" operationName="getInheritedMembers"/>
+ <Ecore:EReference xmi:id="_UUrrWvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UToivfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrW_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UToiwfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrXPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UToizPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrXfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UToi0PoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrXvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTyTc_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrX_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTyTuPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrYPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTyTxPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrYfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTyTyPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UUrrYvoAEdu-e7JlHBQtRA" base_Operation="_UTyTz_oAEdu-e7JlHBQtRA" operationName="getImportedMembers"/>
+ <Ecore:EReference xmi:id="_UUrrY_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UT7dafoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrZPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UT7dbfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrZfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UT7df_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrZvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UT7dvvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrZ_oAEdu-e7JlHBQtRA" isTransient="true" isUnsettable="true" base_Property="_UUFOhPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrraPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUFOofoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UUrrafoAEdu-e7JlHBQtRA" base_Operation="_UUFOrfoAEdu-e7JlHBQtRA" operationName="getOpposite"/>
+ <Ecore:EAttribute xmi:id="_UUrravoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UUO_YPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrra_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUO_b_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrbPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUO_cvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrbfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUO_dfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrbvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUO_evoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrb_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUO_j_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UUrrcPoAEdu-e7JlHBQtRA" base_Operation="_UUO_qvoAEdu-e7JlHBQtRA" operationName="lowerBound"/>
+ <Ecore:EOperation xmi:id="_UUrrcfoAEdu-e7JlHBQtRA" base_Operation="_UUO_r_oAEdu-e7JlHBQtRA" operationName="upperBound"/>
+ <Ecore:EOperation xmi:id="_UUrrcvoAEdu-e7JlHBQtRA" base_Operation="_UUO_tPoAEdu-e7JlHBQtRA" operationName="getType"/>
+ <Ecore:EAttribute xmi:id="_UUrrc_oAEdu-e7JlHBQtRA" isTransient="true" isUnsettable="true" base_Property="_UUO_yvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrdPoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UUYJV_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrdfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUYJcvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrdvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUYJdvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrd_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUYJevoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrrePoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUYJtPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrefoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UUYJyfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrevoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UUYJzfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UUrre_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUYJ0foAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UUrrfPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUYJ1foAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UUrrffoAEdu-e7JlHBQtRA" base_Operation="_UUYJ7PoAEdu-e7JlHBQtRA" operationName="getQualifiedName"/>
+ <Ecore:EAttribute xmi:id="_UUrrfvoAEdu-e7JlHBQtRA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_UUYJ-_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UXgWAvoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UVbSN_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UXgWA_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTyTjfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UXgWBPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTyTiPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UXgWBfoAEdu-e7JlHBQtRA" base_Operation="_UVkcNvoAEdu-e7JlHBQtRA" operationName="getLower"/>
+ <Ecore:EOperation xmi:id="_UXgWBvoAEdu-e7JlHBQtRA" base_Operation="_UVkcO_oAEdu-e7JlHBQtRA" operationName="getUpper"/>
+ <Ecore:EReference xmi:id="_UXqG0PoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UTfYkfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UXqG0foAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UWd0IfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UXqG0voAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UT7d1_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UXqG0_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UUFOiPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UXqG1PoAEdu-e7JlHBQtRA" base_Operation="_UXEREPoAEdu-e7JlHBQtRA" operationName="getEndTypes"/>
+ <Ecore:EAttribute xmi:id="_UXqG1foAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UXNbDfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UXz4D_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UXqG8_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UXz4EPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UXqHE_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UXz4EfoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UXz33foAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UX9CSPoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UXz4F_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9CSfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9B-_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9CSvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9B__oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9CS_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9CA_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9CfvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9CXfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9Cf_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9CZfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9CgPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9CafoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UX9CgfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UX9CdvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UYQjwPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYGy_foAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UYZuK_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYZtx_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UYZuLPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYZt8voAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UYZuLfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYZt9voAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UYsopPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYjfEPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UYsopfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYjfP_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UY2aGPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYso_PoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UY2aGfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UYspFvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UZTF8_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UZTFv_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UZTF9PoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UZTFx_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UZTF9foAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UZTFzvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UZc25voAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UZTF_voAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UZc25_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UZTGAvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UZc26PoAEdu-e7JlHBQtRA" base_Operation="_UZc2oPoAEdu-e7JlHBQtRA" operationName="getRequireds"/>
+ <Ecore:EOperation xmi:id="_UZc26foAEdu-e7JlHBQtRA" base_Operation="_UZc2pvoAEdu-e7JlHBQtRA" operationName="getProvideds"/>
+ <Ecore:EAttribute xmi:id="_UZc26voAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UZc2x_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UZc3HfoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UZc27voAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UZmAj_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UZc3QfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UZmAkPoAEdu-e7JlHBQtRA" base_Operation="_UZc3RfoAEdu-e7JlHBQtRA" operationName="getDeployedElements"/>
+ <Ecore:EAttribute xmi:id="_UayUV_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UapJevoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UayUWPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UapJffoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UayUWfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UapJgPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UayUWvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UapJg_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UayUW_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UapJlvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_Ua8EUPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UapKDPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_Ua8EUfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UayTx_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UbFOZfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_Ua8EZvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UbFOZvoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_Ua8EePoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UbFOZ_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_Ua8EkfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UbFOaPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_Ua8ElPoAEdu-e7JlHBQtRA"/>
+ <Ecore:EOperation xmi:id="_UbFOafoAEdu-e7JlHBQtRA" base_Operation="_Ua8EofoAEdu-e7JlHBQtRA" operationName="getMetaclass"/>
+ <Ecore:EAttribute xmi:id="_UbFOavoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_Ua8Ew_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UbFOa_oAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_Ua8Ex_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UbFObPoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_Ua8Ey_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UbFOcfoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_Ua8Et_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UbYwRvoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UbYwQvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_Ub-mIPoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_Ubrrq_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UcIXf_oAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UcIXcvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EAttribute xmi:id="_UcIXgPoAEdu-e7JlHBQtRA" isUnsettable="true" base_Property="_UcIXdvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UcRhL_oAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UcIXpvoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UcuNAPoAEdu-e7JlHBQtRA" isTransient="true" base_Property="_UclDM_oAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UcuNEfoAEdu-e7JlHBQtRA" isTransient="true" isVolatile="true" base_Property="_UYZuAfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UcuNMPoAEdu-e7JlHBQtRA" isTransient="true" isVolatile="true" base_Property="_UapKNfoAEdu-e7JlHBQtRA"/>
+ <Ecore:EReference xmi:id="_UcuNMfoAEdu-e7JlHBQtRA" isTransient="true" isVolatile="true" base_Property="_UapKMfoAEdu-e7JlHBQtRA"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.emf.cdo.tests/uml2/UML.uml b/plugins/org.eclipse.emf.cdo.tests/uml2/UML.uml
new file mode 100644
index 0000000000..65030d1ab8
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.tests/uml2/UML.uml
@@ -0,0 +1,1947 @@
+<?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="_o8I_sGvaEdq4DLWZOhbdEA" name="UML">
+ <packageImport xmi:id="__as3cGvaEdq4DLWZOhbdEA">
+ <importedPackage xmi:type="uml:Model" href="Ecore.uml#_SeWiQMX_EduPJbEsMYXjUQ"/>
+ </packageImport>
+ <packageMerge xmi:id="_H2HkkGvbEdq4DLWZOhbdEA">
+ <mergedPackage xmi:type="uml:Model" href="L3.uml#_EBtHcBmMEdqvcs97umGEYQ"/>
+ </packageMerge>
+ <packageMerge xmi:id="_NTdxgPnjEdunWsS3se92JQ">
+ <mergedPackage xmi:type="uml:Model" href="10536.uml#_y16xIPnhEdunWsS3se92JQ"/>
+ </packageMerge>
+ <packageMerge xmi:id="_zhBU4PnnEdunWsS3se92JQ">
+ <mergedPackage xmi:type="uml:Model" href="10537.uml#_udv6MPnlEdunWsS3se92JQ"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Class" xmi:id="_kl90MGvbEdq4DLWZOhbdEA" name="Element" isAbstract="true">
+ <generalization xmi:id="_rcp_MGvbEdq4DLWZOhbdEA">
+ <general xmi:type="uml:Class" href="Ecore.uml#_SeWihMX_EduPJbEsMYXjUQ"/>
+ </generalization>
+ <ownedOperation xmi:id="_XebbkGvuEdqG6fBIPwe-mw" name="destroy">
+ <ownedComment xmi:id="_skdy8ewbEdqYHf-imTcTdw" annotatedElement="_XebbkGvuEdqG6fBIPwe-mw">
+ <body>Destroys this element by removing all cross references to/from it and removing it from its containing resource or object.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7f8qYGvgEdq4DLWZOhbdEA" name="hasKeyword" isQuery="true">
+ <ownedComment xmi:id="_vBX6QOwbEdqYHf-imTcTdw" annotatedElement="_7f8qYGvgEdq4DLWZOhbdEA">
+ <body>Determines whether this element has the specified keyword.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_9mECUGvgEdq4DLWZOhbdEA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="__FRyUGvgEdq4DLWZOhbdEA" name="keyword" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Oe9r0PICEdulR8T2OJRyFQ" annotatedElement="__FRyUGvgEdq4DLWZOhbdEA">
+ <body>The keyword in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bx0EsGvgEdq4DLWZOhbdEA" name="getKeywords" isQuery="true">
+ <ownedComment xmi:id="_0r7CQOwbEdqYHf-imTcTdw" annotatedElement="_bx0EsGvgEdq4DLWZOhbdEA">
+ <body>Retrieves the keywords for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_fZ0tMGvgEdq4DLWZOhbdEA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hyHaQWvgEdq4DLWZOhbdEA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hyHaQGvgEdq4DLWZOhbdEA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_jlv7EGvgEdq4DLWZOhbdEA" name="addKeyword">
+ <ownedComment xmi:id="_2oMhsOwbEdqYHf-imTcTdw" annotatedElement="_jlv7EGvgEdq4DLWZOhbdEA">
+ <body>Adds the specified keyword to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_y6GO4GvgEdq4DLWZOhbdEA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_mQqpMGvgEdq4DLWZOhbdEA" name="keyword" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_3Z64UPIAEdulR8T2OJRyFQ" annotatedElement="_mQqpMGvgEdq4DLWZOhbdEA">
+ <body>The keyword to add.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_qB6tQGvgEdq4DLWZOhbdEA" name="removeKeyword">
+ <ownedComment xmi:id="_4b-zgOwbEdqYHf-imTcTdw" annotatedElement="_qB6tQGvgEdq4DLWZOhbdEA">
+ <body>Removes the specified keyword from this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1_Pa4GvgEdq4DLWZOhbdEA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_3u_hQGvgEdq4DLWZOhbdEA" name="keyword" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_79s6oPICEdulR8T2OJRyFQ" annotatedElement="_3u_hQGvgEdq4DLWZOhbdEA">
+ <body>The keyword to remove.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_674ZYGvzEdq7X4sGURiZYA" name="getNearestPackage" isQuery="true">
+ <ownedComment xmi:id="_8qbw8OwbEdqYHf-imTcTdw" annotatedElement="_674ZYGvzEdq7X4sGURiZYA">
+ <body>Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_DyktQGv0Edq7X4sGURiZYA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1aQnEWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1aQnEGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Gv0hgGv0Edq7X4sGURiZYA" name="getModel" isQuery="true">
+ <ownedComment xmi:id="__lAEoOwbEdqYHf-imTcTdw" annotatedElement="_Gv0hgGv0Edq7X4sGURiZYA">
+ <body>Retrieves the model that owns (either directly or indirectly) this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Pj1U0Gv0Edq7X4sGURiZYA" type="_NVhqMGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zCjv4Wv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zCjv4Gv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aAC2wHFfEdqziYxiZo0YtA" name="isStereotypeApplicable" isQuery="true">
+ <ownedComment xmi:id="_ErVFQOwcEdqYHf-imTcTdw" annotatedElement="_aAC2wHFfEdqziYxiZo0YtA">
+ <body>Determines whether the specified stereotype is applicable to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_dR_vsHFfEdqziYxiZo0YtA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_d5o-gHFfEdqziYxiZo0YtA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_bLzx4PICEdulR8T2OJRyFQ" annotatedElement="_d5o-gHFfEdqziYxiZo0YtA">
+ <body>The stereotype in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nd4TIGv0Edq7X4sGURiZYA" name="isStereotypeRequired" isQuery="true">
+ <ownedComment xmi:id="_GPxTgOwcEdqYHf-imTcTdw" annotatedElement="_nd4TIGv0Edq7X4sGURiZYA">
+ <body>Determines whether the specified stereotype is required for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_A-TZYGv1Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_0weVIGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_gsqLUPICEdulR8T2OJRyFQ" annotatedElement="_0weVIGv1Edq7X4sGURiZYA">
+ <body>The stereotype in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hDDkwGv0Edq7X4sGURiZYA" name="isStereotypeApplied" isQuery="true">
+ <ownedComment xmi:id="_HClQgOwcEdqYHf-imTcTdw" annotatedElement="_hDDkwGv0Edq7X4sGURiZYA">
+ <body>Determines whether the specified stereotype is applied to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_izQ-IGv0Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_jenoQGv0Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_c-11wPICEdulR8T2OJRyFQ" annotatedElement="_jenoQGv0Edq7X4sGURiZYA">
+ <body>The stereotype in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DkmGMGv1Edq7X4sGURiZYA" name="applyStereotype">
+ <ownedComment xmi:id="_KtkUgOwcEdqYHf-imTcTdw" annotatedElement="_DkmGMGv1Edq7X4sGURiZYA">
+ <body>Applies the specified stereotype to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GGbJwGv1Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_GmnFsGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_4-WfgPIAEdulR8T2OJRyFQ" annotatedElement="_GmnFsGv1Edq7X4sGURiZYA">
+ <body>The stereotype to apply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LUETUGv1Edq7X4sGURiZYA" name="unapplyStereotype">
+ <ownedComment xmi:id="_MSdOsOwcEdqYHf-imTcTdw" annotatedElement="_LUETUGv1Edq7X4sGURiZYA">
+ <body>Unapplies the specified stereotype from this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NqRVsGv1Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OI9c0Gv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_FrjgAPIDEdulR8T2OJRyFQ" annotatedElement="_OI9c0Gv1Edq7X4sGURiZYA">
+ <body>The stereotype to unapply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7oNB8Gv1Edq7X4sGURiZYA" name="getApplicableStereotypes" isQuery="true">
+ <ownedComment xmi:id="_RO894OwcEdqYHf-imTcTdw" annotatedElement="_7oNB8Gv1Edq7X4sGURiZYA">
+ <body>Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_-J4UgGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ah4GoWv2Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ah4GoGv2Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_CQI_QGv2Edq7X4sGURiZYA" name="getApplicableStereotype" isQuery="true">
+ <ownedComment xmi:id="_UmbQAOwcEdqYHf-imTcTdw" annotatedElement="_CQI_QGv2Edq7X4sGURiZYA">
+ <body>Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FC9FIGv2Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i-hrkWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i-hrkGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FX9r0Gv2Edq7X4sGURiZYA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="__AGmkPIAEdulR8T2OJRyFQ" annotatedElement="_FX9r0Gv2Edq7X4sGURiZYA">
+ <body>The qualified name of the applicable stereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IFUr8GvgEdq4DLWZOhbdEA" name="getStereotypeApplications" isQuery="true">
+ <ownedComment xmi:id="_hu_owOwcEdqYHf-imTcTdw" annotatedElement="_IFUr8GvgEdq4DLWZOhbdEA">
+ <body>Retrieves the stereotype applications for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_PAVWQGvgEdq4DLWZOhbdEA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oJqQgWvzEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oJqQgGvzEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Rw07YGv1Edq7X4sGURiZYA" name="getStereotypeApplication" isQuery="true">
+ <ownedComment xmi:id="_uNjbMOwcEdqYHf-imTcTdw" annotatedElement="_Rw07YGv1Edq7X4sGURiZYA">
+ <body>Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Uw5aIGv1Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4QyvUWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4QyvUGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_VtGjsGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_7ovzwPIBEdulR8T2OJRyFQ" annotatedElement="_VtGjsGv1Edq7X4sGURiZYA">
+ <body>The stereotype for which to retrieve an application.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ko32oHFfEdqziYxiZo0YtA" name="getRequiredStereotypes" isQuery="true">
+ <ownedComment xmi:id="_57OjQOwcEdqYHf-imTcTdw" annotatedElement="_ko32oHFfEdqziYxiZo0YtA">
+ <body>Retrieves the stereotypes that are required for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_qX5O8HFfEdqziYxiZo0YtA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSF6sXFgEdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSF6sHFgEdqziYxiZo0YtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yk3QYHFfEdqziYxiZo0YtA" name="getRequiredStereotype" isQuery="true">
+ <ownedComment xmi:id="_-7KA8OwcEdqYHf-imTcTdw" annotatedElement="_yk3QYHFfEdqziYxiZo0YtA">
+ <body>Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_8ovJEHFfEdqziYxiZo0YtA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cpo7kXFgEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cpo7kHFgEdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9NGaYHFfEdqziYxiZo0YtA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_r0tTQPIBEdulR8T2OJRyFQ" annotatedElement="_9NGaYHFfEdqziYxiZo0YtA">
+ <body>The qualified name of the required stereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZR1OsGv1Edq7X4sGURiZYA" name="getAppliedStereotypes" isQuery="true">
+ <ownedComment xmi:id="_Dj1cQOwdEdqYHf-imTcTdw" annotatedElement="_ZR1OsGv1Edq7X4sGURiZYA">
+ <body>Retrieves the stereotypes that are applied to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_cNu_IGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eHU-AWv1Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eHU-AGv1Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_pCV6EGv1Edq7X4sGURiZYA" name="getAppliedStereotype" isQuery="true">
+ <ownedComment xmi:id="_IBy1UOwdEdqYHf-imTcTdw" annotatedElement="_pCV6EGv1Edq7X4sGURiZYA">
+ <body>Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rLbtgGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mO2M0Wv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mO2M0Gv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_r4SMcGv1Edq7X4sGURiZYA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_A1hQEPIBEdulR8T2OJRyFQ" annotatedElement="_r4SMcGv1Edq7X4sGURiZYA">
+ <body>The qualified name of the applied stereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="__s2tsGv2Edq7X4sGURiZYA" name="getAppliedSubstereotypes" isQuery="true">
+ <ownedComment xmi:id="_NAYPMOwdEdqYHf-imTcTdw" annotatedElement="__s2tsGv2Edq7X4sGURiZYA">
+ <body>Retrieves the substereotypes of the specified stereotype that are applied to this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__s2tsWv2Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__s2tsmv2Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__s2ts2v2Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_DJsA8Gv3Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_cF4C4PIBEdulR8T2OJRyFQ" annotatedElement="_DJsA8Gv3Edq7X4sGURiZYA">
+ <body>The superstereotype of the applied substereotypes to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_KpgogGv3Edq7X4sGURiZYA" name="getAppliedSubstereotype" isQuery="true">
+ <ownedComment xmi:id="_P0Fs8OwdEdqYHf-imTcTdw" annotatedElement="_KpgogGv3Edq7X4sGURiZYA">
+ <body>Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_KpgogWv3Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qg4pwWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qg4pwGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_NcK9YGv3Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_ZJ1IgPIBEdulR8T2OJRyFQ" annotatedElement="_NcK9YGv3Edq7X4sGURiZYA">
+ <body>The superstereotype of the applied substereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Kpgogmv3Edq7X4sGURiZYA" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_UNpiYPIBEdulR8T2OJRyFQ" annotatedElement="_Kpgogmv3Edq7X4sGURiZYA">
+ <body>The qualified name of the applied substereotype to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_JbZFAGv2Edq7X4sGURiZYA" name="hasValue" isQuery="true">
+ <ownedComment xmi:id="_b4HfgOwdEdqYHf-imTcTdw" annotatedElement="_JbZFAGv2Edq7X4sGURiZYA">
+ <body>Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_L6F8EGv2Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_MqEngGv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_Zk10EPICEdulR8T2OJRyFQ" annotatedElement="_MqEngGv2Edq7X4sGURiZYA">
+ <body>The stereotype for which to test the property.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RaWfoGv2Edq7X4sGURiZYA" name="propertyName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_XhkUwPICEdulR8T2OJRyFQ" annotatedElement="_RaWfoGv2Edq7X4sGURiZYA">
+ <body>The name of the property in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WGA9gGv2Edq7X4sGURiZYA" name="getValue" isQuery="true">
+ <ownedComment xmi:id="_jrANAOwdEdqYHf-imTcTdw" annotatedElement="_WGA9gGv2Edq7X4sGURiZYA">
+ <body>Retrieves the value of the property with the specified name in the specified stereotype for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_dYH5MGv2Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8gS1oWv3Edq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8gS1oGv3Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_g41m4Gv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_DgsncPICEdulR8T2OJRyFQ" annotatedElement="_g41m4Gv2Edq7X4sGURiZYA">
+ <body>The stereotype for which to retrieve the value.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_eZGOAGv2Edq7X4sGURiZYA" name="propertyName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_DAp1cPICEdulR8T2OJRyFQ" annotatedElement="_eZGOAGv2Edq7X4sGURiZYA">
+ <body>The name of the property whose value to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nMWzYGv2Edq7X4sGURiZYA" name="setValue">
+ <ownedComment xmi:id="_qqfHoOwdEdqYHf-imTcTdw" annotatedElement="_nMWzYGv2Edq7X4sGURiZYA">
+ <body>Sets the value of the property with the specified name in the specified stereotype for this element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_resLQGv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_DkshMPIDEdulR8T2OJRyFQ" annotatedElement="_resLQGv2Edq7X4sGURiZYA">
+ <body>The stereotype for which to set the value.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_o6B2IGv2Edq7X4sGURiZYA" name="propertyName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_BIFU0PIDEdulR8T2OJRyFQ" annotatedElement="_o6B2IGv2Edq7X4sGURiZYA">
+ <body>The name of the property whose value to set.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_m5bH4GzIEdqNr-AKm4G4QQ" name="newValue" effect="read">
+ <ownedComment xmi:id="_9wvlkPICEdulR8T2OJRyFQ" annotatedElement="_m5bH4GzIEdqNr-AKm4G4QQ">
+ <body>The new value for the property.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Tj6BkYbbEdq0WtDJCT4EaQ" name="createEAnnotation">
+ <ownedComment xmi:id="_u8XzkOwdEdqYHf-imTcTdw" annotatedElement="_Tj6BkYbbEdq0WtDJCT4EaQ">
+ <body>Creates an annotation with the specified source and this element as its model element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YE_AEIbbEdq0WtDJCT4EaQ" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWj6cX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aXUPEIbbEdq0WtDJCT4EaQ" name="source" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_6bxfwPIAEdulR8T2OJRyFQ" annotatedElement="_aXUPEIbbEdq0WtDJCT4EaQ">
+ <body>The source for the new annotation.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_4IIuwKO_Edqi_5gqUMOQtA" name="getRelationships">
+ <ownedComment xmi:id="_znllgOwdEdqYHf-imTcTdw" annotatedElement="_4IIuwKO_Edqi_5gqUMOQtA">
+ <body>Retrieves the relationships in which this element is involved.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_OGNIkKPAEdqi_5gqUMOQtA" type="_DH62EKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R5soUaPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R5soUKPAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UJyboKPAEdqi_5gqUMOQtA" name="getRelationships">
+ <ownedComment xmi:id="_1gb9gOwdEdqYHf-imTcTdw" annotatedElement="_UJyboKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the relationships of the specified type in which this element is involved.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_UJyboaPAEdqi_5gqUMOQtA" type="_DH62EKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UJyboqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UJybo6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XBN7wKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
+ <ownedComment xmi:id="_mhklsPIBEdulR8T2OJRyFQ" annotatedElement="_XBN7wKPAEdqi_5gqUMOQtA">
+ <body>The (meta)type of the relationships to retrieve.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fBOfQKPAEdqi_5gqUMOQtA" name="getSourceDirectedRelationships">
+ <ownedComment xmi:id="_5RsBkOwdEdqYHf-imTcTdw" annotatedElement="_fBOfQKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships for which this element is a source.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_fBOfQaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fBOfQqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fBOfQ6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fBOfRKPAEdqi_5gqUMOQtA" name="getSourceDirectedRelationships">
+ <ownedComment xmi:id="_63dskOwdEdqYHf-imTcTdw" annotatedElement="_fBOfRKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships of the specified type for which this element is a source.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_fBOfRaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fBOfRqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fBOfR6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_fBOfSKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
+ <ownedComment xmi:id="_3TviYPIBEdulR8T2OJRyFQ" annotatedElement="_fBOfSKPAEdqi_5gqUMOQtA">
+ <body>The (meta)type of the directed relationships to retrieve.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_t5G5gKPAEdqi_5gqUMOQtA" name="getTargetDirectedRelationships">
+ <ownedComment xmi:id="_9qIBcOwdEdqYHf-imTcTdw" annotatedElement="_t5G5gKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships for which this element is a target.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_t5G5gaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t5G5gqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t5G5g6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_t5G5hKPAEdqi_5gqUMOQtA" name="getTargetDirectedRelationships">
+ <ownedComment xmi:id="__rxJEOwdEdqYHf-imTcTdw" annotatedElement="_t5G5hKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the directed relationships of the specified type for which this element is a target.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_t5G5haPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t5G5hqPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t5G5h6PAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_t5G5iKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
+ <ownedComment xmi:id="_-J0pYPIBEdulR8T2OJRyFQ" annotatedElement="_t5G5iKPAEdqi_5gqUMOQtA">
+ <body>The (meta)type of the directed relationships to retrieve.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_00owUGvdEdq4DLWZOhbdEA" name="Class">
+ <ownedOperation xmi:id="_4xcu4FYKEdqrn7iZ0eqieg" name="getExtensions" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_8-RUoFYKEdqrn7iZ0eqieg" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-3Q2kVYKEdqrn7iZ0eqieg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-3Q2kFYKEdqrn7iZ0eqieg"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EpigwGwQEdq14q0ETb1t3g" name="createOwnedOperation">
+ <ownedComment xmi:id="_ZFCecOweEdqYHf-imTcTdw" annotatedElement="_EpigwGwQEdq14q0ETb1t3g">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IMMIIGwQEdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_bWQJQGwQEdq14q0ETb1t3g" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Fa5AEPH-EdulR8T2OJRyFQ" annotatedElement="_bWQJQGwQEdq14q0ETb1t3g">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qFIE0aOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qFIE0KOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_LLEUEGwQEdq14q0ETb1t3g" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_HOXv4PH-EdulR8T2OJRyFQ" annotatedElement="_LLEUEGwQEdq14q0ETb1t3g">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mIoGsWwQEdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mIoGsGwQEdq14q0ETb1t3g"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RCurAGwQEdq14q0ETb1t3g" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_JQnUcPH-EdulR8T2OJRyFQ" annotatedElement="_RCurAGwQEdq14q0ETb1t3g">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jYfhYWwQEdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jYfhYGwQEdq14q0ETb1t3g"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WoD70GwQEdq14q0ETb1t3g" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_LYzwAPH-EdulR8T2OJRyFQ" annotatedElement="_WoD70GwQEdq14q0ETb1t3g">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-30saOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-30sKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_shXKYGwQEdq14q0ETb1t3g" name="isMetaclass" isQuery="true">
+ <ownedComment xmi:id="_hb-7QOweEdqYHf-imTcTdw" annotatedElement="_shXKYGwQEdq14q0ETb1t3g">
+ <body>Determines whether this class is a metaclass.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_urWVsGwQEdq14q0ETb1t3g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2QuT0GvdEdq4DLWZOhbdEA" name="ExtensionEnd">
+ <ownedOperation xmi:id="_WLw30FYLEdqrn7iZ0eqieg" name="getLower" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_ZNVLYFYLEdqrn7iZ0eqieg" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3FVzkFYkEdqB6vblk3tuMA" name="setLower" visibility="protected">
+ <ownedParameter xmi:id="_4dG3wFYkEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9keOQGvdEdq4DLWZOhbdEA" name="RedefinableTemplateSignature">
+ <ownedOperation xmi:id="_FvJUYFYLEdqrn7iZ0eqieg" name="getInheritedParameters" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_Jbx-MFYLEdqrn7iZ0eqieg" type="_KxRzgGvuEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LQdA0VYLEdqrn7iZ0eqieg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LQdA0FYLEdqrn7iZ0eqieg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ChRfcGveEdq4DLWZOhbdEA" name="OpaqueExpression">
+ <ownedAttribute xmi:id="_EOZfkC4xEduBJv9HKGdiyg" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KIvXES4xEduBJv9HKGdiyg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KIvXEC4xEduBJv9HKGdiyg"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_mv9LcFYiEdqB6vblk3tuMA" name="getResult" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_vXTbwFYiEdqB6vblk3tuMA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0JhNkVYiEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0JhNkFYiEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_qQchgGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_sRo9MGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Dy77oGveEdq4DLWZOhbdEA" name="LiteralInteger">
+ <ownedOperation xmi:id="_e2SLUGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_hAkRkGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FFMNsGveEdq4DLWZOhbdEA" name="LiteralBoolean">
+ <ownedOperation xmi:id="_aXS3gGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_cFthIGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Gjgl0GveEdq4DLWZOhbdEA" name="MultiplicityElement" isAbstract="true">
+ <ownedOperation xmi:id="_qtCaIFYkEdqB6vblk3tuMA" name="setLower" visibility="protected">
+ <ownedParameter xmi:id="_scWboFYkEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vlEgEFYkEdqB6vblk3tuMA" name="setUpper" visibility="protected">
+ <ownedParameter xmi:id="_xJp4QFYkEdqB6vblk3tuMA" name="newUpper" visibility="protected" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Jp_1oGveEdq4DLWZOhbdEA" name="Property">
+ <ownedOperation xmi:id="_oLamMFYJEdqrn7iZ0eqieg" name="getDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_vkrSwFYJEdqrn7iZ0eqieg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uJsjsVYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uJsjsFYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_f-9wMGXCEdqEJs8umHJc9g" name="isSetDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_iAwBwGXCEdqEJs8umHJc9g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vbp60FYjEdqB6vblk3tuMA" name="setDefault" visibility="protected">
+ <ownedParameter xmi:id="_xXxpQFYjEdqB6vblk3tuMA" name="newDefault" visibility="protected" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_d8dDkFYkEdqB6vblk3tuMA" name="setIsComposite" visibility="protected">
+ <ownedParameter xmi:id="_gOfXoFYkEdqB6vblk3tuMA" name="newIsComposite" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_sJdfYFYlEdqB6vblk3tuMA" name="setOpposite" visibility="protected">
+ <ownedParameter xmi:id="_tesM8FYlEdqB6vblk3tuMA" name="newOpposite" visibility="protected" type="_Jp_1oGveEdq4DLWZOhbdEA" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kGtosGXCEdqEJs8umHJc9g" name="unsetDefault" visibility="protected"/>
+ <ownedOperation xmi:id="_SzqSgK6-EdqjppZik4kD8A" name="setIsNavigable">
+ <ownedComment xmi:id="_7VJRoOweEdqYHf-imTcTdw" annotatedElement="_SzqSgK6-EdqjppZik4kD8A">
+ <body>Sets the navigability of this property as indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_VzI7YK6-EdqjppZik4kD8A" name="isNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_r9T40PIFEdulR8T2OJRyFQ" annotatedElement="_VzI7YK6-EdqjppZik4kD8A">
+ <body>The new navigability.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bAUx8K6-EdqjppZik4kD8A" name="getOtherEnd">
+ <ownedComment xmi:id="__u7VUOweEdqYHf-imTcTdw" annotatedElement="_bAUx8K6-EdqjppZik4kD8A">
+ <body>Retrieves the other end of the (binary) association in which this property is a member end.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_eTnusK6-EdqjppZik4kD8A" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6Sxka6-EdqjppZik4kD8A" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6SxkK6-EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lYUggK6-EdqjppZik4kD8A" name="setBooleanDefaultValue">
+ <ownedComment xmi:id="_GdHroOwfEdqYHf-imTcTdw" annotatedElement="_lYUggK6-EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified Boolean value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_4BKD4K6-EdqjppZik4kD8A" name="value" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_pKCf8PIFEdulR8T2OJRyFQ" annotatedElement="_4BKD4K6-EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_94N94K6-EdqjppZik4kD8A" name="setIntegerDefaultValue">
+ <ownedComment xmi:id="_Js2XAOwfEdqYHf-imTcTdw" annotatedElement="_94N94K6-EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified integer value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_94N94a6-EdqjppZik4kD8A" name="value" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_pv4_APIFEdulR8T2OJRyFQ" annotatedElement="_94N94a6-EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GW7PkK6_EdqjppZik4kD8A" name="setStringDefaultValue">
+ <ownedComment xmi:id="_LLBlMOwfEdqYHf-imTcTdw" annotatedElement="_GW7PkK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified string value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GW7Pka6_EdqjppZik4kD8A" name="value" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_syWqcPIFEdulR8T2OJRyFQ" annotatedElement="_GW7Pka6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_NXJxEK6_EdqjppZik4kD8A" name="setUnlimitedNaturalDefaultValue">
+ <ownedComment xmi:id="_NTqssOwfEdqYHf-imTcTdw" annotatedElement="_NXJxEK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the specified unlimited natural value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NXJxEa6_EdqjppZik4kD8A" name="value" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_tZjNUPIFEdulR8T2OJRyFQ" annotatedElement="_NXJxEa6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WU_10K6_EdqjppZik4kD8A" name="setNullDefaultValue">
+ <ownedComment xmi:id="_O5cXsOwfEdqYHf-imTcTdw" annotatedElement="_WU_10K6_EdqjppZik4kD8A">
+ <body>Sets the default value for this property to the null value.</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KyaPMGveEdq4DLWZOhbdEA" name="Parameter">
+ <ownedOperation xmi:id="_7UJKkFYJEdqrn7iZ0eqieg" name="getDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_-PwAEFYJEdqrn7iZ0eqieg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4VLgQVYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4VLgQFYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QKbgcWXCEdqEJs8umHJc9g" name="isSetDefault" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_TKzhMGXCEdqEJs8umHJc9g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5FAasFYjEdqB6vblk3tuMA" name="setDefault" visibility="protected">
+ <ownedParameter xmi:id="_7D0QwFYjEdqB6vblk3tuMA" name="newDefault" visibility="protected" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VQnXIGXCEdqEJs8umHJc9g" name="unsetDefault" visibility="protected"/>
+ <ownedOperation xmi:id="_kKuPgK6_EdqjppZik4kD8A" name="setBooleanDefaultValue">
+ <ownedComment xmi:id="_TCrd8OwfEdqYHf-imTcTdw" annotatedElement="_kKuPgK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified Boolean value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kKuPga6_EdqjppZik4kD8A" name="value" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_wjzYQPIEEdulR8T2OJRyFQ" annotatedElement="_kKuPga6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kKuPgq6_EdqjppZik4kD8A" name="setIntegerDefaultValue">
+ <ownedComment xmi:id="_UB3DAOwfEdqYHf-imTcTdw" annotatedElement="_kKuPgq6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified integer value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kKuPg66_EdqjppZik4kD8A" name="value" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_zyVJwPIEEdulR8T2OJRyFQ" annotatedElement="_kKuPg66_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kK3ZcK6_EdqjppZik4kD8A" name="setStringDefaultValue">
+ <ownedComment xmi:id="_Z2PccOwfEdqYHf-imTcTdw" annotatedElement="_kK3ZcK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified string value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kK3Zca6_EdqjppZik4kD8A" name="value" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_0mWAoPIEEdulR8T2OJRyFQ" annotatedElement="_kK3Zca6_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kK3Zcq6_EdqjppZik4kD8A" name="setUnlimitedNaturalDefaultValue">
+ <ownedComment xmi:id="_asyC4OwfEdqYHf-imTcTdw" annotatedElement="_kK3Zcq6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the specified unlimited natural value.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kK3Zc66_EdqjppZik4kD8A" name="value" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_1RG04PIEEdulR8T2OJRyFQ" annotatedElement="_kK3Zc66_EdqjppZik4kD8A">
+ <body>The new default value.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kK3ZdK6_EdqjppZik4kD8A" name="setNullDefaultValue">
+ <ownedComment xmi:id="_c7hyYOwfEdqYHf-imTcTdw" annotatedElement="_kK3ZdK6_EdqjppZik4kD8A">
+ <body>Sets the default value for this parameter to the null value.</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_M4X2IGveEdq4DLWZOhbdEA" name="Operation">
+ <ownedOperation xmi:id="_ho5pgFYLEdqrn7iZ0eqieg" name="getLower" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_jukVgFYLEdqrn7iZ0eqieg" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ljsEEFYLEdqrn7iZ0eqieg" name="getUpper" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_pAh-YFYLEdqrn7iZ0eqieg" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LgBIAFYlEdqB6vblk3tuMA" name="setIsOrdered" visibility="protected">
+ <ownedParameter xmi:id="_NIoEkFYlEdqB6vblk3tuMA" name="newIsOrdered" visibility="protected" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QTIRsFYlEdqB6vblk3tuMA" name="setIsUnique" visibility="protected">
+ <ownedParameter xmi:id="_SFRkwFYlEdqB6vblk3tuMA" name="newIsUnique" visibility="protected" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VrpOgFYlEdqB6vblk3tuMA" name="setLower" visibility="protected">
+ <ownedParameter xmi:id="_XdMrsFYlEdqB6vblk3tuMA" name="newLower" visibility="protected" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kqFjwFYlEdqB6vblk3tuMA" name="setType" visibility="protected">
+ <ownedParameter xmi:id="_l2PN0FYlEdqB6vblk3tuMA" name="newType" visibility="protected" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_arIAQFYlEdqB6vblk3tuMA" name="setUpper" visibility="protected">
+ <ownedParameter xmi:id="_b-4HIFYlEdqB6vblk3tuMA" name="newUpper" visibility="protected" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_HxDswKOyEdqi_5gqUMOQtA" name="getReturnResult">
+ <ownedComment xmi:id="_tVUrUOwfEdqYHf-imTcTdw" annotatedElement="_HxDswKOyEdqi_5gqUMOQtA">
+ <body>Retrieves the (only) return result parameter for this operation.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_MiYGsKOyEdqi_5gqUMOQtA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OvfegaOyEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OvfegKOyEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_PyCx8GveEdq4DLWZOhbdEA" name="InstanceValue">
+ <ownedOperation xmi:id="_QUJ-oWWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_T0RPYGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Q-yR4GveEdq4DLWZOhbdEA" name="LiteralUnlimitedNatural">
+ <ownedOperation xmi:id="_lSARkGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_nyfRUGWKEdq-f4093SZhVA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TUPtYGveEdq4DLWZOhbdEA" name="Behavior" isAbstract="true">
+ <ownedOperation xmi:id="_Zp2iwFYgEdqB6vblk3tuMA" name="getContext" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_flYtEFYgEdqB6vblk3tuMA" type="_iY7sMGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FIHcsVYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FIHcsFYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZAuvEGveEdq4DLWZOhbdEA" name="Port">
+ <ownedOperation xmi:id="_gtr8cFYhEdqB6vblk3tuMA" name="getProvideds" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_jIqKEFYhEdqB6vblk3tuMA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k2x4wVYhEdqB6vblk3tuMA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k2x4wFYhEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_mxt7cFYhEdqB6vblk3tuMA" name="getRequireds" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_osMrIFYhEdqB6vblk3tuMA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pyY3IVYhEdqB6vblk3tuMA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pyY3IFYhEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_aOgw0GveEdq4DLWZOhbdEA" name="ConnectorEnd">
+ <ownedOperation xmi:id="_QT7XMFYKEdqrn7iZ0eqieg" name="getDefiningEnd" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_VkstQFYKEdqrn7iZ0eqieg" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gfgNwGveEdq4DLWZOhbdEA" name="Message">
+ <ownedOperation xmi:id="_8U6CAFYfEdqB6vblk3tuMA" name="getMessageKind" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_-_OTMFYfEdqB6vblk3tuMA" type="_Y_jskGvtEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_R__uEFYjEdqB6vblk3tuMA" name="getSignature" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_WEKuIFYjEdqB6vblk3tuMA" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YR4i4VYjEdqB6vblk3tuMA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YR4i4FYjEdqB6vblk3tuMA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iY7sMGvsEdqG6fBIPwe-mw" name="BehavioredClassifier" isAbstract="true">
+ <ownedOperation xmi:id="_dx6lQK69EdqjppZik4kD8A" name="getImplementedInterfaces">
+ <ownedComment xmi:id="_5-ADEOwfEdqYHf-imTcTdw" annotatedElement="_dx6lQK69EdqjppZik4kD8A">
+ <body>Retrieves the interfaces on which this behaviored classifier has an interface realization dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_gSQbEK69EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iwNEMa69EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iwNEMK69EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lbuPQK69EdqjppZik4kD8A" name="getAllImplementedInterfaces">
+ <ownedComment xmi:id="_-G81cOwfEdqYHf-imTcTdw" annotatedElement="_lbuPQK69EdqjppZik4kD8A">
+ <body>Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lbuPQa69EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lbuPQq69EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lbuPQ669EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_skHGwGvsEdqG6fBIPwe-mw" name="Extension">
+ <ownedOperation xmi:id="_k1UVkJPtEdqpjIDDFZ2Hgw" name="getStereotypeEnd" isQuery="true">
+ <ownedComment xmi:id="_VLzRIOwgEdqYHf-imTcTdw" annotatedElement="_k1UVkJPtEdqpjIDDFZ2Hgw">
+ <body>Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_BPaXoJPuEdqpjIDDFZ2Hgw" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X2BEMZQGEdqpjIDDFZ2Hgw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X2BEMJQGEdqpjIDDFZ2Hgw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_6cTFEJPtEdqpjIDDFZ2Hgw" name="getStereotype" isQuery="true">
+ <ownedComment xmi:id="_fNTLQOwgEdqYHf-imTcTdw" annotatedElement="_6cTFEJPtEdqpjIDDFZ2Hgw">
+ <body>Retrieves the stereotype that extends a metaclass through this extension.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_C7cboJPuEdqpjIDDFZ2Hgw" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aF9tkZQGEdqpjIDDFZ2Hgw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aF9tkJQGEdqpjIDDFZ2Hgw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_csVgUGvtEdqG6fBIPwe-mw" name="NamedElement" isAbstract="true">
+ <ownedOperation xmi:id="_o2CW4GwKEdq7X4sGURiZYA" name="createDependency">
+ <ownedComment xmi:id="_kZ5L8OwgEdqYHf-imTcTdw" annotatedElement="_o2CW4GwKEdq7X4sGURiZYA">
+ <body>Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_us8f4GwKEdq7X4sGURiZYA" type="_rEDGkGwKEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_vYdiEGwKEdq7X4sGURiZYA" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_z0MAYPIDEdulR8T2OJRyFQ" annotatedElement="_vYdiEGwKEdq7X4sGURiZYA">
+ <body>The supplier for the new dependency.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_z4f-wGwKEdq7X4sGURiZYA" name="getLabel" isQuery="true">
+ <ownedComment xmi:id="_pnOzgOwgEdqYHf-imTcTdw" annotatedElement="_z4f-wGwKEdq7X4sGURiZYA">
+ <body>Retrieves a localized label for this named element.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1p5q8GwKEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_34WfgWwKEdq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_34WfgGwKEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5KmxkGwKEdq7X4sGURiZYA" name="getLabel" isQuery="true">
+ <ownedComment xmi:id="_rCa_IOwgEdqYHf-imTcTdw" annotatedElement="_5KmxkGwKEdq7X4sGURiZYA">
+ <body>Retrieves a label for this named element, localized if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_5KmxkWwKEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5KmxkmwKEdq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Kmxk2wKEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_6FwyQGwKEdq7X4sGURiZYA" name="localize" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_3OVzEPIDEdulR8T2OJRyFQ" annotatedElement="_6FwyQGwKEdq7X4sGURiZYA">
+ <body>Whether to localize the label.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Dww9MNlrEduDKPkA-0jJZg" name="createUsage">
+ <ownedComment xmi:id="_wQPHYNlrEduDKPkA-0jJZg" annotatedElement="_Dww9MNlrEduDKPkA-0jJZg">
+ <body>Creates a usage between this named element and the specified supplier, owned by this named element's nearest package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_phglkNlrEduDKPkA-0jJZg" type="_h18oENlrEduDKPkA-0jJZg" direction="return"/>
+ <ownedParameter xmi:id="_xcQ1oNlrEduDKPkA-0jJZg" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw">
+ <ownedComment xmi:id="_05e0gPIDEdulR8T2OJRyFQ" annotatedElement="_xcQ1oNlrEduDKPkA-0jJZg">
+ <body>The supplier for the new usage.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ynRtoGvtEdqG6fBIPwe-mw" name="Type" isAbstract="true">
+ <ownedOperation xmi:id="_RNEaIGwNEdq7X4sGURiZYA" name="createAssociation">
+ <ownedComment xmi:id="_w29JkOwgEdqYHf-imTcTdw" annotatedElement="_RNEaIGwNEdq7X4sGURiZYA">
+ <body>Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_URUOQGwNEdq7X4sGURiZYA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_AEONYGwOEdq7X4sGURiZYA" name="end1IsNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_QiftAPIGEdulR8T2OJRyFQ" annotatedElement="_AEONYGwOEdq7X4sGURiZYA">
+ <body>The navigability for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7HueMGwNEdq7X4sGURiZYA" name="end1Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_OnjqUPIGEdulR8T2OJRyFQ" annotatedElement="_7HueMGwNEdq7X4sGURiZYA">
+ <body>The aggregation for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_2TaaoGwNEdq7X4sGURiZYA" name="end1Name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Se69cPIGEdulR8T2OJRyFQ" annotatedElement="_2TaaoGwNEdq7X4sGURiZYA">
+ <body>The name for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_x-QYQGwNEdq7X4sGURiZYA" name="end1Lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_RpH94PIGEdulR8T2OJRyFQ" annotatedElement="_x-QYQGwNEdq7X4sGURiZYA">
+ <body>The lower bound for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_uL9yYGwNEdq7X4sGURiZYA" name="end1Upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_UmXyIPIGEdulR8T2OJRyFQ" annotatedElement="_uL9yYGwNEdq7X4sGURiZYA">
+ <body>The upper bound for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_qFQbsGwNEdq7X4sGURiZYA" name="end1Type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_TTX5MPIGEdulR8T2OJRyFQ" annotatedElement="_qFQbsGwNEdq7X4sGURiZYA">
+ <body>The type for the first end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_mB-McGwNEdq7X4sGURiZYA" name="end2IsNavigable" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_YRNsMPIGEdulR8T2OJRyFQ" annotatedElement="_mB-McGwNEdq7X4sGURiZYA">
+ <body>The navigability for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_hm2sAGwNEdq7X4sGURiZYA" name="end2Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_VjBAkPIGEdulR8T2OJRyFQ" annotatedElement="_hm2sAGwNEdq7X4sGURiZYA">
+ <body>The aggregation for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_eK6JkGwNEdq7X4sGURiZYA" name="end2Name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_cTJ3oPIGEdulR8T2OJRyFQ" annotatedElement="_eK6JkGwNEdq7X4sGURiZYA">
+ <body>The name for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_auE2UGwNEdq7X4sGURiZYA" name="end2Lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_aGo8wPIGEdulR8T2OJRyFQ" annotatedElement="_auE2UGwNEdq7X4sGURiZYA">
+ <body>The lower bound for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_VprIUGwNEdq7X4sGURiZYA" name="end2Upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_eBbXUPIGEdulR8T2OJRyFQ" annotatedElement="_VprIUGwNEdq7X4sGURiZYA">
+ <body>The upper bound for the second end of the new association.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_10fbsKPAEdqi_5gqUMOQtA" name="getAssociations">
+ <ownedComment xmi:id="_2pskQOwgEdqYHf-imTcTdw" annotatedElement="_10fbsKPAEdqi_5gqUMOQtA">
+ <body>Retrieves the associations in which this type is involved.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_5F3F0KPAEdqi_5gqUMOQtA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7CRvMaPAEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7CRvMKPAEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_8Ugn8GvtEdqG6fBIPwe-mw" name="Interface">
+ <ownedOperation xmi:id="_FzLo0HL0EdqziYxiZo0YtA" name="createOwnedOperation">
+ <ownedComment xmi:id="_59cM8OwgEdqYHf-imTcTdw" annotatedElement="_FzLo0HL0EdqziYxiZo0YtA">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FzLo0XL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_FzLo0nL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_mB3gAPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo0nL0EdqziYxiZo0YtA">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7NjlYaOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7NjlYKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FzLo1HL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_oBbkAPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo1HL0EdqziYxiZo0YtA">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FzLo1XL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FzLo1nL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FzLo13L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_pvZhsPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo13L0EdqziYxiZo0YtA">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FzLo2HL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FzLo2XL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FzLo03L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_sWcccPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo03L0EdqziYxiZo0YtA">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__G_8IaOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__G_8IKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_XUC3gHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_-2N5wOwgEdqYHf-imTcTdw" annotatedElement="_XUC3gHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_XUC3gXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_XUC3gnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_NDNDAPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3gnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EKqDQaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EKqDQKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XUC3g3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_OoiCEPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3g3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IuRYYaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IuRYYKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XUC3hHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_LlK-wPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3hHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XUC3hXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Qy-gYPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3hXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KxRzgGvuEdqG6fBIPwe-mw" name="TemplateParameter"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-cvRAGvzEdq7X4sGURiZYA" name="Package">
+ <ownedOperation xmi:id="_4JyAAGwFEdq7X4sGURiZYA" name="createOwnedClass">
+ <ownedComment xmi:id="_RcX8kOwhEdqYHf-imTcTdw" annotatedElement="_4JyAAGwFEdq7X4sGURiZYA">
+ <body>Creates a(n) (abstract) class with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_94M7YGwFEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_BGSA8GwGEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_OgV58PIEEdulR8T2OJRyFQ" annotatedElement="_BGSA8GwGEdq7X4sGURiZYA">
+ <body>The name for the new class, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-i0lsGwFEdq7X4sGURiZYA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_MPDMwPIEEdulR8T2OJRyFQ" annotatedElement="_-i0lsGwFEdq7X4sGURiZYA">
+ <body>Whether the new class should be abstract.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Fqo88GwGEdq7X4sGURiZYA" name="createOwnedEnumeration">
+ <ownedComment xmi:id="_aE54oOwhEdqYHf-imTcTdw" annotatedElement="_Fqo88GwGEdq7X4sGURiZYA">
+ <body>Creates a enumeration with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_MMBmUGwGEdq7X4sGURiZYA" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_Mz9wEGwGEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_UWEXMPIEEdulR8T2OJRyFQ" annotatedElement="_Mz9wEGwGEdq7X4sGURiZYA">
+ <body>The name for the new enumeration, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SSSZ8GwGEdq7X4sGURiZYA" name="createOwnedPrimitiveType">
+ <ownedComment xmi:id="_bT4NMOwhEdqYHf-imTcTdw" annotatedElement="_SSSZ8GwGEdq7X4sGURiZYA">
+ <body>Creates a primitive type with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Y8BHAGwGEdq7X4sGURiZYA" type="_V6vuYGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_ZY7FcGwGEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_ZtP3QPIEEdulR8T2OJRyFQ" annotatedElement="_ZY7FcGwGEdq7X4sGURiZYA">
+ <body>The name for the new primitive type, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SwrbIHFhEdqziYxiZo0YtA" name="createOwnedInterface">
+ <ownedComment xmi:id="_ecTWsOwhEdqYHf-imTcTdw" annotatedElement="_SwrbIHFhEdqziYxiZo0YtA">
+ <body>Creates an interface with the specified name as an owned type of this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_SwrbIXFhEdqziYxiZo0YtA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_SwrbInFhEdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_YHUbQPIEEdulR8T2OJRyFQ" annotatedElement="_SwrbInFhEdqziYxiZo0YtA">
+ <body>The name for the new interface, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_z4Q98Gv5Edq7X4sGURiZYA" name="isProfileApplied" isQuery="true">
+ <ownedComment xmi:id="_h951MOwhEdqYHf-imTcTdw" annotatedElement="_z4Q98Gv5Edq7X4sGURiZYA">
+ <body>Determines whether the specified profile is applied to this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_19CSEGv5Edq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_2TitkGv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_sf7TIPIEEdulR8T2OJRyFQ" annotatedElement="_2TitkGv5Edq7X4sGURiZYA">
+ <body>The profile in question.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_r--GcGv5Edq7X4sGURiZYA" name="applyProfile">
+ <ownedComment xmi:id="_pfXbgOwhEdqYHf-imTcTdw" annotatedElement="_r--GcGv5Edq7X4sGURiZYA">
+ <body>Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_w2ZvcGv5Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ObBOMXF8EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ObBOMHF8EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_xMwZ8Gv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_KbQ68PIEEdulR8T2OJRyFQ" annotatedElement="_xMwZ8Gv5Edq7X4sGURiZYA">
+ <body>The profile to apply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_448CgGv5Edq7X4sGURiZYA" name="unapplyProfile">
+ <ownedComment xmi:id="_4cT78OwhEdqYHf-imTcTdw" annotatedElement="_448CgGv5Edq7X4sGURiZYA">
+ <body>Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_6yryYGv5Edq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZvqLMXF8EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZvqLMHF8EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7KhqoGv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_ubdLsPIEEdulR8T2OJRyFQ" annotatedElement="_7KhqoGv5Edq7X4sGURiZYA">
+ <body>The profile to unapply.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZCKeMGv5Edq7X4sGURiZYA" name="getAppliedProfiles" isQuery="true">
+ <ownedComment xmi:id="_G2jX8OwiEdqYHf-imTcTdw" annotatedElement="_ZCKeMGv5Edq7X4sGURiZYA">
+ <body>Retrieves the profiles that are applied to this package.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_cExTkGv5Edq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eExccWv5Edq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eExccGv5Edq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kCeTgGwFEdq7X4sGURiZYA" name="getAllAppliedProfiles" isQuery="true">
+ <ownedComment xmi:id="_KHdvEOwiEdqYHf-imTcTdw" annotatedElement="_kCeTgGwFEdq7X4sGURiZYA">
+ <body>Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_kCeTgWwFEdq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCeTgmwFEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCeTg2wFEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tasT4G11EdqniMBnIUw7ig" name="getAppliedProfile" isQuery="true">
+ <ownedComment xmi:id="_SSMU0OwiEdqYHf-imTcTdw" annotatedElement="_tasT4G11EdqniMBnIUw7ig">
+ <body>Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wSH0AG11EdqniMBnIUw7ig" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yo7TUW11EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yo7TUG11EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_2bXqMG11EdqniMBnIUw7ig" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_c7n3wPIEEdulR8T2OJRyFQ" annotatedElement="_2bXqMG11EdqniMBnIUw7ig">
+ <body>The qualified name of the applied profile to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7MPYMG11EdqniMBnIUw7ig" name="getAppliedProfile" isQuery="true">
+ <ownedComment xmi:id="_fm_LsOwiEdqYHf-imTcTdw" annotatedElement="_7MPYMG11EdqniMBnIUw7ig">
+ <body>Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_7MPYMW11EdqniMBnIUw7ig" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7MPYMm11EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7MPYM211EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7MPYNG11EdqniMBnIUw7ig" name="qualifiedName" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_fzp00PIEEdulR8T2OJRyFQ" annotatedElement="_7MPYNG11EdqniMBnIUw7ig">
+ <body>The qualified name of the applied profile to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_8HGd8G11EdqniMBnIUw7ig" name="recurse" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_j8mnMPIEEdulR8T2OJRyFQ" annotatedElement="_8HGd8G11EdqniMBnIUw7ig">
+ <body>Whether to look in nesting packages.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kxh7IG10EdqniMBnIUw7ig" name="getAllProfileApplications" isQuery="true">
+ <ownedComment xmi:id="_pMBMQOwiEdqYHf-imTcTdw" annotatedElement="_kxh7IG10EdqniMBnIUw7ig">
+ <body>Retrieves all the profile applications for this package, including profile applications for its nesting package(s).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_pW8AAG10EdqniMBnIUw7ig" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvqx8W10EdqniMBnIUw7ig" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvqx8G10EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FOcTIKO_Edqi_5gqUMOQtA" name="getProfileApplication" isQuery="true">
+ <ownedComment xmi:id="_vvVvUOwiEdqYHf-imTcTdw" annotatedElement="_FOcTIKO_Edqi_5gqUMOQtA">
+ <body>Retrieves the application of the specified profile to this package, or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FOcTIaO_Edqi_5gqUMOQtA" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FOcTIqO_Edqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FOcTI6O_Edqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FOcTJKO_Edqi_5gqUMOQtA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_nAG0cPIEEdulR8T2OJRyFQ" annotatedElement="_FOcTJKO_Edqi_5gqUMOQtA">
+ <body>The profile whose application to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QaTt4G11EdqniMBnIUw7ig" name="getProfileApplication" isQuery="true">
+ <ownedComment xmi:id="_wmn8oOwiEdqYHf-imTcTdw" annotatedElement="_QaTt4G11EdqniMBnIUw7ig">
+ <body>Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_QaTt4W11EdqniMBnIUw7ig" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QaTt4m11EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QaTt4211EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rYVqgG2JEdq0sOo3CGeQEg" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_pERroPIEEdulR8T2OJRyFQ" annotatedElement="_rYVqgG2JEdq0sOo3CGeQEg">
+ <body>The profile whose application to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RiuHcG11EdqniMBnIUw7ig" name="recurse" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_q8YcwPIEEdulR8T2OJRyFQ" annotatedElement="_RiuHcG11EdqniMBnIUw7ig">
+ <body>Whether to look in nesting packages.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_NrOGAIbSEdqhgMOAOWpjfQ" name="isModelLibrary" isQuery="true">
+ <ownedComment xmi:id="_4KKmkOwiEdqYHf-imTcTdw" annotatedElement="_NrOGAIbSEdqhgMOAOWpjfQ">
+ <body>Determines whether this package is a model library.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NrOGAYbSEdqhgMOAOWpjfQ" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__pew8GvzEdq7X4sGURiZYA" name="Profile">
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_HmwyMtrxEduW-vlXzvw90A" name="EMap_EJavaObject_EJavaObject">
+ <templateBinding xmi:id="_0mVaQNryEduJovxV1TmzsQ">
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.uml#_SeWke8X_EduPJbEsMYXjUQ"/>
+ <parameterSubstitution xmi:id="_x9HDUNr0EduJovxV1TmzsQ">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfMX_EduPJbEsMYXjUQ"/>
+ <actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ <parameterSubstitution xmi:id="_zYmw8Nr0EduJovxV1TmzsQ">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfsX_EduPJbEsMYXjUQ"/>
+ <actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </nestedClassifier>
+ <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_HmwyNtrxEduW-vlXzvw90A" name="EMap_EString_EString">
+ <templateBinding xmi:id="_2w0U0NryEduJovxV1TmzsQ">
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.uml#_SeWke8X_EduPJbEsMYXjUQ"/>
+ <parameterSubstitution xmi:id="_HmwyONrxEduW-vlXzvw90A" actual="_aAyVgGvsEdqG6fBIPwe-mw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfMX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ <parameterSubstitution xmi:id="_HmwyOdrxEduW-vlXzvw90A" actual="_aAyVgGvsEdqG6fBIPwe-mw">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfsX_EduPJbEsMYXjUQ"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </nestedClassifier>
+ <ownedOperation xmi:id="_2QKPIGwJEdq7X4sGURiZYA" name="create">
+ <ownedComment xmi:id="_QbUdUOwjEdqYHf-imTcTdw" annotatedElement="_2QKPIGwJEdq7X4sGURiZYA">
+ <body>Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_9o-PwGwJEdq7X4sGURiZYA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-se7MGwJEdq7X4sGURiZYA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_6Ay3IPIEEdulR8T2OJRyFQ" annotatedElement="_-se7MGwJEdq7X4sGURiZYA">
+ <body>The classifier of which to create an instance.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_senckGwJEdq7X4sGURiZYA" name="createOwnedStereotype">
+ <ownedComment xmi:id="_VxTDgOwjEdqYHf-imTcTdw" annotatedElement="_senckGwJEdq7X4sGURiZYA">
+ <body>Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_upCswGwJEdq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_xOvjsGwJEdq7X4sGURiZYA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_9ZmmAPIEEdulR8T2OJRyFQ" annotatedElement="_xOvjsGwJEdq7X4sGURiZYA">
+ <body>The name for the new stereotype, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_vJOosGwJEdq7X4sGURiZYA" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_73tVcPIEEdulR8T2OJRyFQ" annotatedElement="_vJOosGwJEdq7X4sGURiZYA">
+ <body>Whether the new stereotype should be abstract.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_8ACYgGwIEdq7X4sGURiZYA" name="isDefined" isQuery="true">
+ <ownedComment xmi:id="_iDLr4OwjEdqYHf-imTcTdw" annotatedElement="_8ACYgGwIEdq7X4sGURiZYA">
+ <body>Determines whether this profile is defined.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_E3LYUGwJEdq7X4sGURiZYA" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GdjgQGwJEdq7X4sGURiZYA" name="define">
+ <ownedComment xmi:id="_gx0xsOwjEdqYHf-imTcTdw" annotatedElement="_GdjgQGwJEdq7X4sGURiZYA">
+ <body>Defines this profile by (re)creating Ecore representations of its current contents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_JO2EsGwgEdqHKKVoxc0dlA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bctjUWwgEdqHKKVoxc0dlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bctjUGwgEdqHKKVoxc0dlA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_M-uloNrsEduJovxV1TmzsQ" name="define">
+ <ownedComment xmi:id="_-vR1oNrxEduJovxV1TmzsQ" annotatedElement="_M-uloNrsEduJovxV1TmzsQ">
+ <body>Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Rn2F0NrsEduJovxV1TmzsQ" name="" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_cg7vQNrsEduJovxV1TmzsQ" name="options" type="_HmwyNtrxEduW-vlXzvw90A">
+ <ownedComment xmi:id="_OYzSEPIFEdulR8T2OJRyFQ" annotatedElement="_cg7vQNrsEduJovxV1TmzsQ">
+ <body>The options to use.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aE-DINrsEduJovxV1TmzsQ" name="diagnostics">
+ <ownedComment xmi:id="_RGiqsPIFEdulR8T2OJRyFQ" annotatedElement="_aE-DINrsEduJovxV1TmzsQ">
+ <body>The chain of diagnostics to which problems are to be appended.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkTcX_EduPJbEsMYXjUQ"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_dHhOINrsEduJovxV1TmzsQ" name="context" type="_HmwyMtrxEduW-vlXzvw90A">
+ <ownedComment xmi:id="_TxUO4PIFEdulR8T2OJRyFQ" annotatedElement="_dHhOINrsEduJovxV1TmzsQ">
+ <body>The cache of context-specific information.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LLkQEGwgEdqHKKVoxc0dlA" name="getDefinition" isQuery="true">
+ <ownedComment xmi:id="_nSm-IOwjEdqYHf-imTcTdw" annotatedElement="_LLkQEGwgEdqHKKVoxc0dlA">
+ <body>Retrieves the current definition (Ecore representation) of this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_P0QScGwgEdqHKKVoxc0dlA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dKYmEWwgEdqHKKVoxc0dlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dKYmEGwgEdqHKKVoxc0dlA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nFBqQGwgEdqHKKVoxc0dlA" name="getDefinition" isQuery="true">
+ <ownedComment xmi:id="_qItBgOwjEdqYHf-imTcTdw" annotatedElement="_nFBqQGwgEdqHKKVoxc0dlA">
+ <body>Retrieves the current definition (Ecore representation) of the specified named element in this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_nFBqQWwgEdqHKKVoxc0dlA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWifsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nFBqQmwgEdqHKKVoxc0dlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nFBqQ2wgEdqHKKVoxc0dlA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_pPTwgGwgEdqHKKVoxc0dlA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Wo6HEPIFEdulR8T2OJRyFQ" annotatedElement="_pPTwgGwgEdqHKKVoxc0dlA">
+ <body>The named element whose definition to retrieve.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LBK1YGwJEdq7X4sGURiZYA" name="getReferencedMetaclasses" isQuery="true">
+ <ownedComment xmi:id="_rWMIUOwjEdqYHf-imTcTdw" annotatedElement="_LBK1YGwJEdq7X4sGURiZYA">
+ <body>Retrieves the metaclasses referenced by this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Ns-UUGwJEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PU_bAWwJEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PU_bAGwJEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Y9mUAGwJEdq7X4sGURiZYA" name="getReferencedMetamodels" isQuery="true">
+ <ownedComment xmi:id="_wXAW0OwjEdqYHf-imTcTdw" annotatedElement="_Y9mUAGwJEdq7X4sGURiZYA">
+ <body>Retrieves the metamodels referenced by this profile.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_berJoGwJEdq7X4sGURiZYA" type="_NVhqMGv0Edq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dSdbcWwJEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dSdbcGwJEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_HL150JPuEdqpjIDDFZ2Hgw" name="getOwnedExtensions" isQuery="true">
+ <ownedComment xmi:id="_27ORwOwjEdqYHf-imTcTdw" annotatedElement="_HL150JPuEdqpjIDDFZ2Hgw">
+ <body>Retrieves the extensions owned by this profile, excluding non-required extensions if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_KG2SYJPuEdqpjIDDFZ2Hgw" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Bi6zYZP3EdqpjIDDFZ2Hgw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bi6zYJP3EdqpjIDDFZ2Hgw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OTEbMJPuEdqpjIDDFZ2Hgw" name="requiredOnly" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_aM5yQPIFEdulR8T2OJRyFQ" annotatedElement="_OTEbMJPuEdqpjIDDFZ2Hgw">
+ <body>Whether to retrieve only required extensions.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A7vDAGv0Edq7X4sGURiZYA" name="Stereotype">
+ <ownedOperation xmi:id="_FJce8GwHEdq7X4sGURiZYA" name="createExtension">
+ <ownedComment xmi:id="_7qwjAOwjEdqYHf-imTcTdw" annotatedElement="_FJce8GwHEdq7X4sGURiZYA">
+ <body>Creates a(n) (required) extension of the specified metaclass with this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IziyIGwHEdq7X4sGURiZYA" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_cQPbYGwHEdq7X4sGURiZYA" name="metaclass" type="_00owUGvdEdq4DLWZOhbdEA" effect="read">
+ <ownedComment xmi:id="_5QyhEPIFEdulR8T2OJRyFQ" annotatedElement="_cQPbYGwHEdq7X4sGURiZYA">
+ <body>The metaclass for the new extension.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Jc0YoGwHEdq7X4sGURiZYA" name="isRequired" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_37aCgPIFEdulR8T2OJRyFQ" annotatedElement="_Jc0YoGwHEdq7X4sGURiZYA">
+ <body>Whether the new extension should be required.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_X7-EcGv0Edq7X4sGURiZYA" name="getProfile" isQuery="true">
+ <ownedComment xmi:id="_9LxCwOwjEdqYHf-imTcTdw" annotatedElement="_X7-EcGv0Edq7X4sGURiZYA">
+ <body>Retrieves the profile that owns this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Z7OmcGv0Edq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_D7gsMWwHEdq7X4sGURiZYA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_D7gsMGwHEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_im40YGwHEdq7X4sGURiZYA" name="getKeyword" isQuery="true">
+ <ownedComment xmi:id="_-0EdUOwjEdqYHf-imTcTdw" annotatedElement="_im40YGwHEdq7X4sGURiZYA">
+ <body>Retrieves the localized keyword for this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lZHEYGwHEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_n7YM0GwHEdq7X4sGURiZYA" name="getKeyword" isQuery="true">
+ <ownedComment xmi:id="_AJA3AOwkEdqYHf-imTcTdw" annotatedElement="_n7YM0GwHEdq7X4sGURiZYA">
+ <body>Retrieves the keyword for this stereotype, localized if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_n7YM0WwHEdq7X4sGURiZYA" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_rn3FoGwHEdq7X4sGURiZYA" name="localize" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_AMa2cPIGEdulR8T2OJRyFQ" annotatedElement="_rn3FoGwHEdq7X4sGURiZYA">
+ <body>Whether to localize the keyword.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_02jCwGwHEdq7X4sGURiZYA" name="getExtendedMetaclasses" isQuery="true">
+ <ownedComment xmi:id="_BxLHoOwkEdqYHf-imTcTdw" annotatedElement="_02jCwGwHEdq7X4sGURiZYA">
+ <body>Retrieves the metaclasses extended by this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_25hnIGwHEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5lVtIWwHEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5lVtIGwHEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7T5gsGwHEdq7X4sGURiZYA" name="getAllExtendedMetaclasses" isQuery="true">
+ <ownedComment xmi:id="_FnVg4OwkEdqYHf-imTcTdw" annotatedElement="_7T5gsGwHEdq7X4sGURiZYA">
+ <body>Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_7T5gsWwHEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7T5gsmwHEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7T5gs2wHEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wdNtsI0GEdqipMtlOpTiHA" name="getDefinition" isQuery="true">
+ <ownedComment xmi:id="_MOYGUOwkEdqYHf-imTcTdw" annotatedElement="_wdNtsI0GEdqipMtlOpTiHA">
+ <body>Retrieves the current definition (Ecore representation) of this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wdNtsY0GEdqipMtlOpTiHA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wdNtso0GEdqipMtlOpTiHA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wdNts40GEdqipMtlOpTiHA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_h2eXIJPzEdqpjIDDFZ2Hgw" name="createIcon">
+ <ownedComment xmi:id="_Oq2IwOwkEdqYHf-imTcTdw" annotatedElement="_h2eXIJPzEdqpjIDDFZ2Hgw">
+ <body>Creates an icon with the specified location for this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_tND04JPzEdqpjIDDFZ2Hgw" type="_nDq0wJPzEdqpjIDDFZ2Hgw" direction="return"/>
+ <ownedParameter xmi:id="_vrdJ8JPzEdqpjIDDFZ2Hgw" name="location" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_6oabUPIFEdulR8T2OJRyFQ" annotatedElement="_vrdJ8JPzEdqpjIDDFZ2Hgw">
+ <body>The location for the new icon.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_pK-tQJP4EdqpjIDDFZ2Hgw" name="createIcon">
+ <ownedComment xmi:id="_UNpC8OwkEdqYHf-imTcTdw" annotatedElement="_pK-tQJP4EdqpjIDDFZ2Hgw">
+ <body>Creates an icon with the specified format and content for this stereotype.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ud-Q4JP4EdqpjIDDFZ2Hgw" type="_nDq0wJPzEdqpjIDDFZ2Hgw" direction="return"/>
+ <ownedParameter xmi:id="_T7RY0JP5EdqpjIDDFZ2Hgw" name="format" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_9G0XcPIFEdulR8T2OJRyFQ" annotatedElement="_T7RY0JP5EdqpjIDDFZ2Hgw">
+ <body>The format for the new icon.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RPUI4JP5EdqpjIDDFZ2Hgw" name="content" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_79W1APIFEdulR8T2OJRyFQ" annotatedElement="_RPUI4JP5EdqpjIDDFZ2Hgw">
+ <body>The content for the new icon.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_NVhqMGv0Edq7X4sGURiZYA" name="Model">
+ <ownedOperation xmi:id="_9nl2EGwREdq14q0ETb1t3g" name="isMetamodel" isQuery="true">
+ <ownedComment xmi:id="_9s0W0OwiEdqYHf-imTcTdw" annotatedElement="_9nl2EGwREdq14q0ETb1t3g">
+ <body>Determines whether this model is a metamodel.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__8c0oGwREdq14q0ETb1t3g" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_uY5yQGv5Edq7X4sGURiZYA" name="ProfileApplication">
+ <ownedOperation xmi:id="_GXI1QW10EdqniMBnIUw7ig" name="getAppliedDefinition" isQuery="true">
+ <ownedComment xmi:id="_ifO5QOwkEdqYHf-imTcTdw" annotatedElement="_GXI1QW10EdqniMBnIUw7ig">
+ <body>Retrieves the definition (Ecore representation) of the profile associated with this profile application.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_LJ9EAG10EdqniMBnIUw7ig" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OTQ-UW10EdqniMBnIUw7ig" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OTQ-UG10EdqniMBnIUw7ig"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_G3YEAI2_EdqipMtlOpTiHA" name="getAppliedDefinition" isQuery="true">
+ <ownedComment xmi:id="_lZV58OwkEdqYHf-imTcTdw" annotatedElement="_G3YEAI2_EdqipMtlOpTiHA">
+ <body>Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_G3YEAY2_EdqipMtlOpTiHA" direction="return">
+ <type xmi:type="uml:Class" href="Ecore.uml#_SeWifsX_EduPJbEsMYXjUQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G3YEAo2_EdqipMtlOpTiHA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G3YEA42_EdqipMtlOpTiHA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_G3YEBI2_EdqipMtlOpTiHA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_myyUsPIFEdulR8T2OJRyFQ" annotatedElement="_G3YEBI2_EdqipMtlOpTiHA">
+ <body>The named element for which to retrieve the applied definition.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_I6N3UGwGEdq7X4sGURiZYA" name="Enumeration"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_V6vuYGwGEdq7X4sGURiZYA" name="PrimitiveType"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RPl78GwIEdq7X4sGURiZYA" name="ElementImport"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SnNPIGwIEdq7X4sGURiZYA" name="PackageImport"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6UV2QGwJEdq7X4sGURiZYA" name="Classifier" isAbstract="true">
+ <ownedOperation xmi:id="_KjT7EGwREdq14q0ETb1t3g" name="getAllAttributes" isQuery="true">
+ <ownedComment xmi:id="_osV7wOwkEdqYHf-imTcTdw" annotatedElement="_KjT7EGwREdq14q0ETb1t3g">
+ <body>Retrieves all the attributes of this classifier, including those inherited from its parents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_OXZQsGwREdq14q0ETb1t3g" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q1zM0WwREdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q1zM0GwREdq14q0ETb1t3g"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_XVsBYGwREdq14q0ETb1t3g" name="getOperations" isQuery="true">
+ <ownedComment xmi:id="_wywpQOwkEdqYHf-imTcTdw" annotatedElement="_XVsBYGwREdq14q0ETb1t3g">
+ <body>Retrieves the operations of this classifier.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ZvULMGwREdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cOT9MWwREdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cOT9MGwREdq14q0ETb1t3g"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_d5JuYGwREdq14q0ETb1t3g" name="getAllOperations" isQuery="true">
+ <ownedComment xmi:id="_yDq3gOwkEdqYHf-imTcTdw" annotatedElement="_d5JuYGwREdq14q0ETb1t3g">
+ <body>Retrieves all the operations of this classifier, including those inherited from its parents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_d5JuYWwREdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d5JuYmwREdq14q0ETb1t3g" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d5JuY2wREdq14q0ETb1t3g"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hw6gIHFhEdqziYxiZo0YtA" name="getOperation" isQuery="true">
+ <ownedComment xmi:id="_-qt3kOwkEdqYHf-imTcTdw" annotatedElement="_hw6gIHFhEdqziYxiZo0YtA">
+ <body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ls4mcHFhEdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skn6UXFhEdqziYxiZo0YtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skn6UHFhEdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_usha8HFhEdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_R1RdIPH-EdulR8T2OJRyFQ" annotatedElement="_usha8HFhEdqziYxiZo0YtA">
+ <body>The name of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UQSfgaOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UQSfgKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_LgAVoKOwEdqi_5gqUMOQtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_VK9mkPH-EdulR8T2OJRyFQ" annotatedElement="_LgAVoKOwEdqi_5gqUMOQtA">
+ <body>The parameter names of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Vz1V4aOwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Vz1V4KOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_s8hlMKOvEdqi_5gqUMOQtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_XUDaAPH-EdulR8T2OJRyFQ" annotatedElement="_s8hlMKOvEdqi_5gqUMOQtA">
+ <body>The parameter types of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XhDssaOwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XhDssKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aGT3sKOwEdqi_5gqUMOQtA" name="getOperation" isQuery="true">
+ <ownedComment xmi:id="_-8cgwOwkEdqYHf-imTcTdw" annotatedElement="_aGT3sKOwEdqi_5gqUMOQtA">
+ <body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_aGT3saOwEdqi_5gqUMOQtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3sqOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3s6OwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aGT3tKOwEdqi_5gqUMOQtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_3HC1EPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3tKOwEdqi_5gqUMOQtA">
+ <body>The name of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3taOwEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3tqOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aGT3t6OwEdqi_5gqUMOQtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_6FotIPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3t6OwEdqi_5gqUMOQtA">
+ <body>The parameter names of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3uKOwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3uaOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aGT3uqOwEdqi_5gqUMOQtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_-UGRoPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3uqOwEdqi_5gqUMOQtA">
+ <body>The parameter types of the operation to retrieve, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3u6OwEdqi_5gqUMOQtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3vKOwEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_c2vX8KOwEdqi_5gqUMOQtA" name="ignoreCase" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_0yxsYPH_EdulR8T2OJRyFQ" annotatedElement="_c2vX8KOwEdqi_5gqUMOQtA">
+ <body>Whether to ignore case in String comparisons.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_8OsQwK69EdqjppZik4kD8A" name="getUsedInterfaces">
+ <ownedComment xmi:id="_IHZ0cOwlEdqYHf-imTcTdw" annotatedElement="_8OsQwK69EdqjppZik4kD8A">
+ <body>Retrieves the interfaces on which this classifier has a usage dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GDE78K6-EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J92vca6-EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J92vcK6-EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_MH_rwK6-EdqjppZik4kD8A" name="getAllUsedInterfaces">
+ <ownedComment xmi:id="_LQH44OwlEdqYHf-imTcTdw" annotatedElement="_MH_rwK6-EdqjppZik4kD8A">
+ <body>Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_MH_rwa6-EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MH_rwq6-EdqjppZik4kD8A" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MH_rw66-EdqjppZik4kD8A"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rEDGkGwKEdq7X4sGURiZYA" name="Dependency"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZiwkoGwLEdq7X4sGURiZYA" name="Namespace" isAbstract="true">
+ <ownedOperation xmi:id="_vI18QGwLEdq7X4sGURiZYA" name="createElementImport">
+ <ownedComment xmi:id="_sdLToOwlEdqYHf-imTcTdw" annotatedElement="_vI18QGwLEdq7X4sGURiZYA">
+ <body>Creates an import of the specified element into this namespace with the specified visibility.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_xwes4GwLEdq7X4sGURiZYA" type="_RPl78GwIEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_yOllMGwLEdq7X4sGURiZYA" name="element" type="_jKxnwGwLEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_5dZroPIDEdulR8T2OJRyFQ" annotatedElement="_yOllMGwLEdq7X4sGURiZYA">
+ <body>The element to import.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9mppoGwLEdq7X4sGURiZYA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_8P62kPIDEdulR8T2OJRyFQ" annotatedElement="_9mppoGwLEdq7X4sGURiZYA">
+ <body>The visibility for the new element import.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FRpmcGwMEdq7X4sGURiZYA" name="createPackageImport">
+ <ownedComment xmi:id="_t-ofUOwlEdqYHf-imTcTdw" annotatedElement="_FRpmcGwMEdq7X4sGURiZYA">
+ <body>Creates an import of the specified package into this namespace with the specified visibility.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IdWGYGwMEdq7X4sGURiZYA" type="_SnNPIGwIEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_RsevcGwMEdq7X4sGURiZYA" name="package_" type="_-cvRAGvzEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_-NYo0PIDEdulR8T2OJRyFQ" annotatedElement="_RsevcGwMEdq7X4sGURiZYA">
+ <body>The package to import.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OxwqwGwMEdq7X4sGURiZYA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" effect="read">
+ <ownedComment xmi:id="_CiGmUPIEEdulR8T2OJRyFQ" annotatedElement="_OxwqwGwMEdq7X4sGURiZYA">
+ <body>The visibility for the new package import.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aoDYwGwLEdq7X4sGURiZYA" name="getImportedElements" isQuery="true">
+ <ownedComment xmi:id="_zNDPgOwmEdqYHf-imTcTdw" annotatedElement="_aoDYwGwLEdq7X4sGURiZYA">
+ <body>Retrieves the elements imported by this namespace.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_mL5PYGwLEdq7X4sGURiZYA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n-CicWwLEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n-CicGwLEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_2OvA4GwLEdq7X4sGURiZYA" name="getImportedPackages" isQuery="true">
+ <ownedComment xmi:id="_0UuCMOwmEdqYHf-imTcTdw" annotatedElement="_2OvA4GwLEdq7X4sGURiZYA">
+ <body>Retrieves the packages imported by this namespace.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_40lo0GwLEdq7X4sGURiZYA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6sF9AWwLEdq7X4sGURiZYA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6sF9AGwLEdq7X4sGURiZYA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jKxnwGwLEdq7X4sGURiZYA" name="PackageableElement" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_AwvxoGwNEdq7X4sGURiZYA" name="Association">
+ <ownedOperation xmi:id="_WSPusK69EdqjppZik4kD8A" name="isBinary">
+ <ownedComment xmi:id="_4TWQYOwlEdqYHf-imTcTdw" annotatedElement="_WSPusK69EdqjppZik4kD8A">
+ <body>Determines whether this association is a binary association, i.e. whether it has exactly two member ends.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YmN8cK69EdqjppZik4kD8A" type="_UdivYGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_OQcbgGwOEdq7X4sGURiZYA" name="EnumerationLiteral"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_C7AF4GwREdq14q0ETb1t3g" name="Generalization"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FQiVsGwYEdqHKKVoxc0dlA" name="StructuredClassifier" isAbstract="true">
+ <ownedOperation xmi:id="_YorvMHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_9BZT4OwlEdqYHf-imTcTdw" annotatedElement="_YorvMHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YorvMXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_YorvMnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_GYWNMPIGEdulR8T2OJRyFQ" annotatedElement="_YorvMnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gKEUcaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gKEUcKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YorvM3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Ic0mYPIGEdulR8T2OJRyFQ" annotatedElement="_YorvM3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iJ7TYaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iJ7TYKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YorvNHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_EwVGgPIGEdulR8T2OJRyFQ" annotatedElement="_YorvNHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YorvNXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_JWfZUPIGEdulR8T2OJRyFQ" annotatedElement="_YorvNXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_l2mXcHLzEdqziYxiZo0YtA" name="InterfaceRealization"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-lGRgHLzEdqziYxiZo0YtA" name="Artifact">
+ <ownedOperation xmi:id="_C-IuUHL0EdqziYxiZo0YtA" name="createOwnedOperation">
+ <ownedComment xmi:id="_DUnlcOwmEdqYHf-imTcTdw" annotatedElement="_C-IuUHL0EdqziYxiZo0YtA">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_C-IuUXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_C-IuUnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_VYNN0PH9EdulR8T2OJRyFQ" annotatedElement="_C-IuUnL0EdqziYxiZo0YtA">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m8S2MaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m8S2MKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_C-IuVHL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_X6VMUPH9EdulR8T2OJRyFQ" annotatedElement="_C-IuVHL0EdqziYxiZo0YtA">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-IuVXL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-IuVnL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_C-IuV3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_f7aG0PH9EdulR8T2OJRyFQ" annotatedElement="_C-IuV3L0EdqziYxiZo0YtA">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-IuWHL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-IuWXL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_C-IuU3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_njmAMPH9EdulR8T2OJRyFQ" annotatedElement="_C-IuU3L0EdqziYxiZo0YtA">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o7P2MaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o7P2MKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_U7wxgHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="__9c1UOwlEdqYHf-imTcTdw" annotatedElement="_U7wxgHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_U7wxgXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_U7wxgnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_QGYH0PH9EdulR8T2OJRyFQ" annotatedElement="_U7wxgnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUSKIaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rUSKIKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_U7wxg3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Rw7lIPH9EdulR8T2OJRyFQ" annotatedElement="_U7wxg3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tO6q0aOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tO6q0KOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_U7wxhHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_OtHO0fH9EdulR8T2OJRyFQ" annotatedElement="_U7wxhHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_U7wxhXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_TYfY0PH9EdulR8T2OJRyFQ" annotatedElement="_U7wxhXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__1ap4HLzEdqziYxiZo0YtA" name="DataType">
+ <ownedOperation xmi:id="_FDM9YHL0EdqziYxiZo0YtA" name="createOwnedOperation">
+ <ownedComment xmi:id="_GrDVwOwmEdqYHf-imTcTdw" annotatedElement="_FDM9YHL0EdqziYxiZo0YtA">
+ <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FDM9YXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_FDM9YnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_qJiAUPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9YnL0EdqziYxiZo0YtA">
+ <body>The name for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wfr4AaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wfr4AKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FDM9ZHL0EdqziYxiZo0YtA" name="parameterNames" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_sw2n4PIAEdulR8T2OJRyFQ" annotatedElement="_FDM9ZHL0EdqziYxiZo0YtA">
+ <body>The parameter names for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9ZXL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9ZnL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FDM9Z3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_uKsvsPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Z3L0EdqziYxiZo0YtA">
+ <body>The parameter types for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9aHL0EdqziYxiZo0YtA" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9aXL0EdqziYxiZo0YtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FDM9Y3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_wCpIwPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Y3L0EdqziYxiZo0YtA">
+ <body>The return type for the new operation, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yc2vUaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yc2vUKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WJZCQHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_I4T3gOwmEdqYHf-imTcTdw" annotatedElement="_WJZCQHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_WJZCQXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_WJZCQnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_kDvt0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0pOgQaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0pOgQKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WJZCQ3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_lgIMQPIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQ3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bXMQaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bXMQKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WJZCRHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_iw5l4PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WJZCRXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_nuRe0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Pu3O0HL0EdqziYxiZo0YtA" name="Signal">
+ <ownedOperation xmi:id="_YIM4UHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
+ <ownedComment xmi:id="_MBen4OwmEdqYHf-imTcTdw" annotatedElement="_YIM4UHL0EdqziYxiZo0YtA">
+ <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_YIM4UXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_YIM4UnL0EdqziYxiZo0YtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_zWJHkPIFEdulR8T2OJRyFQ" annotatedElement="_YIM4UnL0EdqziYxiZo0YtA">
+ <body>The name for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RAjsaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5RAjsKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YIM4U3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_1J7ZYPIFEdulR8T2OJRyFQ" annotatedElement="_YIM4U3L0EdqziYxiZo0YtA">
+ <body>The type for the new attribute, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7g9NEaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7g9NEKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YIM4VHL0EdqziYxiZo0YtA" name="lower" type="_XqvEIGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_whrb4PIFEdulR8T2OJRyFQ" annotatedElement="_YIM4VHL0EdqziYxiZo0YtA">
+ <body>The lower bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_YIM4VXL0EdqziYxiZo0YtA" name="upper" type="_dRZxsGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_xbf_0PIFEdulR8T2OJRyFQ" annotatedElement="_YIM4VXL0EdqziYxiZo0YtA">
+ <body>The upper bound for the new attribute.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_UdivYGvsEdqG6fBIPwe-mw" name="Boolean"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_XqvEIGvsEdqG6fBIPwe-mw" name="Integer"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_aAyVgGvsEdqG6fBIPwe-mw" name="String"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_dRZxsGvsEdqG6fBIPwe-mw" name="UnlimitedNatural"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_B3q9cGwNEdq7X4sGURiZYA" name="AggregationKind"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Y_jskGvtEdqG6fBIPwe-mw" name="MessageKind"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_AyM_oGwMEdq7X4sGURiZYA" name="VisibilityKind"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-Ixo8H4XEdq7cMP_l1l5Gg" name="Duration">
+ <ownedOperation xmi:id="_I3a88H4YEdq7cMP_l1l5Gg" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_I3a88X4YEdq7cMP_l1l5Gg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DylKEH4YEdq7cMP_l1l5Gg" name="TimeExpression">
+ <ownedOperation xmi:id="_JdkW8H4YEdq7cMP_l1l5Gg" name="stringValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_JdkW8X4YEdq7cMP_l1l5Gg" type="_aAyVgGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_nDq0wJPzEdqpjIDDFZ2Hgw" name="Image"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rHT3YKOsEdqi_5gqUMOQtA" name="BehavioralFeature" isAbstract="true">
+ <ownedOperation xmi:id="_3Y0aYKOuEdqi_5gqUMOQtA" name="createReturnResult">
+ <ownedComment xmi:id="_WdHFYPZPEdqYHf-imTcTdw" annotatedElement="_3Y0aYKOuEdqi_5gqUMOQtA">
+ <body>Creates a return result parameter with the specified name and type.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_8N3dwKOuEdqi_5gqUMOQtA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_ESyWcKOvEdqi_5gqUMOQtA" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_t9Pp4PH9EdulR8T2OJRyFQ" annotatedElement="_ESyWcKOvEdqi_5gqUMOQtA">
+ <body>The name for the new return result, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__VyJkaOxEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__VyJkKOxEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="__sC00KOuEdqi_5gqUMOQtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_xWgrwPH9EdulR8T2OJRyFQ" annotatedElement="__sC00KOuEdqi_5gqUMOQtA">
+ <body>The type for the new return result, or null.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BJHvcaOyEdqi_5gqUMOQtA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BJHvcKOyEdqi_5gqUMOQtA"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DH62EKPAEdqi_5gqUMOQtA" name="Relationship" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JBgfoKPAEdqi_5gqUMOQtA" name="DirectedRelationship" isAbstract="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DAbfwa69EdqjppZik4kD8A" name="Component">
+ <ownedOperation xmi:id="_IJwKAK69EdqjppZik4kD8A" name="createOwnedClass">
+ <ownedComment xmi:id="_gykdUPZPEdqYHf-imTcTdw" annotatedElement="_IJwKAK69EdqjppZik4kD8A">
+ <body>Creates a(n) (abstract) class with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKAa69EdqjppZik4kD8A" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
+ <ownedParameter xmi:id="_IJwKAq69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_C_nlkPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKAq69EdqjppZik4kD8A">
+ <body>The name for the new class, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ <ownedParameter xmi:id="_IJwKA669EdqjppZik4kD8A" name="isAbstract" type="_UdivYGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_HLGHgPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKA669EdqjppZik4kD8A">
+ <body>Whether the new class should be abstract.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IJwKBK69EdqjppZik4kD8A" name="createOwnedEnumeration">
+ <ownedComment xmi:id="_lEKOUPZPEdqYHf-imTcTdw" annotatedElement="_IJwKBK69EdqjppZik4kD8A">
+ <body>Creates a enumeration with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKBa69EdqjppZik4kD8A" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_IJwKBq69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Jrb9UPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKBq69EdqjppZik4kD8A">
+ <body>The name for the new enumeration, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IJwKB669EdqjppZik4kD8A" name="createOwnedPrimitiveType">
+ <ownedComment xmi:id="_o0qrgPZPEdqYHf-imTcTdw" annotatedElement="_IJwKB669EdqjppZik4kD8A">
+ <body>Creates a primitive type with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKCK69EdqjppZik4kD8A" type="_V6vuYGwGEdq7X4sGURiZYA" direction="return"/>
+ <ownedParameter xmi:id="_IJwKCa69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_Q2ZvMPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKCa69EdqjppZik4kD8A">
+ <body>The name for the new primitive type, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IJwKCq69EdqjppZik4kD8A" name="createOwnedInterface">
+ <ownedComment xmi:id="_s-DiwPZPEdqYHf-imTcTdw" annotatedElement="_IJwKCq69EdqjppZik4kD8A">
+ <body>Creates an interface with the specified name as a packaged element of this component.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_IJwKC669EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return"/>
+ <ownedParameter xmi:id="_IJwKDK69EdqjppZik4kD8A" name="name" type="_aAyVgGvsEdqG6fBIPwe-mw" effect="read">
+ <ownedComment xmi:id="_O886QPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKDK69EdqjppZik4kD8A">
+ <body>The name for the new interface, or null.</body>
+ </ownedComment>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_OUnikC7qEdutFcse1QllAQ" name="OpaqueAction">
+ <ownedAttribute xmi:id="_c_GaAC7qEdutFcse1QllAQ" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e2muMS7qEdutFcse1QllAQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e2muMC7qEdutFcse1QllAQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ldWYsC7qEdutFcse1QllAQ" name="OpaqueBehavior">
+ <ownedAttribute xmi:id="_ldWYsS7qEdutFcse1QllAQ" name="body" type="_aAyVgGvsEdqG6fBIPwe-mw" isUnique="false">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ldWYtC7qEdutFcse1QllAQ" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ldWYtS7qEdutFcse1QllAQ"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5jXJsTEkEdu9VoNTbEBQkQ" name="LiteralString">
+ <ownedOperation xmi:id="_-SmgADEkEdu9VoNTbEBQkQ" name="integerValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_-SmgATEkEdu9VoNTbEBQkQ" type="_XqvEIGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FbLFMDElEdu9VoNTbEBQkQ" name="unlimitedValue" visibility="protected" isQuery="true">
+ <ownedParameter xmi:id="_FbLFMTElEdu9VoNTbEBQkQ" type="_dRZxsGvsEdqG6fBIPwe-mw" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_h18oENlrEduDKPkA-0jJZg" name="Usage"/>
+ <profileApplication xmi:id="_0TBYYGvaEdq4DLWZOhbdEA">
+ <eAnnotations xmi:id="_0TBYYWvaEdq4DLWZOhbdEA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_B7dOIMEREduRdatXodjBjA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <Ecore:EPackage xmi:id="_LWVYQN7NEduglsXU_NKRsA" base_Package="_o8I_sGvaEdq4DLWZOhbdEA" packageName="uml" nsPrefix="uml" nsURI="http://www.eclipse.org/uml2/2.1.0/UML" basePackage="org.eclipse.uml2" prefix="UML"/>
+ <Ecore:EAttribute xmi:id="_LWVYQd7NEduglsXU_NKRsA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_EOZfkC4xEduBJv9HKGdiyg"/>
+ <Ecore:EDataType xmi:id="_LWfJQN7NEduglsXU_NKRsA" instanceClassName="boolean" base_PrimitiveType="_UdivYGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EDataType xmi:id="_LWfJQd7NEduglsXU_NKRsA" instanceClassName="int" base_PrimitiveType="_XqvEIGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EDataType xmi:id="_LWfJQt7NEduglsXU_NKRsA" instanceClassName="java.lang.String" base_PrimitiveType="_aAyVgGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EDataType xmi:id="_LWfJQ97NEduglsXU_NKRsA" instanceClassName="int" base_PrimitiveType="_dRZxsGvsEdqG6fBIPwe-mw"/>
+ <Ecore:EAttribute xmi:id="_LWfJRN7NEduglsXU_NKRsA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_c_GaAC7qEdutFcse1QllAQ"/>
+ <Ecore:EAttribute xmi:id="_LWfJRd7NEduglsXU_NKRsA" isUnsettable="true" xmlFeatureKind="Element" base_Property="_ldWYsS7qEdutFcse1QllAQ"/>
+ <Ecore:EGenericType xmi:id="_PUkIYN7NEduglsXU_NKRsA" base_DataType="_HmwyMtrxEduW-vlXzvw90A"/>
+ <Ecore:EGenericType xmi:id="_QfhfoN7NEduglsXU_NKRsA" base_DataType="_HmwyNtrxEduW-vlXzvw90A"/>
+</xmi:XMI>

Back to the top