blob: 07e5cb899581825e5da4e3c9766cc7b7b784b052 [file] [log] [blame]
<?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="uml2"
nsURI="http://www.eclipse.org/uml2/1.0.0/UML" nsPrefix="uml">
<eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
<eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
<eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
<eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="int"/>
<eClassifiers xsi:type="ecore:EDataType" name="Sequence" instanceClassName="java.util.List"/>
<eClassifiers xsi:type="ecore:EDataType" name="Set" instanceClassName="java.util.Set"/>
<eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="../../org.eclipse.emf.ecore_2.0.0/src/model/Ecore.ecore#//EModelElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Element is an abstract metaclass with no superclass. It is used as the common superclass for all metaclasses in the infrastructure library. Element has a derived composition association to itself to support the general capability for elements to own other elements. "/>
</eAnnotations>
<eOperations name="validateNotOwnSelf" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ElementOperations.validateNotOwnSelf(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;not self.allOwnedElements()->includes(self)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateHasOwner" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ElementOperations.validateHasOwner(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.mustBeOwned() implies owner->notEmpty()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="allOwnedElements" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allOwnedElements&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ElementOperations.allOwnedElements(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.ElementOperations.allOwnedElements(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="mustBeOwned" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ElementOperations.mustBeOwned(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</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="union" references="#//Element/ownedComment"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Element"
changeable="false" volatile="true" transient="true" derived="true" eOpposite="#//Element/ownedElement">
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedComment" ordered="false"
upperBound="-1" eType="#//Comment" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</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 MultiplicityElement is an abstract metaclass which includes optional attributes for defining the bounds of a multiplicity. A MultiplicityElement also includes specifications of whether the values in an instantiation of this element must be unique or ordered. "/>
</eAnnotations>
<eOperations name="lowerBound" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.lowerBound(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="upperBound" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.upperBound(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="isMultivalued" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.isMultivalued(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;upperBound() > 1&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="includesCardinality" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.includesCardinality(this, C);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(lowerBound() &lt;= C) and (upperBound() >= C)&#xD;&#xA;&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="C" eType="#//Integer"/>
</eOperations>
<eOperations name="includesMultiplicity" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.includesMultiplicity(this, M);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound())&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="M" eType="#//MultiplicityElement"/>
</eOperations>
<eOperations name="validateUpperGt0" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.validateUpperGt0(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;upperBound()->notEmpty() implies upperBound() > 0&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateLowerGe0" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.validateLowerGe0(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;lowerBound()->notEmpty() implies lowerBound() >= 0&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateUpperGeLower" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.validateUpperGeLower(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateLowerEqLowerbound" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.validateLowerEqLowerbound(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;lower=lowerBound()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateUpperEqUpperbound" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.validateUpperEqUpperbound(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;upper = upperBound()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="lower" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.lower(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;lowerBound()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="upper" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.MultiplicityElementOperations.upper(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;upperBound()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//MultiplicityElement/upperValue #//MultiplicityElement/lowerValue"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" eType="#//Boolean"
volatile="true" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" eType="#//Boolean"
volatile="true" defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" eType="#//Integer"
changeable="false" volatile="true" transient="true" defaultValueLiteral="1"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" eType="#//UnlimitedNatural"
changeable="false" volatile="true" transient="true" defaultValueLiteral="1"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="upperValue" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="lowerValue" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//TemplateableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A named element represents elements that may have a name. The name is used for identification of the named element within the namespace in which it is defined. A named element also has a qualified name that allows it to be unambiguously identified within a hierarchy of nested namespaces. NamedElement is an abstract metaclass. "/>
</eAnnotations>
<eOperations name="validateNoName" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()&#xD;&#xA;&#x9;implies self.qualifiedName->isEmpty()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateQualifiedName" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xD;&#xA;self.qualifiedName =&#xD;&#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |&#xD;&#xA;&#x9;&#x9;ns.name->union(self.separator())->union(result))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="allNamespaces" unique="false" upperBound="-1" eType="#//Sequence">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allNamespaces&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;List result = (List) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.namespace->isEmpty()&#xD;&#xA;then Sequence{}&#xD;&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="isDistinguishableFrom" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xD;&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xD;&#xA;else true&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="n" eType="#//NamedElement"/>
<eParameters name="ns" eType="#//Namespace"/>
</eOperations>
<eOperations name="separator" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;'::'&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="qualifiedName" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xD;&#xA;then &#xD;&#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xD;&#xA;else&#xD;&#xA; Set{}&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="validateVisibilityNeedsOwnership" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
<eAnnotations source="union"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//NamedElement/getNamespace"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//NamedElement/nameExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" eType="#//String"
changeable="false" volatile="true" transient="true" defaultValueLiteral=""
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" eType="#//VisibilityKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
upperBound="-1" eType="#//Dependency" volatile="true" eOpposite="#//Dependency/client"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" eType="#//StringExpression"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</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 a named element that can own other named elements. Each named element may be owned by at most one namespace. A namespace provides a means for identifying named elements by name. Named elements can be identified by name in a namespace either by being directly owned by the namespace or by being introduced into the namespace by other means e.g. importing or inheriting. Namespace is an abstract metaclass. A namespace can own constraints. The constraint does not necessarily apply to the namespace itself, but may also apply to elements in the namespace. A namespace has the ability to import either individial members or all members of a package, thereby making it possible to refer to those named elements without qualification in the importing namespace. In the case of conflicts, it is necessary to use qualified names or aliases to disambiguate the referenced elements. "/>
</eAnnotations>
<eOperations name="validateMembersAreDistinguishable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;membersAreDistinguishable()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.ownedMember->includes(element)&#xD;&#xA;then Set{}->include(element.name)&#xD;&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xD;&#xA; if elementImports->notEmpty()&#xD;&#xA; then elementImports->collect(el | el.getName())&#xD;&#xA; else &#xD;&#xA; self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xD;&#xA; endif&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="element" eType="#//NamedElement"/>
</eOperations>
<eOperations name="membersAreDistinguishable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.member->forAll( memb |&#xD;&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xD;&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="validateImportedMemberDerived" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;importedMember&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="imps" eType="#//Set"/>
</eOperations>
<eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="imps" eType="#//Set"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
<eAnnotations source="union" references="#//Namespace/ownedRule"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/elementImport #//Namespace/packageImport"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/importedMember.1"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
upperBound="-1" eType="#//Constraint" volatile="true" containment="true" eOpposite="#//Constraint/namespace">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
upperBound="-1" eType="#//ElementImport" volatile="true" containment="true"
eOpposite="#//ElementImport/importingNamespace">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
upperBound="-1" eType="#//PackageImport" volatile="true" containment="true"
eOpposite="#//PackageImport/importingNamespace">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</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 references one or more source elements and one or more target elements. Directed relationship is an abstract metaclass. "/>
</eAnnotations>
<eOperations name="getRelatedElements" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="relatedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//DirectedRelationship/source #//DirectedRelationship/target"/>
</eOperations>
<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="union"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
</eAnnotations>
</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="union"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
</eAnnotations>
</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="A relationship references one or more related elements. Relationship is an abstract metaclass. "/>
</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="union"/>
</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 expression contains a language-specific text string used to describe a value or values, and an optional specification of the language. One predefined language for specifying expressions is OCL. Natural language or programming languages may also be used. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" eType="#//Parameter"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValueSpecification" abstract="true"
eSuperTypes="#//TypedElement #//ParameterableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ValueSpecification is an abstract metaclass used to identify a value or values in a model. It may reference an instance or it may be an expression denoting an instance or instances when evaluated. "/>
</eAnnotations>
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ValueSpecificationOperations.isComputable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="integerValue" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ValueSpecificationOperations.integerValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;Set{}&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="booleanValue" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ValueSpecificationOperations.booleanValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;Set{}&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="stringValue" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ValueSpecificationOperations.stringValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;Set{}&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="unlimitedValue" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ValueSpecificationOperations.unlimitedValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;Set{}&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="isNull" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ValueSpecificationOperations.isNull(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Expression" eSuperTypes="#//OpaqueExpression">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="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>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Expression/operand"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" upperBound="-1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//TemplateableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A comment gives the ability to attach various remarks to elements. A comment carries no semantic force, but may contain information that is useful to a modeler. A comment can be owned by any element. "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Comment/bodyExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
upperBound="-1" eType="#//Element"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" eType="#//StringExpression"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//BehavioredClassifier #//EncapsulatedClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Class is a kind of classifier whose features are attributes and operations. Attributes of a class are represented by instances of Property that are owned by the class. Some of these attributes may represent the navigable ends of binary associations. "/>
</eAnnotations>
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassOperations.inherit(this, inhs);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="inhs" eType="#//Set"/>
</eOperations>
<eOperations name="isAbstract" eType="#//Boolean">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="defaultValueLiteral" value="false"/>
<details key="name" value="isAbstract"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Classifier/isAbstract">
<details key="org.eclipse.uml2.Classifier#isAbstract" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setIsAbstract">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="defaultValueLiteral" value="false"/>
<details key="name" value="isAbstract"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Classifier/isAbstract">
<details key="org.eclipse.uml2.Classifier#isAbstract" value=""/>
</eAnnotations>
<eParameters name="newIsAbstract" eType="#//Boolean"/>
</eOperations>
<eOperations name="getOwnedAttributes" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="ownedAttribute"/>
<details key="eOpposite" value="class_"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuredClassifier/ownedAttribute">
<details key="org.eclipse.uml2.StructuredClassifier#getOwnedAttributes" value=""/>
</eAnnotations>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getGenerals" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="general"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Class/superClass"/>
</eOperations>
<eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Class/getOwnedAttributes"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Class/getOwnedAttributes #//Class/ownedOperation #//Class/nestedClassifier #//Class/ownedReception"/>
</eOperations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Class/ownedOperation #//Class/ownedReception"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true" eOpposite="#//Operation/class_">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="superClass" ordered="false"
upperBound="-1" eType="#//Class" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="redefines" references="#//Classifier/general.1">
<details key="org.eclipse.uml2.Classifier#getGenerals" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
eType="#//Classifier" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</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"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isActive" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
upperBound="-1" eType="#//Reception" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</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 serves as a constraint on the range of values represented by a typed element. Type is an abstract metaclass. "/>
</eAnnotations>
<eOperations name="conformsTo" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.TypeOperations.conformsTo(this, other);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="other" eType="#//Type"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Type/package"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="package" eType="#//Package"
changeable="false" volatile="true" transient="true" derived="true" eOpposite="#//Package/ownedType">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//StructuralFeature #//ConnectableElement #//DeploymentTarget">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="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 (see semantics of Association). Property is indirectly a subclass of Constructs::TypedElement. The range of valid values represented by the property can be controlled by setting the property’s type. "/>
</eAnnotations>
<eOperations name="validateOppositeIsOtherEnd" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateOppositeIsOtherEnd(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;opposite = &#xD;&#xA;&#x9;if owningAssociation->notEmpty() and association.memberEnd->size() = 2 then &#xD;&#xA;&#x9;&#x9;let otherEnd = (association.memberEnd - self)->any() in &#xD;&#xA;&#x9;&#x9;&#x9;if otherEnd.owningAssociation->notEmpty then otherEnd else Set{} endif&#xD;&#xA;&#x9;else Set {}&#xD;&#xA;&#x9;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="opposite" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.opposite(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if owningAssociation->notEmpty() and association.memberEnd->size() = 2 then &#xD;&#xA;&#x9;&#x9;let otherEnd = (association.memberEnd - self)->any() in &#xD;&#xA;&#x9;&#x9;&#x9;if otherEnd.owningAssociation->notEmpty then otherEnd else Set{} endif&#xD;&#xA;&#x9;else Set {}&#xD;&#xA;&#x9;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="validateMultiplicityOfComposite" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateMultiplicityOfComposite(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateSubsettingContext" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateSubsettingContext(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;subsettedProperty->notEmpty() implies&#xD;&#xA;&#x9;(subsettingContext()->notEmpty() and subsettingContext()->forAll (sc |&#xD;&#xA;&#x9;&#x9;subsettedProperty->forAll(sp | &#xD;&#xA;&#x9;&#x9;&#x9;sp.subsettingContext()->exists(c | sc.conformsTo(c)))))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateNavigablePropertyRedefinition" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateNavigablePropertyRedefinition(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(subsettedProperty->exists(sp | sp.class->notEmpty())&#x9;&#xD;&#xA;&#x9;&#x9;implies class->notEmpty())&#xD;&#xA;and&#xD;&#xA;(redefinedProperty->exists(rp | rp.class->notEmpty())&#x9;&#xD;&#xA;&#x9;&#x9;implies class->notEmpty())&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateSubsettingRules" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateSubsettingRules(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;subsettedProperty->forAll(sp |&#xD;&#xA;&#x9;type.conformsTo(sp.type) and&#xD;&#xA;&#x9;&#x9;((upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xD;&#xA;&#x9;&#x9;&#x9;upperBound()&lt;=sp.upperBound() ))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateNavigableReadonly" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateNavigableReadonly(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;isReadOnly implies class->notEmpty()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateDerivedUnionIsDerived" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.validateDerivedUnionIsDerived(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;isDerivedUnion implies isDerived&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="isConsistentWith" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PropertyOperations.isConsistentWith(this, redefinee);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(redefinee.oclIsKindOf(Property) and &#xD;&#xA; let prop: Property = redefinee.oclAsType(Property) in&#xD;&#xA; type.conformsTo(prop.type) and&#xD;&#xA; (lowerBound()->notEmpty and prop.lowerBound()->notEmpty() implies lowerBound() >= prop.lowerBound())&#xD;&#xA; and&#xD;&#xA; (upperBound()->notEmpty and prop.upperBound()->notEmpty() implies upperBound() &lt;= prop.upperBound())&#xD;&#xA; and&#xD;&#xA; (prop.isDerived implies isDerived))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="redefinee" eType="#//RedefinableElement"/>
</eOperations>
<eOperations name="subsettingContext" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;subsettingContext&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.PropertyOperations.subsettingContext(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.PropertyOperations.subsettingContext(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if association->notEmpty()&#xD;&#xA;then association.endType-type &#xD;&#xA;else if classifier->notEmpty then Set{classifier} else Set{} endif&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="isReadOnly" eType="#//Boolean">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="defaultValueLiteral" value="false"/>
<details key="name" value="isReadOnly"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuralFeature/isReadOnly">
<details key="org.eclipse.uml2.StructuralFeature#isReadOnly" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setIsReadOnly">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="defaultValueLiteral" value="false"/>
<details key="name" value="isReadOnly"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuralFeature/isReadOnly">
<details key="org.eclipse.uml2.StructuralFeature#isReadOnly" value=""/>
</eAnnotations>
<eParameters name="newIsReadOnly" eType="#//Boolean"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/class_ #//Property/owningAssociation #//Property/datatype"/>
</eOperations>
<eOperations name="getFeaturingClassifiers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="featuringClassifier"/>
<details key="eOpposite" value="feature"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/class_ #//Property/owningAssociation #//Property/datatype"/>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/redefinedProperty"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/defaultValue #//Property/qualifier"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/associationEnd"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="#//String"
changeable="false" volatile="true" transient="true" defaultValueLiteral=""
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" eType="#//Boolean"
changeable="false" volatile="true" transient="true" defaultValueLiteral="false"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="class_" eType="#//Class"
changeable="false" volatile="true" transient="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
<details key="org.eclipse.uml2.Feature#getFeaturingClassifiers" value=""/>
</eAnnotations>
<eAnnotations source="redefined">
<details key="eOpposite" value="ownedAttribute"/>
<details key="eOpposite.containment" value="true"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//Property"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerivedUnion" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningAssociation" eType="#//Association"
volatile="true" transient="true" eOpposite="#//Association/ownedEnd">
<eAnnotations source="subsets" references="#//Property/association">
<details key="org.eclipse.uml2.Property#getAssociation" value=""/>
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
<details key="org.eclipse.uml2.Feature#getFeaturingClassifiers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedProperty" ordered="false"
upperBound="-1" eType="#//Property">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subsettedProperty" ordered="false"
upperBound="-1" eType="#//Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="datatype" eType="#//DataType"
transient="true" eOpposite="#//DataType/ownedAttribute">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
<details key="org.eclipse.uml2.Feature#getFeaturingClassifiers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="association" eType="#//Association"
volatile="true" eOpposite="#//Association/memberEnd">
<eAnnotations source="superset" references="#//Property/owningAssociation"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="aggregation" eType="#//AggregationKind"
defaultValueLiteral="none"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/associationEnd">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="associationEnd" eType="#//Property"
transient="true" eOpposite="#//Property/qualifier">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//BehavioralFeature #//TypedElement #//MultiplicityElement #//ParameterableElement">
<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. "/>
</eAnnotations>
<eOperations name="validateTypeOfResult" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.validateTypeOfResult(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if returnResult->size() = 1 then&#xD;&#xA; type = returnResult.type&#xD;&#xA;else&#xD;&#xA; type = nil&#xD;&#xA;endif&#xD;&#xA;&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="isOrdered" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.isOrdered(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if returnResult->size() = 1 then returnResult->any().isOrdered else false endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="isUnique" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.isUnique(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA; if returnResult->size() = 1 then returnResult->any().isUnique else true endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="lower" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.lower(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if returnResult->size() = 1 then returnResult->any().lower else Set{} endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="upper" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.upper(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if returnResult->size() = 1 then returnResult->any().upper else Set{} endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="type" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.type(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if returnResult->size() = 1 then returnResult->any().type else Set{} endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="validateOnlyBodyForQuery" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.validateOnlyBodyForQuery(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;bodyCondition->notEmpty() implies isQuery&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="isConsistentWith" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.OperationOperations.isConsistentWith(this, redefinee);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(redefinee.oclIsKindOf(Operation) and&#xD;&#xA; let op: Operation = redefinee.oclAsType(Operation) in&#xD;&#xA; self.formalParameter.size() = op.formalParameter.size() and&#xD;&#xA; self.returnResult.size() = op.returnResult.size() and&#xD;&#xA; forAll(i | op.formalParameter[i].type.conformsTo(self.formalParameter[i].type)) and&#xD;&#xA; forAll(i | op.returnResult[i].type.conformsTo(self.returnResult[i].type))&#xD;&#xA;)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="redefinee" eType="#//RedefinableElement"/>
</eOperations>
<eOperations name="getRaisedExceptions" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="raisedException"/>
<details key="eType" value="org.eclipse.uml2.Type"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//BehavioralFeature/raisedException">
<details key="org.eclipse.uml2.BehavioralFeature#getRaisedExceptions" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setIsOrdered">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="isOrdered"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//MultiplicityElement/isOrdered">
<details key="org.eclipse.uml2.MultiplicityElement#isOrdered" value=""/>
</eAnnotations>
<eParameters name="newIsOrdered" eType="#//Boolean"/>
</eOperations>
<eOperations name="setIsUnique">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="isUnique"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//MultiplicityElement/isUnique">
<details key="org.eclipse.uml2.MultiplicityElement#isUnique" value=""/>
</eAnnotations>
<eParameters name="newIsUnique" eType="#//Boolean"/>
</eOperations>
<eOperations name="getLower" eType="#//Integer">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="lower"/>
<details key="eType" value="org.eclipse.uml2.Integer"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//MultiplicityElement/lower.1">
<details key="org.eclipse.uml2.MultiplicityElement#getLower" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getUpper" eType="#//UnlimitedNatural">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="upper"/>
<details key="eType" value="org.eclipse.uml2.UnlimitedNatural"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//MultiplicityElement/upper.1">
<details key="org.eclipse.uml2.MultiplicityElement#getUpper" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getFormalParameters" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="formalParameter"/>
<details key="eType" value="org.eclipse.uml2.Parameter"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Operation/ownedParameter #//BehavioralFeature/formalParameter">
<details key="org.eclipse.uml2.Operation#getOwnedParameters" value=""/>
<details key="org.eclipse.uml2.BehavioralFeature#getFormalParameters" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getType" eType="#//Type">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Type"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type">
<details key="org.eclipse.uml2.TypedElement#getType" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setType">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Type"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type">
<details key="org.eclipse.uml2.TypedElement#getType" value=""/>
</eAnnotations>
<eParameters name="newType" eType="#//Type"/>
</eOperations>
<eOperations name="getRedefinitionContexts" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Operation/class_ #//Operation/datatype"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Operation/class_ #//Operation/datatype"/>
</eOperations>
<eOperations name="getFeaturingClassifiers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="featuringClassifier"/>
<details key="eOpposite" value="feature"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Operation/class_ #//Operation/datatype"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Operation/precondition #//Operation/postcondition #//Operation/bodyCondition"/>
</eOperations>
<eOperations name="getOwnedRules" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="ownedRule"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Constraint"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Operation/precondition #//Operation/postcondition #//Operation/bodyCondition"/>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Operation/redefinedOperation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
eType="#//Parameter" containment="true" eOpposite="#//Parameter/operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="class_" eType="#//Class"
transient="true" eOpposite="#//Class/ownedOperation">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"
value=""/>
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
<details key="org.eclipse.uml2.Feature#getFeaturingClassifiers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuery" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="datatype" eType="#//DataType"
transient="true" eOpposite="#//DataType/ownedOperation">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"
value=""/>
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
<details key="org.eclipse.uml2.Feature#getFeaturingClassifiers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
upperBound="-1" eType="#//Constraint" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/ownedRule">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedRules" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
upperBound="-1" eType="#//Constraint" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/ownedRule">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedRules" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedOperation" ordered="false"
upperBound="-1" eType="#//Operation">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyCondition" eType="#//Constraint"
volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/ownedRule">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedRules" value=""/>
</eAnnotations>
</eStructuralFeatures>
</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 an element that has a type that serves as a constraint on the range of values the element can represent. Typed element is an abstract metaclass. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type" volatile="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ConnectableElement #//TypedElement #//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. It has a type, and may have a multiplicity and an optional default value. "/>
</eAnnotations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Parameter/operation"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Parameter/defaultValue"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" eType="#//Operation"
transient="true" eOpposite="#//Operation/ownedParameter">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="#//String"
changeable="false" volatile="true" transient="true" defaultValueLiteral=""
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//ParameterDirectionKind"
defaultValueLiteral="in"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isException" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isStream" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" eType="#//ParameterEffectKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterSet" ordered="false"
upperBound="-1" eType="#//ParameterSet" eOpposite="#//ParameterSet/parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A package is a namespace for its members, and may contain other packages. Only packageable elements can be owned members of a package. By virtue of being a namespace, a package can import either individual members of other packages, or all the members of other packages. In addition a package can be merged with other packages. "/>
</eAnnotations>
<eOperations name="validateElementsPublicOrPrivate" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PackageOperations.validateElementsPublicOrPrivate(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="mustBeOwned" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PackageOperations.mustBeOwned(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="visibleMembers" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;visibleMembers&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.PackageOperations.visibleMembers(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.PackageOperations.visibleMembers(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;member->select( m | self.makesVisible(m))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="makesVisible" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PackageOperations.makesVisible(this, el);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;el.visibility->isEmpty() or el.visibility = #public&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="el" eType="#//NamedElement"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Package/nestingPackage"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Package/packageMerge #//Package/packageExtension"/>
</eOperations>
<eOperations name="getPackageImports" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="packageImport"/>
<details key="eOpposite" value="importingNamespace"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.PackageImport"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Package/appliedProfile"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedPackage" ordered="false"
upperBound="-1" eType="#//Package" changeable="false" volatile="true" transient="true"
derived="true" resolveProxies="false" eOpposite="#//Package/nestingPackage">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Package#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestingPackage" eType="#//Package"
changeable="false" volatile="true" transient="true" derived="true" eOpposite="#//Package/nestedPackage">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedType" ordered="false"
upperBound="-1" eType="#//Type" changeable="false" volatile="true" transient="true"
derived="true" resolveProxies="false" eOpposite="#//Type/package">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Package#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
upperBound="-1" eType="#//PackageableElement" volatile="true" containment="true">
<eAnnotations source="redefines" references="#//Namespace/getOwnedMembers">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageMerge" ordered="false"
upperBound="-1" eType="#//PackageMerge" containment="true" eOpposite="#//PackageMerge/mergingPackage">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageExtension" ordered="false"
upperBound="-1" eType="#//PackageMerge" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="appliedProfile" ordered="false"
upperBound="-1" eType="#//ProfileApplication" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/packageImport">
<details key="org.eclipse.uml2.Namespace#getPackageImports" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Enumeration is a kind of data type, whose instances may be any of a number of user-defined enumeration literals. It is possible to extend the set of applicable enumeration literals in other packages or profiles. "/>
</eAnnotations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Enumeration/ownedLiteral"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedLiteral" upperBound="-1"
eType="#//EnumerationLiteral" containment="true" eOpposite="#//EnumerationLiteral/enumeration">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataType" eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="DataType defines a kind of classifier in which operations are all pure functions (i.e., they can return data values but they cannot change data values, because they have no identity). For example, an “add” operation on a number with another number as an argument yields a third number as a result; the target and argument are unchanged. A DataType may also contain attributes to support the modeling of structured data types. "/>
</eAnnotations>
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.DataTypeOperations.inherit(this, inhs);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;inhs->excluding(inh |&#xD;&#xA;&#x9;ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="inhs" eType="#//Set"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//DataType/ownedAttribute #//DataType/ownedOperation"/>
</eOperations>
<eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//DataType/ownedAttribute"/>
</eOperations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//DataType/ownedOperation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/datatype">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
<details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true" eOpposite="#//Operation/datatype">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
</eAnnotations>
</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>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//EnumerationLiteral/enumeration"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="enumeration" eType="#//Enumeration"
transient="true" eOpposite="#//Enumeration/ownedLiteral">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The instances of primitive type used in UML itself include Boolean, Integer, UnlimitedNatural, and String. "/>
</eAnnotations>
</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 contains a Boolean-valued attribute. "/>
</eAnnotations>
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralBooleanOperations.isComputable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="booleanValue" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralBooleanOperations.booleanValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Boolean"/>
</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 is an abstract specialization of ValueSpecification that identifies a literal constant being modeled. "/>
</eAnnotations>
</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 contains a String-valued attribute. "/>
</eAnnotations>
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralStringOperations.isComputable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="stringValue" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralStringOperations.stringValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//String"
defaultValueLiteral=""/>
</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 is used to represent null, i.e., the absence of a value. "/>
</eAnnotations>
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralNullOperations.isComputable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="isNull" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralNullOperations.isNull(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
</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 contains an Integer-valued attribute. "/>
</eAnnotations>
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralIntegerOperations.isComputable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="integerValue" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralIntegerOperations.integerValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Integer"/>
</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 contains a UnlimitedNatural-valued attribute. "/>
</eAnnotations>
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralUnlimitedNaturalOperations.isComputable(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="unlimitedValue" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.LiteralUnlimitedNaturalOperations.unlimitedValue(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//UnlimitedNatural"/>
</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 of the following literal values: • public • private • protected • package "/>
</eAnnotations>
<eLiterals name="public"/>
<eLiterals name="private" value="1"/>
<eLiterals name="protected" value="2"/>
<eLiterals name="package" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//Type #//RedefinableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A classifier is a namespace whose members can include features. Classifier is an abstract metaclass. A classifier is a type and can own generalizations, thereby making it possible to define generalization relationships to other classifiers. A classifier can specify a generalization hierarchy by referencing its general classifiers. A classifier is a redefinable element, meaning that it is possible to redefine nested classifiers. "/>
</eAnnotations>
<eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allFeatures&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.allFeatures(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.ClassifierOperations.allFeatures(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;member->select(oclIsKindOf(Feature))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="validateNoCyclesInGeneralization" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.validateNoCyclesInGeneralization(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;not self.allParents()->includes(self)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateSpecializeType" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.validateSpecializeType(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.parents()->forAll(c | self.maySpecializeType(c))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateInheritedMember" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.validateInheritedMember(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.inheritedMember->includesAll(self.inherit(self.parents()->collect(p | p.inheritableMembers(self)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="inheritedMember" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;inheritedMember&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.inheritedMember(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.ClassifierOperations.inheritedMember(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.inherit(self.parents()->collect(p | p.inheritableMembers(self))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="parents" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;parents&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.parents(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.ClassifierOperations.parents(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;generalization.general&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="allParents" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allParents&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.allParents(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.ClassifierOperations.allParents(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.parents()->union(self.parents()->collect(p | p.allParents())&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="inheritableMembers" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.inheritableMembers(this, c);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;member->select(m | c.hasVisibilityOf(m))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="c" eType="#//Classifier"/>
</eOperations>
<eOperations name="hasVisibilityOf" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.hasVisibilityOf(this, n);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="n" eType="#//NamedElement"/>
</eOperations>
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.inherit(this, inhs);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;inhs&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="inhs" eType="#//Set"/>
</eOperations>
<eOperations name="maySpecializeType" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.maySpecializeType(this, c);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.oclIsKindOf(c.oclType)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="c" eType="#//Classifier"/>
</eOperations>
<eOperations name="general" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;general&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.general(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.ClassifierOperations.general(this);&#xD;&#xA;}"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.parents()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="validateGeneralEqualsParents" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.validateGeneralEqualsParents(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;general = self.parents()&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="conformsTo" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ClassifierOperations.conformsTo(this, other);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self=other) or (self.allParents()->includes(other))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="other" eType="#//Classifier"/>
</eOperations>
<eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Classifier/feature #//Classifier/inheritedMember.1"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Classifier/generalization #//Classifier/substitution #//Classifier/occurrence"/>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Classifier/redefinedClassifier"/>
</eOperations>
<eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="clientDependency"/>
<details key="eOpposite" value="client"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Classifier/substitution"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Classifier/ownedUseCase"/>
</eOperations>
<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="union" references="#//Classifier/attribute"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" eType="#//Boolean"
volatile="true" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inheritedMember" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
upperBound="-1" eType="#//Generalization" containment="true" eOpposite="#//Generalization/specific">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="attribute" ordered="false"
upperBound="-1" eType="#//Property" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="union"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedClassifier" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="substitution" ordered="false"
upperBound="-1" eType="#//Substitution" volatile="true" containment="true"
eOpposite="#//Substitution/substitutingClassifier">
<eAnnotations source="subsets" references="#//NamedElement/clientDependency">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedUseCase" ordered="false"
upperBound="-1" eType="#//UseCase" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
upperBound="-1" eType="#//UseCase" eOpposite="#//UseCase/subject"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="representation" eType="#//CollaborationOccurrence"
volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Classifier/occurrence">
<details key="org.eclipse.uml2.Classifier#getOccurrences" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="occurrence" ordered="false"
upperBound="-1" eType="#//CollaborationOccurrence" volatile="true" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
<eAnnotations source="superset" references="#//Classifier/representation"/>
</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. Feature is an abstract metaclass. "/>
</eAnnotations>
<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="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" eType="#//Boolean"
defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Constraint contains a ValueSpecification that specifies additional semantics for one or more elements. Certain kinds of constraints (such as an association “xor” constraint) are predefined in UML, others may be user-defined. A user-defined Constraint is described using a specified language, whose syntax and interpretation is a tool responsibility. One predefined language for writing constraints is OCL. In some situations, a programming language such as Java may be appropriate for expressing a constraint. In other situations natural language may be used. Constraint is a condition (a Boolean expression) that restricts the extension of the associated element beyond what is imposed by the other language constructs applied to that element. Constraint contains an optional name, although they are commonly unnamed. "/>
</eAnnotations>
<eOperations name="validateNotApplyToSelf" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ConstraintOperations.validateNotApplyToSelf(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;not constrainedElement->includes(self)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Constraint/specification"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//Namespace"
changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="union" references="#//Constraint/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="namespace" eType="#//Namespace"
volatile="true" transient="true" eOpposite="#//Namespace/ownedRule">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Constraint#getContext" value=""/>
</eAnnotations>
<eAnnotations source="redefines" references="#//NamedElement/getNamespace">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" lowerBound="1"
eType="#//ValueSpecification" volatile="true" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
eType="#//Element"/>
</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 specifies that an instance of a classifier will respond to a designated request by invoking a behavior. BehavioralFeature is an abstract metaclass specializing Feature and Namespace. Kinds of behavioral aspects are modeled by subclasses of BehavioralFeature. "/>
</eAnnotations>
<eOperations name="isDistinguishableFrom" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.BehavioralFeatureOperations.isDistinguishableFrom(this, n, ns);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if n.oclIsKindOf(BehavioralFeature)&#xD;&#xA;then&#xD;&#xA; if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()&#xD;&#xA; then Set{}->include(self)->include(n)->isUnique( bf | bf.parameter->collect(type))&#xD;&#xA; else true&#xD;&#xA; endif&#xD;&#xA;else true&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="n" eType="#//NamedElement"/>
<eParameters name="ns" eType="#//Namespace"/>
</eOperations>
<eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//BehavioralFeature/parameter"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//BehavioralFeature/formalParameter #//BehavioralFeature/returnResult"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="union" references="#//BehavioralFeature/formalParameter #//BehavioralFeature/returnResult"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameter" upperBound="-1"
eType="#//Parameter" volatile="true" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.BehavioralFeature#getParameters" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnResult" upperBound="-1"
eType="#//Parameter" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.BehavioralFeature#getParameters" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="raisedException" ordered="false"
upperBound="-1" eType="#//Type" volatile="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="method" ordered="false"
upperBound="-1" eType="#//Behavior" eOpposite="#//Behavior/specification"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="concurrency" eType="#//CallConcurrencyKind"/>
</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 specify the structure of instances of the classifier. Structural feature is an abstract metaclass. By specializing multiplicity element, it supports a multiplicity that specifies valid cardinalities for the set of values associated with an instantiation of the structural feature. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" eType="#//Boolean"
volatile="true" defaultValueLiteral="false"/>
</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 a named element that can be redefined in the context of a generalization. RedefinableElement is an abstract metaclass. "/>
</eAnnotations>
<eOperations name="validateRedefinitionContextValid" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.RedefinableElementOperations.validateRedefinitionContextValid(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateRedefinitionConsistent" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.RedefinableElementOperations.validateRedefinitionConsistent(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="isConsistentWith" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.RedefinableElementOperations.isConsistentWith(this, redefinee);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="redefinee" eType="#//RedefinableElement"/>
</eOperations>
<eOperations name="isRedefinitionContextValid" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.RedefinableElementOperations.isRedefinitionContextValid(this, redefinable);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinitionContext->exists(c | redefinable.redefinitionContext->exists(r | c.allParents()->includes(r)))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eParameters name="redefinable" eType="#//RedefinableElement"/>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" eType="#//Boolean"
defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//PackageableElement #//DeploymentTarget #//DeployedArtifact">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="In the metamodel, InstanceSpecification is a specialization of DeploymentTarget and DeployedArtifact. "/>
</eAnnotations>
<eOperations name="validateSlotsAreDefined" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.InstanceSpecificationOperations.validateSlotsAreDefined(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;slot->forAll(s |&#xD;&#xA; classifier->exists(c | c.allFeatures()->includes(s.definingFeature))&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateNoDuplicateSlots" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.InstanceSpecificationOperations.validateNoDuplicateSlots(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;classifier->forAll(c |&#xD;&#xA;&#x9;(c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)&#xD;&#xA;&#x9;)&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InstanceSpecification/slot #//InstanceSpecification/specification"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="slot" ordered="false" upperBound="-1"
eType="#//Slot" containment="true" eOpposite="#//Slot/owningInstance">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
upperBound="-1" eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</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 is owned by an instance specification. It specifies the value or values for its defining feature, which must be a structural feature of a classifier of the instance specification owning the slot. "/>
</eAnnotations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Slot/owningInstance"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Slot/value"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningInstance" lowerBound="1"
eType="#//InstanceSpecification" transient="true" eOpposite="#//InstanceSpecification/slot">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" upperBound="-1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="definingFeature" lowerBound="1"
eType="#//StructuralFeature"/>
</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 specifies the value modeled by an instance specification. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="instance" lowerBound="1"
eType="#//InstanceSpecification"/>
</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 relates a specific classifier to a more general classifier, and is owned by the specific classifier. "/>
</eAnnotations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Generalization/specific"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Generalization/specific"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Generalization/general"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="specific" lowerBound="1"
eType="#//Classifier" transient="true" eOpposite="#//Classifier/generalization">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" lowerBound="1"
eType="#//Classifier">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalizationSet" ordered="false"
upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/generalization"/>
</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. "/>
</eAnnotations>
<eOperations name="getVisibility" eType="#//VisibilityKind">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="visibility"/>
<details key="eType" value="org.eclipse.uml2.VisibilityKind"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//PackageableElement/packageableElement_visibility"/>
</eOperations>
<eOperations name="setVisibility">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="visibility"/>
<details key="eType" value="org.eclipse.uml2.VisibilityKind"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//PackageableElement/packageableElement_visibility"/>
<eParameters name="newVisibility" eType="#//VisibilityKind"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="packageableElement_visibility"
eType="#//VisibilityKind" volatile="true">
<eAnnotations source="redefines" references="#//NamedElement/visibility">
<details key="org.eclipse.uml2.NamedElement#getVisibility" value=""/>
</eAnnotations>
</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 is defined as a directed relationship between an importing namespace and a packageable element. The name of the packageable element or its alias is to be added to the namespace of the importing namespace. It is also possible to control whether the imported element can be further imported. "/>
</eAnnotations>
<eOperations name="validateVisibilityPublicOrPrivate" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ElementImportOperations.validateVisibilityPublicOrPrivate(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.visibility = #public or self.visibility = #private&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="validateImportedElementIsPublic" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ElementImportOperations.validateImportedElementIsPublic(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="getName" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.ElementImportOperations.getName(this);"/>
<details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.alias->notEmpty() then &#xD;&#xA; self.alias&#xD;&#xA;else&#xD;&#xA; self.importedElement.name&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ElementImport/importedElement"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ElementImport/importingNamespace"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ElementImport/importingNamespace"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" eType="#//VisibilityKind"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" lowerBound="1"
eType="#//PackageableElement">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" lowerBound="1"
eType="#//Namespace" volatile="true" transient="true" eOpposite="#//Namespace/elementImport">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</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 defined as a directed relationship that identifies a package whose members are to be imported by a namespace. "/>
</eAnnotations>
<eOperations name="validatePublicOrPrivate" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="return org.eclipse.uml2.internal.operation.PackageImportOperations.validatePublicOrPrivate(this, diagnostics, context);"/>
<details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.visibility = #public or self.visibility = #private&#xD;&#xA;&lt;/code>"/>
</eAnnotations>
<eAnnotations source="constraint"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
<eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageImport/importedPackage"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageImport/importingNamespace"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageImport/importingNamespace"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" eType="#//VisibilityKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" lowerBound="1"
eType="#//Package" volatile="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" lowerBound="1"
eType="#//Namespace" volatile="true" transient="true" eOpposite="#//Namespace/packageImport">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</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 specifies a semantic relationship that can occur between typed instances. It has at least two ends represented by properties, each of which is connected to the type of the end. More than one end of the association may have the same type. When a property is owned by an association it represents a non-navigable end of the association. In this case the property does not appear in the namespace of any of the associated classifiers. When a property at an end of an association is owned by one of the associated classifiers it represents a navigable end of the association. In this case the property is also an attribute of the associated classifier. Only binary associations may have navigable ends. "/>
</eAnnotations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Association/ownedEnd"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Association/ownedEnd"/>
</eOperations>
<eOperations name="getRelatedElements" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="relatedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Association/endType"/>
</eOperations>
<eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Association/memberEnd"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1"
eType="#//Property" volatile="true" containment="true" eOpposite="#//Property/owningAssociation">
<eAnnotations source="subsets" references="#//Association/memberEnd">
<details key="org.eclipse.uml2.Association#getMemberEnds" value=""/>
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="endType" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Type" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="memberEnd" lowerBound="2"
upperBound="-1" eType="#//Property" volatile="true" eOpposite="#//Property/association">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
<eAnnotations source="superset" references="#//Association/ownedEnd"/>
</eStructuralFeatures>
</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 is a relationship between two packages, where the contents of the target package (the one pointed at) is merged with the contents of the source package through specialization and redefinition, where applicable. This is a mechanism that should be used when elements of the same name are intended to represent the same concept, regardless of the package in which they are defined. A merging package will take elements of the same kind with the same name from one or more packages and merge them together into a single element using generalization and redefinitions. It should be noted that a package merge can be viewed as a short-hand way of explicitly defining those generalizations and redefinitions. The merged packages are still available, and the elements in those packages can be separately qualified. From an XMI point of view, it is either possible to exchange a model with all PackageMerges retained or a model where all PackageMerges have been transformed away (in which case package imports, generalizations, and redefinitions are used instead). "/>
</eAnnotations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageMerge/mergingPackage"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageMerge/mergingPackage"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageMerge/mergedPackage"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="mergingPackage" lowerBound="1"
eType="#//Package" transient="true" eOpposite="#//Package/packageMerge">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="mergedPackage" lowerBound="1"
eType="#//Package">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ParameterDirectionKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ParameterDirectionKind is an enumeration of the following literal values: • in Indicates that parameter values are passed into the behavioral element by the caller. • inout Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element. • out Indicates that parameter values are passed from a behavioral element out to the caller. • return Indicates that parameter values are passed as return values from a behavioral element back to the caller. "/>
</eAnnotations>
<eLiterals name="in"/>
<eLiterals name="inout" value="1"/>
<eLiterals name="out" value="2"/>
<eLiterals name="return" value="3"/>
</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 of the following literal values: • none Indicates that the property has no aggregation. • shared Indicates that the property has a shared aggregation. • composite 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 name="none"/>
<eLiterals name="shared" value="1"/>
<eLiterals name="composite" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class"/>
<eClassifiers xsi:type="ecore:EClass" name="Profile" eSuperTypes="#//Package">
<eOperations name="getElementImports" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="elementImport"/>
<details key="eOpposite" value="importingNamespace"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.ElementImport"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Profile/metaclassReference"/>
</eOperations>
<eOperations name="getPackageImports" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="packageImport"/>
<details key="eOpposite" value="importingNamespace"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.PackageImport"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Profile/metamodelReference"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedStereotype" ordered="false"
upperBound="-1" eType="#//Stereotype" changeable="false" volatile="true" transient="true"
derived="true" resolveProxies="false">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Package#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="metaclassReference" ordered="false"
upperBound="-1" eType="#//ElementImport" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/elementImport">
<details key="org.eclipse.uml2.Namespace#getElementImports" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="metamodelReference" ordered="false"
upperBound="-1" eType="#//PackageImport" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/packageImport">
<details key="org.eclipse.uml2.Namespace#getPackageImports" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProfileApplication" eSuperTypes="#//PackageImport">
<eOperations name="setImportedPackage" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="importedPackage"/>
<details key="eType" value="org.eclipse.uml2.Package"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="superset" references="#//ProfileApplication/importedProfile"/>
<eParameters name="newImportedPackage" eType="#//Package"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedProfile" lowerBound="1"
eType="#//Profile" volatile="true">
<eAnnotations source="subsets" references="#//PackageImport/importedPackage">
<details key="org.eclipse.uml2.PackageImport#getImportedPackage" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Association">
<eOperations name="getOwnedEnds" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="ownedEnd"/>
<details key="eType" value="org.eclipse.uml2.ExtensionEnd"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Association/ownedEnd">
<details key="org.eclipse.uml2.Association#getOwnedEnds" value=""/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRequired" eType="#//Boolean"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="metaclass" lowerBound="1"
eType="#//Class" changeable="false" volatile="true" transient="true" derived="true"
eOpposite="#//Class/extension"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtensionEnd" eSuperTypes="#//Property">
<eOperations name="getType" lowerBound="1" eType="#//Type">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Stereotype"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type">
<details key="org.eclipse.uml2.TypedElement#getType" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setType" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Stereotype"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type">
<details key="org.eclipse.uml2.TypedElement#getType" value=""/>
</eAnnotations>
<eParameters name="newType" eType="#//Type"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
<eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
upperBound="-1" eType="#//Classifier"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//PackageableElement #//DirectedRelationship">
<eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
upperBound="-1" eType="#//Relationship"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Classifier"/>
</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. A classifier behavior is always a definition of behavior and not an illustration. It describes the sequence of state changes an instance of a classifier may undergo in the course of its lifetime. Its precise semantics depends on the kind of classifier. For example, the classifier behavior of a collaboration represents emergent behavior of all the parts, whereas the classifier behavior of a class is just the behavior of instances of the class separated from the behaviors of any of its parts. When a behavior is associated as the method of a behavioral feature, it defines the implementation of that feature; i.e., the computation that generates the effects of the behavioral feature. As a classifier, a behavior can be specialized. Instantiating a behavior is referred to as “invocating” the behavior, an instantiated behavior is also called a behavior “execution.” A behavior may be invoked directly or its invocation may be the result of invoking the behavioral feature that specifies this behavior. A behavior can also be instantiated as an object in virtue of it being a class. The specification of a behavior can take a number of forms, as described in the subclasses of Behavior. Behavior is an abstract metaclass factoring out the commonalities of these different specification mechanisms. When a behavior is invoked, its execution receives a set of input values that are used to affect the course of execution and as a result of its execution it produces a set of output values which are returned, as specified by its parameters. The observable effects of a behavior execution may include changes of values of various objects involved in the execution, the creation and destruction of objects, generation of communications between objects, as well as an explicit set of output values. "/>
</eAnnotations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Behavior/redefinedBehavior"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Behavior/parameter"/>
</eOperations>
<eOperations name="getOwnedRules" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="ownedRule"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Constraint"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Behavior/precondition #//Behavior/postcondition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//BehavioredClassifier"
volatile="true" transient="true" eOpposite="#//BehavioredClassifier/ownedBehavior"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedBehavior" ordered="false"
upperBound="-1" eType="#//Behavior">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" eType="#//BehavioralFeature"
eOpposite="#//BehavioralFeature/method"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
eType="#//Parameter" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="formalParameter" upperBound="-1"
eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnResult" upperBound="-1"
eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="precondition" ordered="false"
upperBound="-1" eType="#//Constraint" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/ownedRule">
<details key="org.eclipse.uml2.Namespace#getOwnedRules" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
upperBound="-1" eType="#//Constraint" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Namespace/ownedRule">
<details key="org.eclipse.uml2.Namespace#getOwnedRules" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameterSet" ordered="false"
upperBound="-1" eType="#//ParameterSet" containment="true"/>
</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 classifier can have behavior specifications defined in its namespace. One of these may specify the behavior of the classifier itself. "/>
</eAnnotations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//BehavioredClassifier/ownedBehavior #//BehavioredClassifier/ownedTrigger"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//BehavioredClassifier/implementation"/>
</eOperations>
<eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="clientDependency"/>
<details key="eOpposite" value="client"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//BehavioredClassifier/implementation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedBehavior" ordered="false"
upperBound="-1" eType="#//Behavior" volatile="true" containment="true" eOpposite="#//Behavior/context">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
<eAnnotations source="superset" references="#//BehavioredClassifier/classifierBehavior"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifierBehavior" eType="#//Behavior"
volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//BehavioredClassifier/ownedBehavior">
<details key="org.eclipse.uml2.BehavioredClassifier#getOwnedBehaviors" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="implementation" ordered="false"
upperBound="-1" eType="#//Implementation" volatile="true" containment="true"
eOpposite="#//Implementation/implementingClassifier">
<eAnnotations source="subsets" references="#//NamedElement/clientDependency">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedTrigger" ordered="false"
upperBound="-1" eType="#//Trigger" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedStateMachine" ordered="false"
upperBound="-1" eType="#//StateMachine" volatile="true" containment="true"
eOpposite="#//StateMachine/stateMachine_redefinitionContext">
<eAnnotations source="redefines" references="#//BehavioredClassifier/ownedBehavior">
<details key="org.eclipse.uml2.BehavioredClassifier#getOwnedBehaviors" value=""/>
</eAnnotations>
</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 contains a language-specific text string used to describe a computation, and an optional specification of the language. OCL, natural language, or programming languages may be used to specify an activity. "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Activity/edge #//Activity/group #//Activity/node"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="edge" ordered="false" upperBound="-1"
eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/activity">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="group" ordered="false"
upperBound="-1" eType="#//ActivityGroup" volatile="true" containment="true"
eOpposite="#//ActivityGroup/activityGroup_activity">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
eType="#//ActivityNode" volatile="true" containment="true" eOpposite="#//ActivityNode/activity">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
<eAnnotations source="superset" references="#//Activity/action"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="action" upperBound="-1"
eType="#//Action" volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Activity/node">
<details key="org.eclipse.uml2.Activity#getNodes" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuredNode" ordered="false"
upperBound="-1" eType="#//StructuredActivityNode" changeable="false" volatile="true"
transient="true" derived="true" resolveProxies="false">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Activity#getNodes" value=""/>
<details key="org.eclipse.uml2.Activity#getGroups" value=""/>
</eAnnotations>
<eAnnotations source="redefined">
<details key="eOpposite" value="activity"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSingleExecution" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" eType="#//Boolean"
defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Each Generalization is a binary relationship that relates a specific Classifier to a more general Classifier (i.e., a subclass). Each GeneralizationSet defines a particular set of Generalization relationships that describe the way in which a specific Classifier "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="powertype" eType="#//Classifier"
eOpposite="#//Classifier/powertypeExtent"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Model construct is defined as a Package. It contains a (hierarchical) set of elements that together describe the physical system being modeled. A Model may also contain a set of elements that represents the environment of the system, typically Actors, together with their interrelationships, such as Associations and Dependencies "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" eType="#//String"
defaultValueLiteral=""/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="In the metamodel, an AssociationClass is a declaration of a semantic relationship between Classifiers, which has a set of features of its own. AssociationClass is both an Association and a Class. "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Permission" eSuperTypes="#//Dependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Permission signifies granting of access rights from the supplier model element to a client model element. Or to put it another way, it signifies that the client requires access to some or all of the constituent elements of the supplier. The supplier element gives the client permission to access some or all of its constituents elements. "/>
</eAnnotations>
</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="client" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true" eOpposite="#//NamedElement/clientDependency"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true"/>
</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. In the metamodel, a Usage is a Dependency in which the client requires the presence of the supplier. "/>
</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. (See also, the definition of abstration in the Glossary.) In the metamodel, an Abstraction is a Dependency in which there is a mapping between the supplier and the client. "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Abstraction/mapping"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="mapping" eType="#//OpaqueExpression"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Realization" eSuperTypes="#//Abstraction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="In the metamodel, a Realization is a subtype of Dependencies::Realization. "/>
</eAnnotations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Realization/abstraction"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Realization/abstraction"/>
</eOperations>
<eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="client"/>
<details key="eOpposite" value="clientDependency"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Realization/abstraction"/>
</eOperations>
<eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Realization/realizingClassifier"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Realization/realizingClassifier"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" eType="#//Component"
volatile="true" transient="true" eOpposite="#//Component/realization">
<eAnnotations source="subsets" references="#//Dependency/client">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
<details key="org.eclipse.uml2.Dependency#getClients" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="realizingClassifier" lowerBound="1"
eType="#//Classifier" volatile="true">
<eAnnotations source="subsets" references="#//Dependency/supplier">
<details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</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 substitutingClassifier complies with the contract specified by the contract classifier. This implies that instances of the substitutingClassifier are runtime substitutable where instances of the contract classifier are expected. "/>
</eAnnotations>
<eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Substitution/contract"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Substitution/contract"/>
</eOperations>
<eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="client"/>
<details key="eOpposite" value="clientDependency"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Substitution/substitutingClassifier"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Substitution/substitutingClassifier"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" lowerBound="1"
eType="#//Classifier" volatile="true">
<eAnnotations source="subsets" references="#//Dependency/supplier">
<details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="substitutingClassifier"
lowerBound="1" eType="#//Classifier" volatile="true" transient="true" eOpposite="#//Classifier/substitution">
<eAnnotations source="subsets" references="#//Dependency/client">
<details key="org.eclipse.uml2.Dependency#getClients" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
</eAnnotations>
</eStructuralFeatures>
</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>
<eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" eType="#//Property"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="role" eType="#//ConnectableElement"
eOpposite="#//ConnectableElement/end"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" eType="#//Property"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
eSuperTypes="#//NamedElement #//ParameterableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConnectableElement is an abstract metaclass representing a set of instances that are owned by a containing classifier instance. Connectable elements may be joined by attached connectors and specify configurations of linked instances to be created within an instance of the containing classifier. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" upperBound="-1"
eType="#//ConnectorEnd" eOpposite="#//ConnectorEnd/role"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Each connector may be attached to two or more connectable elements, each representing a set of instances. Each connector end "/>
</eAnnotations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Connector/redefinedConnector"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Connector/end"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Association"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
upperBound="-1" eType="#//Connector">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"
eType="#//ConnectorEnd" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ConnectorKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
upperBound="-1" eType="#//Behavior"/>
</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="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute #//StructuredClassifier/ownedConnector"/>
</eOperations>
<eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuredClassifier/role"/>
</eOperations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuredClassifier/ownedConnector"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" ordered="false"
upperBound="-1" eType="#//Property" volatile="true" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>
<details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"
eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"
eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"
upperBound="-1" eType="#//Connector" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</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. In a sense, "/>
</eAnnotations>
<eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Interface/ownedAttribute"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Interface/ownedAttribute #//Interface/ownedOperation #//Interface/nestedClassifier #//Interface/ownedReception #//Interface/protocol"/>
</eOperations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Interface/ownedOperation #//Interface/ownedReception"/>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Interface/redefinedInterface"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedInterface" ordered="false"
upperBound="-1" eType="#//Interface">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"
eType="#//Classifier" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"
upperBound="-1" eType="#//Reception" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="protocol" eType="#//ProtocolStateMachine"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Implementation" eSuperTypes="#//Realization">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Implementation is a specialized Realization relationship between a Classifier and an Interface. The implementation relationship signifies that the realizing classifier conforms to the contract specified by the interface. "/>
</eAnnotations>
<eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Implementation/contract"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Implementation/contract"/>
</eOperations>
<eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="client"/>
<details key="eOpposite" value="clientDependency"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Implementation/implementingClassifier"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Implementation/implementingClassifier"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" lowerBound="1"
eType="#//Interface" volatile="true">
<eAnnotations source="subsets" references="#//Dependency/supplier">
<details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="implementingClassifier"
lowerBound="1" eType="#//BehavioredClassifier" volatile="true" transient="true"
eOpposite="#//BehavioredClassifier/implementation">
<eAnnotations source="subsets" references="#//Dependency/client">
<details key="org.eclipse.uml2.Dependency#getClients" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Classifier #//DeployedArtifact">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Artifact/manifestation"/>
</eOperations>
<eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="clientDependency"/>
<details key="eOpposite" value="client"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Artifact/manifestation"/>
</eOperations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Artifact/ownedOperation"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Artifact/ownedOperation #//Artifact/ownedAttribute"/>
</eOperations>
<eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Artifact/ownedAttribute"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedArtifact" ordered="false"
upperBound="-1" eType="#//Artifact" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="manifestation" ordered="false"
upperBound="-1" eType="#//Manifestation" volatile="true" containment="true">
<eAnnotations source="subsets" references="#//NamedElement/clientDependency">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"
eType="#//Operation" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Manifestation" eSuperTypes="#//Abstraction">
<eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Manifestation/utilizedElement"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Manifestation/utilizedElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" lowerBound="1"
eType="#//PackageableElement" volatile="true">
<eAnnotations source="subsets" references="#//Dependency/supplier">
<details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An Actor models a type of role played by an entity that interacts with the subject (e.g., by exchanging signals and data), "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This relationship specifies that the behavior of a use case may be extended by the behavior of another (usually supplementary) use case. The extension takes place at one or more specific extension points defined in the extended use case. Note, however, that the extended use case is defined independently of the extending use case and is meaningful independently of the extending use case. On the other hand, the extending use case typically defines behavior that may not necessarily be meaningful by itself. Instead, the extending use case defines a set of modular behavior increments that augment an execution of the extended use case under specific conditions. Note that the same extending use case can extend more than one use case. Furthermore, an extending use case may itself be extended. "/>
</eAnnotations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Extend/extendedCase"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Extend/extension"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Extend/condition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" lowerBound="1"
eType="#//UseCase">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" lowerBound="1"
eType="#//UseCase" transient="true" eOpposite="#//UseCase/extend">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Constraint"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extensionLocation" lowerBound="1"
upperBound="-1" eType="#//ExtensionPoint"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//BehavioredClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A UseCase is a kind of behaviored classifier that represents a declaration of an offered behavior. Each use case specifies some behavior, possibly including variants, that the subject can perform in collaboration with one or more actors. Use cases define the offered behavior of the subject without reference to its internal structure. These behaviors, involving interactions between the actor and the subject, may result in changes to the state of the subject and communications with its environment. A use case can include possible variations of its basic behavior, including exceptional behavior and error handling. The subject of a use case could be a physical system or any other element that may have behavior, such as a component, subsystem or class. Each use case specifies a unit of useful functionality that the subject provides to its users, i.e., a specific way of interacting with the subject. This functionality, which is initiated by an actor, must always be completed for the use case to complete. It is deemed complete if, after its execution, the subject will be in a state in which no further inputs or actions are expected and the use case can be initiated again or in an error state. Use cases can be used both for specification of the (external) requirements on a subject and for the specification of the functionality offered by a subject. Moreover, the use cases also state the requirements the specified subject poses on its environment by defining how they should interact with the subject so that it will be able to perform its services. The behavior of a use case can be described by a specification that is some kind of Behavior (through its ownedBehavior relationship), such as interactions, activities, and state machines, or by pre-conditions and post-conditions as well as by natural language text where appropriate. It may also be described indirectly through a Collaboration that uses the use case and its actors as the classifiers that type its parts. Which of these techniques to use depends on the nature of the use case behavior as well as on the intended reader. These descriptions can be combined. An example of a use case with an associated state machine description is shown in Figure 405. "/>
</eAnnotations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//UseCase/include #//UseCase/extend #//UseCase/extensionPoint"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="include" ordered="false"
upperBound="-1" eType="#//Include" containment="true" eOpposite="#//Include/includingCase">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extend" ordered="false"
upperBound="-1" eType="#//Extend" containment="true" eOpposite="#//Extend/extension">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extensionPoint" ordered="false"
upperBound="-1" eType="#//ExtensionPoint" containment="true" eOpposite="#//ExtensionPoint/useCase">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subject" ordered="false"
upperBound="-1" eType="#//Classifier" eOpposite="#//Classifier/useCase"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtensionPoint" eSuperTypes="#//RedefinableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An ExtensionPoint is a feature of a use case that identifies a point where the behavior of a use case can be augmented with elements of another (extending) use case. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="useCase" lowerBound="1"
eType="#//UseCase" transient="true" eOpposite="#//UseCase/extensionPoint"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Include" eSuperTypes="#//NamedElement #//DirectedRelationship">
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Include/includingCase"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Include/addition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="includingCase" lowerBound="1"
eType="#//UseCase" transient="true" eOpposite="#//UseCase/include">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="addition" lowerBound="1"
eType="#//UseCase">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityEdge/activity"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityEdge/guard #//ActivityEdge/weight"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="activity" eType="#//Activity"
transient="true" eOpposite="#//Activity/edge">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//ActivityNode" eOpposite="#//ActivityNode/incoming"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="union" references="#//ActivityEdge/inStructuredNode #//ActivityEdge/inPartition"/>
<eAnnotations source="redefined">
<details key="eOpposite" value="containedEdge"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" lowerBound="1" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
upperBound="-1" eType="#//ActivityEdge">
<eAnnotations source="redefines" references="#//RedefinableElement/getRedefinedElements">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" eType="#//StructuredActivityNode"
transient="true" eOpposite="#//StructuredActivityNode/containedEdge">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.ActivityEdge#getInGroups" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/containedEdge">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.ActivityEdge#getInGroups" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="weight" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="interrupts" eType="#//InterruptibleActivityRegion"
eOpposite="#//InterruptibleActivityRegion/interruptingEdge"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//Element">
<eOperations name="getSubgroups" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="subgroup"/>
<details key="eOpposite" value="superGroup"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
<eAnnotations source="union"/>
</eOperations>
<eOperations name="getContainedEdges" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="containedEdge"/>
<details key="eOpposite" value="inGroup"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.ActivityEdge"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
</eOperations>
<eOperations name="getContainedNodes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="containedNode"/>
<details key="eOpposite" value="inGroup"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.ActivityNode"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
</eOperations>
<eOperations name="getActivity" eType="#//Activity">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="activity"/>
<details key="eOpposite" value="node"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
</eOperations>
<eOperations name="setActivity">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="activity"/>
<details key="eOpposite" value="node"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
<eParameters name="newActivity" eType="#//Activity"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityGroup/getSubgroups"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityGroup/superGroup #//ActivityGroup/activityGroup_activity"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" eType="#//ActivityGroup"
changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="union"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
<eAnnotations source="redefined">
<details key="eOpposite" value="subgroup"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="activityGroup_activity"
eType="#//Activity" volatile="true" transient="true" eOpposite="#//Activity/group">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
<eAnnotations source="redefines">
<details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityNode/activity"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/source"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/target"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="union" references="#//ActivityNode/inStructuredNode #//ActivityNode/inPartition #//ActivityNode/inInterruptibleRegion"/>
<eAnnotations source="redefined">
<details key="eOpposite" value="containedNode"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="activity" eType="#//Activity"
volatile="true" transient="true" eOpposite="#//Activity/node">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
upperBound="-1" eType="#//ActivityNode">
<eAnnotations source="redefines" references="#//RedefinableElement/getRedefinedElements">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" eType="#//StructuredActivityNode"
transient="true" eOpposite="#//StructuredActivityNode/containedNode">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/containedNode">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inInterruptibleRegion"
ordered="false" upperBound="-1" eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/containedNode">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//ExecutableNode">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Action/output #//Action/input #//Action/localPrecondition #//Action/localPostcondition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="output" upperBound="-1"
eType="#//OutputPin" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="union"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
eType="#//InputPin" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="union"/>
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//Classifier"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="localPrecondition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="localPostcondition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ObjectNode/upperBound"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" eType="#//ObjectNodeOrderingKind"
defaultValueLiteral="FIFO"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inState" ordered="false"
upperBound="-1" eType="#//State"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="selection" eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ControlNode" abstract="true" eSuperTypes="#//ActivityNode"/>
<eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge"/>
<eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="transformation" eType="#//Behavior"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="selection" eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode"/>
<eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode"/>
<eClassifiers xsi:type="ecore:EClass" name="ActivityFinalNode" eSuperTypes="#//FinalNode"/>
<eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
<eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode"/>
<eClassifiers xsi:type="ecore:EClass" name="ExecutableNode" abstract="true" eSuperTypes="#//ActivityNode">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ExecutableNode/handler"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="handler" ordered="false"
upperBound="-1" eType="#//ExceptionHandler" containment="true" eOpposite="#//ExceptionHandler/protectedNode">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin"/>
<eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin"/>
<eClassifiers xsi:type="ecore:EClass" name="Pin" abstract="true" eSuperTypes="#//ObjectNode #//MultiplicityElement"/>
<eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
eType="#//Parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//ValueSpecification"
containment="true"/>
</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 with the following literals: • sequential 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. • guarded 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. • concurrent Multiple invocations of a behavioral feature may occur simultaneously to one instance and all of them may proceed concurrently. "/>
</eAnnotations>
<eLiterals name="sequential"/>
<eLiterals name="guarded" value="1"/>
<eLiterals name="concurrent" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallTrigger" eSuperTypes="#//MessageTrigger">
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" lowerBound="1"
eType="#//Operation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageTrigger" abstract="true" eSuperTypes="#//Trigger">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A message trigger specifies the an observable event caused by a either a call or a signal. MessageTrigger is an abstract metaclass. "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ChangeTrigger" eSuperTypes="#//Trigger">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A change trigger specifies an event that occurs when a Boolean-valued expression becomes true as a result of a change in "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ChangeTrigger/changeExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A trigger specifies the an event that may cause the execution of an associated behavior. An event is often ultimately caused by the execution of an action, but need not be. Trigger is an abstract metaclass. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
eType="#//Port"/>
</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>
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" eType="#//Signal"/>
</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 type of send request instances communicated between objects. The receiving object handles the signal instance as specified by its receptions. The data carried by a send request and passed to it by the occurrence of the send invocation event that caused the request is represented as attributes of the signal instance. A signal is defined independently of the classifiers handling the signal. "/>
</eAnnotations>
<eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Signal/ownedAttribute"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Signal/ownedAttribute"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
eType="#//Property" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SignalTrigger" eSuperTypes="#//MessageTrigger">
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" upperBound="-1"
eType="#//Signal"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeTrigger" eSuperTypes="#//Trigger">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A time trigger specifies a time event, which models the expiration of a specific deadline. "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TimeTrigger/when"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="when" lowerBound="1" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AnyTrigger" eSuperTypes="#//MessageTrigger">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An AnyTrigger for a given state specifies that the transition is triggered for all applicable message triggers except for those specified explicitly on other transitions for this state. "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollaborationOccurrence" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A collaboration occurrence represents one particular use of a collaboration to explain the relationships between the properties of a classifier. A collaboration occurrence indicates a set of roles and connectors that cooperate within the classifier according to a given collaboration, indicated by the type of the collaboration occurrence. 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. 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="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//CollaborationOccurrence/roleBinding"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Collaboration"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="roleBinding" ordered="false"
upperBound="-1" eType="#//Dependency" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</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 is represented as a kind of classifier and defines a set of cooperating entities to be played by instances (its roles), as well as a set of connectors that define communication paths between the participating instances. The cooperating entities are the properties of the collaboration (see “Property” on page 161). A collaboration specifies a view (or projection) of a set of cooperating classifiers. It describes the required links between instances that play the roles of the collaboration, as well as the features required of the classifiers that specify the participating instances. Several collaborations may describe different projections of the same set of classifiers. "/>
</eAnnotations>
<eOperations name="getRoles" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="role"/>
<details key="eType" value="org.eclipse.uml2.ConnectableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Collaboration/collaborationRole"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="collaborationRole" ordered="false"
upperBound="-1" eType="#//ConnectableElement">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ports represent interaction points between a classifier and its environment. The interfaces associated with a port specify the nature of the interactions that may occur over a port. The required interfaces of a port characterize the requests which may be made from the classifier to its environment through this port. The provided interfaces of a port characterize requests to the classifier that its environment may make through this port. A port has the ability to specify that any requests arriving at this port are handled by the behavior of the instance of the owning classifier, rather than being forwarded to any contained instances, if any. "/>
</eAnnotations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Port/redefinedPort"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" eType="#//Boolean"
defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"
upperBound="-1" eType="#//Port">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="protocol" eType="#//ProtocolStateMachine"/>
</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="Extends a classifier with the ability to own ports as specific and type checked interaction points. "/>
</eAnnotations>
<eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"
upperBound="-1" eType="#//Port" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//TypedElement #//MultiplicityElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A variable is considered a connectable element. "/>
</eAnnotations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Variable/scope"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="scope" lowerBound="1" eType="#//StructuredActivityNode"
transient="true" eOpposite="#//StructuredActivityNode/variable">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">
<eOperations name="getActivity" eType="#//Activity">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="activity"/>
<details key="eOpposite" value="structuredNode"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">
<details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
<details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setActivity">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="activity"/>
<details key="eOpposite" value="structuredNode"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">
<details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
<details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>
</eAnnotations>
<eParameters name="newActivity" eType="#//Activity"/>
</eOperations>
<eOperations name="getActivityGroup_activity" eType="#//Activity">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="activityGroup_activity"/>
<details key="eOpposite" value="group"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//StructuredActivityNode/getActivity"/>
</eOperations>
<eOperations name="setActivityGroup_activity">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="activityGroup_activity"/>
<details key="eOpposite" value="group"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//StructuredActivityNode/setActivity"/>
<eParameters name="newActivityGroup_activity" eType="#//Activity"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuredActivityNode/variable"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" upperBound="-1"
eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">
<eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
<details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" upperBound="-1"
eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">
<eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">
<details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" eType="#//Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ConditionalNode/clause"/>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ConditionalNode/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
eType="#//ActivityNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"
eType="#//ActivityNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"
upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"
upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="decider" lowerBound="1"
eType="#//OutputPin"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"
upperBound="-1" eType="#//OutputPin"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//LoopNode/result"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//LoopNode/loopVariable"/>
</eOperations>
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//LoopNode/loopVariableInput"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"
upperBound="-1" eType="#//ActivityNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"
upperBound="-1" eType="#//ActivityNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="decider" lowerBound="1"
eType="#//OutputPin"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
eType="#//ActivityNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"
upperBound="-1" eType="#//OutputPin"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</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 TemplateSignature is owned by a TemplateableElement and has one or more TemplateParameters that define the signature for binding this template. A TemplateSignature may reference a set of nested template signatures to reflect the hierarchical nature of a template. "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateSignature/ownedParameter"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateSignature/template"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
lowerBound="1" upperBound="-1" eType="#//TemplateParameter" volatile="true">
<eAnnotations source="superset" references="#//TemplateSignature/ownedParameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" ordered="false"
upperBound="-1" eType="#//TemplateParameter" volatile="true" containment="true"
eOpposite="#//TemplateParameter/signature">
<eAnnotations source="subsets" references="#//TemplateSignature/parameter">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.TemplateSignature#getParameters" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedSignature" ordered="false"
upperBound="-1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/nestingSignature"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestingSignature" eType="#//TemplateSignature"
eOpposite="#//TemplateSignature/nestedSignature"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="template" lowerBound="1"
eType="#//TemplateableElement" transient="true" eOpposite="#//TemplateableElement/ownedTemplateSignature">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateParameter" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="TemplateParameter references a ParameterableElement which is exposed as a formal template parameter in the containing template. "/>
</eAnnotations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateParameter/signature"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateParameter/ownedParameteredElement #//TemplateParameter/ownedDefault"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" lowerBound="1"
eType="#//TemplateSignature" volatile="true" transient="true" eOpposite="#//TemplateSignature/ownedParameter">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameteredElement" lowerBound="1"
eType="#//ParameterableElement" volatile="true" eOpposite="#//ParameterableElement/templateParameter">
<eAnnotations source="superset" references="#//TemplateParameter/ownedParameteredElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameteredElement"
eType="#//ParameterableElement" volatile="true" containment="true" eOpposite="#//ParameterableElement/owningParameter">
<eAnnotations source="subsets" references="#//TemplateParameter/parameteredElement">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.TemplateParameter#getParameteredElement" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="default" eType="#//ParameterableElement"
volatile="true">
<eAnnotations source="superset" references="#//TemplateParameter/ownedDefault"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedDefault" eType="#//ParameterableElement"
volatile="true" containment="true">
<eAnnotations source="subsets" references="#//TemplateParameter/default">
<details key="org.eclipse.uml2.TemplateParameter#getDefault" value=""/>
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</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="TemplateableElement may contain a template signature which specifies the formal template parameters. A TemplateableElement that contains a template signature is often referred to as a template. TemplateableElement may contain bindings to templates that describe how the templateable element is constructed by replacing the formal template parameters with actual parameters. A TemplateableElement containing bindings is often referred to as a bound element. "/>
</eAnnotations>
<eOperations name="parameterableElements" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;parameterableElements&quot;, null); //$NON-NLS-1$&#xD;&#xA;&#x9;Set result = (Set) getCacheAdapter().get(this, method);&#xD;&#xA;&#xD;&#xA;&#x9;if (null == result) {&#xD;&#xA;&#x9;&#x9;result = java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this));&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this, method, result);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;return result;&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this);&#xD;&#xA;}"/>
</eAnnotations>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateableElement/templateBinding #//TemplateableElement/ownedTemplateSignature"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
upperBound="-1" eType="#//TemplateBinding" containment="true" eOpposite="#//TemplateBinding/boundElement">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedTemplateSignature"
eType="#//TemplateSignature" containment="true" eOpposite="#//TemplateSignature/template">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StringExpression" eSuperTypes="#//TemplateableElement">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StringExpression/subExpression"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StringExpression/owningExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="subExpression" ordered="false"
upperBound="-1" eType="#//StringExpression" containment="true" eOpposite="#//StringExpression/owningExpression">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningExpression" eType="#//StringExpression"
transient="true" eOpposite="#//StringExpression/subExpression">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</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 ParameterableElement can be referenced by a TemplateParameter when defining a formal template parameter for a template. A ParameterableElement can be referenced by a TemplateParameterSubstitution when used as an actual parameter in a binding of a template. ParameterableElement is an abstract metaclass. "/>
</eAnnotations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ParameterableElement/owningParameter"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateParameter" eType="#//TemplateParameter"
volatile="true" eOpposite="#//TemplateParameter/parameteredElement">
<eAnnotations source="superset" references="#//ParameterableElement/owningParameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningParameter" eType="#//TemplateParameter"
volatile="true" transient="true" eOpposite="#//TemplateParameter/ownedParameteredElement">
<eAnnotations source="subsets" references="#//ParameterableElement/templateParameter">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
<details key="org.eclipse.uml2.ParameterableElement#getTemplateParameter"
value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateBinding" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="TemplateBinding is a directed relationship from a bound templateable element to the template signature of the target template. A TemplateBinding owns a set of template parameter substitutions. "/>
</eAnnotations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateBinding/boundElement"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateBinding/boundElement"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateBinding/signature"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateBinding/parameterSubstitution"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="boundElement" lowerBound="1"
eType="#//TemplateableElement" transient="true" eOpposite="#//TemplateableElement/templateBinding">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" lowerBound="1"
eType="#//TemplateSignature">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
ordered="false" upperBound="-1" eType="#//TemplateParameterSubstitution" containment="true"
eOpposite="#//TemplateParameterSubstitution/templateBinding">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</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="TemplateParameterSubstitution associates one or more actual parameters with a formal template parameter within the context of a TemplateBinding. "/>
</eAnnotations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateParameterSubstitution/templateBinding"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateParameterSubstitution/ownedActual"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="formal" lowerBound="1"
eType="#//TemplateParameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" lowerBound="1"
eType="#//TemplateBinding" transient="true" eOpposite="#//TemplateBinding/parameterSubstitution">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="actual" ordered="false"
lowerBound="1" upperBound="-1" eType="#//ParameterableElement" volatile="true">
<eAnnotations source="superset" references="#//TemplateParameterSubstitution/ownedActual"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedActual" ordered="false"
upperBound="-1" eType="#//ParameterableElement" volatile="true" containment="true">
<eAnnotations source="subsets" references="#//TemplateParameterSubstitution/actual">
<details key="org.eclipse.uml2.TemplateParameterSubstitution#getActuals" value=""/>
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OperationTemplateParameter" eSuperTypes="#//TemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="OperationTemplateParameter is a template parameter where the parametered element is an Operation. "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClassifierTemplateParameter" eSuperTypes="#//TemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ClassifierTemplateParameter is a template parameter where the parametered element is a Classifier in its capacity of being a kind of ParameterableElement. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" eType="#//Boolean"
defaultValueLiteral="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterableClassifier" abstract="true"
eSuperTypes="#//Classifier"/>
<eClassifiers xsi:type="ecore:EClass" name="RedefinableTemplateSignature" eSuperTypes="#//RedefinableElement #//TemplateSignature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="RedefinableTemplateSignature specializes both TemplateSignature and RedefinableElement in order to allow the addition of new formal template parameters in the context of a specializing template Classifier. "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateableClassifier" abstract="true"
eSuperTypes="#//Classifier"/>
<eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"
eSuperTypes="#//TemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="ConnectableElementTemplateParameter is a template parameter where the parametered element is a ConnectableElement. "/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The point is that the InteractionConstraint &quot;received&quot; from StructuralArchitecture will consist of a set of such units described by sequence diagrams (or collaboration diagrams)."/>
</eAnnotations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Interaction/lifeline #//Interaction/message #//Interaction/formalGate"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="lifeline" ordered="false"
upperBound="-1" eType="#//Lifeline" containment="true" eOpposite="#//Lifeline/interaction">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
upperBound="-1" eType="#//Message" containment="true" eOpposite="#//Message/interaction">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingInteraction"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="formalGate" ordered="false"
upperBound="-1" eType="#//Gate" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</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="An InteractionFragment is a general class that holds the common parts of CompositeFragment, AtomicFragment and InteractionExpressionOperand.&#xD;&#xA;Conceptually it is very much the same as a full sequence diagram, but a fragment is not named and must be referred then through structure."/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionFragment/generalOrdering"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionFragment/enclosingOperand"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="covered" ordered="false"
upperBound="-1" eType="#//Lifeline" volatile="true" eOpposite="#//Lifeline/coveredBy"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalOrdering" ordered="false"
upperBound="-1" eType="#//GeneralOrdering" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="enclosingInteraction" eType="#//Interaction"
transient="true" eOpposite="#//Interaction/fragment"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" eType="#//InteractionOperand"
transient="true" eOpposite="#//InteractionOperand/fragment">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</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 Lifelineis the concept behind a lifeline in a Sequence &#xD;&#xA;Diagram. A Participant may be a Part or it may be a parameter representing a part. Its qualification is a Classifier which in turn may be an Interface (or ClassifierRole?)"/>
</eAnnotations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Lifeline/interaction"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Lifeline/selector"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="coveredBy" ordered="false"
upperBound="-1" eType="#//InteractionFragment" volatile="true" eOpposite="#//InteractionFragment/covered"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="represents" lowerBound="1"
eType="#//ConnectableElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="interaction" lowerBound="1"
eType="#//Interaction" transient="true" eOpposite="#//Interaction/lifeline">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="selector" eType="#//OpaqueExpression"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" eType="#//PartDecomposition"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Message/interaction"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Message/argument"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" eType="#//MessageKind"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" eType="#//MessageSort"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" eType="#//MessageEnd"
eOpposite="#//MessageEnd/receiveMessage"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" eType="#//MessageEnd"
eOpposite="#//MessageEnd/sendMessage"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connector" eType="#//Connector"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="interaction" lowerBound="1"
eType="#//Interaction" transient="true" eOpposite="#//Interaction/message">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" eType="#//NamedElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
upperBound="-1" eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="before" lowerBound="1"
eType="#//EventOccurrence" eOpposite="#//EventOccurrence/toAfter"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="after" lowerBound="1" eType="#//EventOccurrence"
eOpposite="#//EventOccurrence/toBefore"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="MessageKind">
<eLiterals name="complete"/>
<eLiterals name="lost" value="1"/>
<eLiterals name="found" value="2"/>
<eLiterals name="unknown" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="MessageSort">
<eLiterals name="synchCall"/>
<eLiterals name="synchSignal" value="1"/>
<eLiterals name="asynchCall" value="2"/>
<eLiterals name="asynchSignal" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageEnd" abstract="true" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="receiveMessage" eType="#//Message"
eOpposite="#//Message/receiveEvent"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="sendMessage" eType="#//Message"
eOpposite="#//Message/sendEvent"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EventOccurrence" eSuperTypes="#//InteractionFragment #//MessageEnd">
<eOperations name="getCovereds" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="covered"/>
<details key="eType" value="org.eclipse.uml2.Lifeline"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//InteractionFragment/covered">
<details key="org.eclipse.uml2.InteractionFragment#getCovereds" value=""/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="startExec" ordered="false"
upperBound="-1" eType="#//ExecutionOccurrence" eOpposite="#//ExecutionOccurrence/start"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="finishExec" ordered="false"
upperBound="-1" eType="#//ExecutionOccurrence" eOpposite="#//ExecutionOccurrence/finish"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="toAfter" ordered="false"
upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/before"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="toBefore" ordered="false"
upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/after"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExecutionOccurrence" eSuperTypes="#//InteractionFragment">
<eStructuralFeatures xsi:type="ecore:EReference" name="start" lowerBound="1" eType="#//EventOccurrence"
eOpposite="#//EventOccurrence/startExec"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="finish" lowerBound="1"
eType="#//EventOccurrence" eOpposite="#//EventOccurrence/finishExec"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" upperBound="-1"
eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
<eOperations name="getCovereds" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="covered"/>
<details key="eType" value="org.eclipse.uml2.Lifeline"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//InteractionFragment/covered">
<details key="org.eclipse.uml2.InteractionFragment#getCovereds" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StateInvariant/invariant"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="invariant" lowerBound="1"
eType="#//Constraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//EventOccurrence"/>
<eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//StateMachine/extendedStateMachine"/>
</eOperations>
<eOperations name="getRedefinitionContexts" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//StateMachine/stateMachine_redefinitionContext"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StateMachine/region #//StateMachine/connectionPoint"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/stateMachine">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"
upperBound="-1" eType="#//Pseudostate" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedStateMachine" eType="#//StateMachine">
<eAnnotations source="redefines">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine_redefinitionContext"
eType="#//BehavioredClassifier" volatile="true" transient="true" eOpposite="#//BehavioredClassifier/ownedStateMachine">
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"
value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="#//Namespace #//RedefinableElement">
<eOperations name="getRedefinitionContexts" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"
value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Region/extendedRegion"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Region/subvertex #//Region/transition"/>
</eOperations>
<eOperations name="getNamespace" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="ownedMember"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//Region/stateMachine #//Region/state"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="subvertex" ordered="false"
upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/container">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="transition" ordered="false"
upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/container">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine" eType="#//StateMachine"
transient="true" eOpposite="#//StateMachine/region">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="state" eType="#//State"
transient="true" eOpposite="#//State/region">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedRegion" eType="#//Region">
<eAnnotations source="redefines">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//PseudostateKind"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//Namespace #//RedefinableElement #//Vertex">
<eOperations name="getRedefinitionContexts" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"
value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//State/redefinedState"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//State/connection #//State/entry #//State/exit #//State/doActivity #//State/stateInvariant"/>
</eOperations>
<eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedMember"/>
<details key="eOpposite" value="namespace"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//State/region"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" eType="#//Boolean"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" eType="#//Boolean"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" eType="#//Boolean"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" eType="#//Boolean"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="submachine" eType="#//StateMachine"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"
upperBound="-1" eType="#//ConnectionPointReference" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedState" eType="#//State">
<eAnnotations source="redefines">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="deferrableTrigger" ordered="false"
upperBound="-1" eType="#//Trigger"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"
upperBound="-1" eType="#//Region" containment="true" eOpposite="#//Region/state">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="entry" eType="#//Activity"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="exit" eType="#//Activity"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" eType="#//Activity"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" eType="#//Constraint"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="#//NamedElement">
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Vertex/container"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="container" eType="#//Region"
transient="true" eOpposite="#//Region/subvertex">
<eAnnotations source="redefines" references="#//Element/owner">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
upperBound="-1" eType="#//Transition" eOpposite="#//Transition/source"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
upperBound="-1" eType="#//Transition" eOpposite="#//Transition/target"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Connection point references of a submachine state can be used as sources/targets of transitions. They represent entries into or exits out of the submachine state machine referenced by the submachine state. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
upperBound="-1" eType="#//Pseudostate"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" upperBound="-1"
eType="#//Pseudostate"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//RedefinableElement">
<eOperations name="getRedefinitionContexts" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"
value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Transition/redefinedTransition"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Transition/container"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Transition/guard #//Transition/effect"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//TransitionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="container" lowerBound="1"
eType="#//Region" transient="true" eOpposite="#//Region/transition">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
eType="#//Vertex" eOpposite="#//Vertex/outgoing"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//Vertex" eOpposite="#//Vertex/incoming"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" eType="#//Transition">
<eAnnotations source="redefines">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
upperBound="-1" eType="#//Trigger"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//Constraint"
volatile="true" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="effect" eType="#//Activity"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="TransitionKind">
<eLiterals name="internal"/>
<eLiterals name="local" value="1"/>
<eLiterals name="external" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="PseudostateKind">
<eLiterals name="initial"/>
<eLiterals name="deepHistory" value="1"/>
<eLiterals name="shallowHistory" value="2"/>
<eLiterals name="join" value="3"/>
<eLiterals name="fork" value="4"/>
<eLiterals name="junction" value="5"/>
<eLiterals name="choice" value="6"/>
<eLiterals name="entryPoint" value="7"/>
<eLiterals name="exitPoint" value="8"/>
<eLiterals name="terminate" value="9"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/>
<eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//CreateObjectAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" lowerBound="1"
eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DestroyObjectAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//DestroyObjectAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyLinks" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyOwnedObjects"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TestIdentityAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//TestIdentityAction/first #//TestIdentityAction/second"/>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//TestIdentityAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="first" lowerBound="1" eType="#//InputPin"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="second" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadSelfAction" eSuperTypes="#//Action">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadSelfAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuralFeatureAction" abstract="true"
eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuralFeatureAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" lowerBound="1"
eType="#//StructuralFeature"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadStructuralFeatureAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WriteStructuralFeatureAction" abstract="true"
eSuperTypes="#//StructuralFeatureAction">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//WriteStructuralFeatureAction/value"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//InputPin"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClearStructuralFeatureAction" eSuperTypes="#//StructuralFeatureAction"/>
<eClassifiers xsi:type="ecore:EClass" name="RemoveStructuralFeatureValueAction"
eSuperTypes="#//WriteStructuralFeatureAction"/>
<eClassifiers xsi:type="ecore:EClass" name="AddStructuralFeatureValueAction" eSuperTypes="#//WriteStructuralFeatureAction">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//AddStructuralFeatureValueAction/insertAt"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" eType="#//InputPin"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkAction" abstract="true" eSuperTypes="#//Action">
<eStructuralFeatures xsi:type="ecore:EReference" name="endData" ordered="false"
lowerBound="2" upperBound="-1" eType="#//LinkEndData" volatile="true" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkEndData" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//InputPin"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="1" eType="#//Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
upperBound="-1" eType="#//QualifierValue" volatile="true" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadLinkAction" eSuperTypes="#//LinkAction">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinkEndCreationData" eSuperTypes="#//LinkEndData">
<eOperations name="getQualifiers" lowerBound="1" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="qualifier"/>
<details key="eType" value="org.eclipse.uml2.QualifierValue"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkEndData/qualifier">
<details key="org.eclipse.uml2.LinkEndData#getQualifiers" value=""/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" eType="#//InputPin"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CreateLinkAction" eSuperTypes="#//WriteLinkAction">
<eOperations name="getEndData" ordered="false" lowerBound="2" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="endData"/>
<details key="eType" value="org.eclipse.uml2.LinkEndCreationData"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkAction/endData">
<details key="org.eclipse.uml2.LinkAction#getEndData" value=""/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WriteLinkAction" abstract="true" eSuperTypes="#//LinkAction"/>
<eClassifiers xsi:type="ecore:EClass" name="DestroyLinkAction" eSuperTypes="#//WriteLinkAction"/>
<eClassifiers xsi:type="ecore:EClass" name="ClearAssociationAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ClearAssociationAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="association" lowerBound="1"
eType="#//Association"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableAction" abstract="true" eSuperTypes="#//Action">
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
eType="#//Variable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadVariableAction" eSuperTypes="#//VariableAction">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadVariableAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WriteVariableAction" abstract="true"
eSuperTypes="#//VariableAction">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//WriteVariableAction/value"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//InputPin"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ClearVariableAction" eSuperTypes="#//VariableAction"/>
<eClassifiers xsi:type="ecore:EClass" name="AddVariableValueAction" eSuperTypes="#//WriteVariableAction">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//AddVariableValueAction/insertAt"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" eType="#//InputPin"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RemoveVariableValueAction" eSuperTypes="#//WriteVariableAction"/>
<eClassifiers xsi:type="ecore:EClass" name="ApplyFunctionAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ApplyFunctionAction/argument"/>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ApplyFunctionAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1"
eType="#//PrimitiveFunction"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
upperBound="-1" eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveFunction" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" eType="#//String"
defaultValueLiteral=""/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallAction" abstract="true" eSuperTypes="#//InvocationAction">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//CallAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" eType="#//Boolean"
defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InvocationAction" abstract="true" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//InvocationAction/argument"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="onPort" eType="#//Port"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SendSignalAction" eSuperTypes="#//InvocationAction">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//SendSignalAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" lowerBound="1"
eType="#//Signal"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BroadcastSignalAction" eSuperTypes="#//InvocationAction">
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" lowerBound="1"
eType="#//Signal"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SendObjectAction" eSuperTypes="#//InvocationAction">
<eOperations name="getArguments" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="argument"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//SendObjectAction/request"/>
</eOperations>
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//SendObjectAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="request" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="redefines" references="#//InvocationAction/argument">
<details key="org.eclipse.uml2.InvocationAction#getArguments" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallOperationAction" eSuperTypes="#//CallAction">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//CallOperationAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" lowerBound="1"
eType="#//Operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallBehaviorAction" eSuperTypes="#//CallAction">
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" lowerBound="1"
eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode"/>
<eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//JoinNode/joinSpec"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" eType="#//Boolean"
defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" lowerBound="1"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode"/>
<eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode"/>
<eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">
<eOperations name="getSuperGroup" eType="#//ActivityGroup">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="superGroup"/>
<details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
<details key="containment" value="false"/>
<details key="eOpposite" value="subgroup"/>
<details key="eOpposite.containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
<details key="eOpposite.upperBound" value="-1"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityPartition/superPartition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" upperBound="-1"
eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">
<eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">
<details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" upperBound="-1"
eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">
<eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
<details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">
<eAnnotations source="redefines" references="#//ActivityGroup/getSubgroups">
<details key="org.eclipse.uml2.ActivityGroup#getSubgroups" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" eType="#//ActivityPartition"
transient="true" eOpposite="#//ActivityPartition/subgroup">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.ActivityGroup#getSuperGroup" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="represents" eType="#//Element"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">
<eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" eType="#//ExpansionRegion"
eOpposite="#//ExpansionRegion/outputElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" eType="#//ExpansionRegion"
eOpposite="#//ExpansionRegion/inputElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" eType="#//ExpansionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="outputElement" ordered="false"
upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsOutput"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="inputElement" ordered="false"
lowerBound="1" upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsInput"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ExpansionKind">
<eLiterals name="parallel"/>
<eLiterals name="iterative" value="1"/>
<eLiterals name="stream" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ExceptionHandler/protectedNode"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" lowerBound="1"
eType="#//ExecutableNode" transient="true" eOpposite="#//ExecutableNode/handler">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" lowerBound="1"
eType="#//ExecutableNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" lowerBound="1"
eType="#//ObjectNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionType" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Classifier"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionOccurrence" eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="InteractionOccurrence is a specialization of InteractionFragment. An InteractionOccurrence has a set of actual gates that must match the formal gates of the referenced Interaction. "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionOccurrence/actualGate"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" lowerBound="1"
eType="#//Interaction"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="actualGate" ordered="false"
upperBound="-1" eType="#//Gate" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
upperBound="-1" eType="#//InputPin" containment="true"/>
</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. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.&#xD;&#xA;More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.&#xD;&#xA;Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)"/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionOccurrence">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram."/>
</eAnnotations>
</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 InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.&#xD;&#xA;An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)"/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionOperand/guard"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//InteractionConstraint"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="fragment" ordered="false"
upperBound="-1" eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingOperand"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionConstraint/minint #//InteractionConstraint/maxint"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="minint" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="maxint" eType="#//ValueSpecification"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="InteractionOperator">
<eLiterals name="seq"/>
<eLiterals name="alt" value="1"/>
<eLiterals name="opt" value="2"/>
<eLiterals name="break" value="3"/>
<eLiterals name="par" value="4"/>
<eLiterals name="strict" value="5"/>
<eLiterals name="loop" value="6"/>
<eLiterals name="critical" value="7"/>
<eLiterals name="neg" value="8"/>
<eLiterals name="assert" value="9"/>
<eLiterals name="ignore" value="10"/>
<eLiterals name="consider" value="11"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An interaction fragment that decomposes into a set of other interaction fragments under some operator.&#xD;&#xA;In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.&#xD;&#xA;Combined interactions consist of operands and an implicit or explicit operator"/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//CombinedFragment/operand #//CombinedFragment/cfragmentGate"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" eType="#//InteractionOperator"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="operand" ordered="false"
lowerBound="1" upperBound="-1" eType="#//InteractionOperand" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="cfragmentGate" ordered="false"
upperBound="-1" eType="#//Gate" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" eType="#//Boolean"
defaultValueLiteral="True"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Component/realization"/>
</eOperations>
<eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="clientDependency"/>
<details key="eOpposite" value="client"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Component/realization"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
upperBound="-1" eType="#//Realization" volatile="true" containment="true"
eOpposite="#//Realization/abstraction">
<eAnnotations source="subsets" references="#//NamedElement/clientDependency">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
upperBound="-1" eType="#//PackageableElement" containment="true">
<eAnnotations source="redefines" references="#//Namespace/getOwnedMembers">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">
<eLiterals name="assembly"/>
<eLiterals name="delegation" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadExtentAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" lowerBound="1"
eType="#//Classifier"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReclassifyObjectAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReclassifyObjectAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="oldClassifier" ordered="false"
upperBound="-1" eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="newClassifier" ordered="false"
upperBound="-1" eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadIsClassifiedObjectAction" eSuperTypes="#//Action">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadIsClassifiedObjectAction/result"/>
</eOperations>
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadIsClassifiedObjectAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" eType="#//Boolean"
defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" lowerBound="1"
eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StartOwnedBehaviorAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//StartOwnedBehaviorAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QualifierValue" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" lowerBound="1"
eType="#//Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//InputPin"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkObjectEndAction/object"/>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkObjectEndAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="1" eType="#//Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndQualifierAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkObjectEndQualifierAction/object"/>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkObjectEndQualifierAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" lowerBound="1"
eType="#//InputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" lowerBound="1"
eType="#//Property"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CreateLinkObjectAction" eSuperTypes="#//CreateLinkAction">
<eOperations name="getEndData" ordered="false" lowerBound="2" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="endData"/>
<details key="eType" value="org.eclipse.uml2.LinkEndCreationData"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkAction/endData #//CreateLinkAction/getEndData">
<details key="org.eclipse.uml2.LinkAction#getEndData" value=""/>
<details key="org.eclipse.uml2.CreateLinkAction#getEndData" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//CreateLinkObjectAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" lowerBound="1"
eType="#//OutputPin" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AcceptEventAction" eSuperTypes="#//Action">
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//AcceptEventAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="trigger" upperBound="-1"
eType="#//Trigger" volatile="true">
<eAnnotations source="redefined">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
upperBound="-1" eType="#//OutputPin">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AcceptCallAction" eSuperTypes="#//AcceptEventAction">
<eOperations name="getTriggers" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="trigger"/>
<details key="eType" value="org.eclipse.uml2.CallTrigger"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//AcceptEventAction/trigger">
<details key="org.eclipse.uml2.AcceptEventAction#getTriggers" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//AcceptCallAction/returnInformation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" lowerBound="1"
eType="#//OutputPin">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getOutputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ReplyAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReplyAction/replyValue #//ReplyAction/returnInformation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" lowerBound="1"
eType="#//CallTrigger"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="replyValue" ordered="false"
upperBound="-1" eType="#//InputPin">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" lowerBound="1"
eType="#//InputPin">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RaiseExceptionAction" eSuperTypes="#//Action">
<eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//RaiseExceptionAction/exception"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="exception" lowerBound="1"
eType="#//InputPin">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode"/>
<eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">
<eLiterals name="create"/>
<eLiterals name="read" value="1"/>
<eLiterals name="update" value="2"/>
<eLiterals name="delete" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
<eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"
upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" upperBound="-1"
eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
<eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
<details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">
<eLiterals name="unordered"/>
<eLiterals name="ordered" value="1"/>
<eLiterals name="LIFO" value="2"/>
<eLiterals name="FIFO" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ParameterSet/condition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</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 TimeExpression defines a value specification that represent a time value. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstTime" eType="#//Boolean"
defaultValueLiteral="True"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="#//NamedElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Duration" eSuperTypes="#//ValueSpecification">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A duration defines a value specification that specifies the temporal distance between two time expressions that specify time instants. "/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstTime" eType="#//Boolean"
defaultValueLiteral="True"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
upperBound="2" eType="#//NamedElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeObservationAction" eSuperTypes="#//WriteStructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeObservationAction defines an action that observes the current point in time. "/>
</eAnnotations>
<eOperations name="getValue" lowerBound="1" eType="#//InputPin">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//TimeObservationAction/now"/>
</eOperations>
<eOperations name="setValue" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//TimeObservationAction/now"/>
<eParameters name="newValue" eType="#//InputPin"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="now" upperBound="-1" eType="#//TimeExpression"
containment="true">
<eAnnotations source="redefines" references="#//WriteStructuralFeatureAction/value">
<details key="org.eclipse.uml2.WriteStructuralFeatureAction#getValue" value=""/>
</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 DurationInterval defines the range between two Durations. "/>
</eAnnotations>
<eOperations name="getMins" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="min"/>
<details key="eType" value="org.eclipse.uml2.Duration"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/min">
<details key="org.eclipse.uml2.Interval#getMins" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getMaxes" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="max"/>
<details key="eType" value="org.eclipse.uml2.Duration"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/max">
<details key="org.eclipse.uml2.Interval#getMaxes" value=""/>
</eAnnotations>
</eOperations>
</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" upperBound="-1" eType="#//ValueSpecification"
volatile="true">
<eAnnotations source="redefined">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="max" upperBound="-1" eType="#//ValueSpecification"
volatile="true">
<eAnnotations source="redefined">
<details key="lowerBound" value="1"/>
<details key="upperBound" value="1"/>
</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 TimeConstraint defines a Constraint that refers to a TimeInterval. "/>
</eAnnotations>
<eOperations name="getSpecification" lowerBound="1" eType="#//ValueSpecification">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.TimeInterval"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification #//IntervalConstraint/getSpecification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
<details key="org.eclipse.uml2.IntervalConstraint#getSpecification" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setSpecification" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.TimeInterval"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification #//IntervalConstraint/setSpecification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
<details key="org.eclipse.uml2.IntervalConstraint#getSpecification" value=""/>
</eAnnotations>
<eParameters name="newSpecification" eType="#//ValueSpecification"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IntervalConstraint" eSuperTypes="#//Constraint">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A IntervalConstraint defines a Constraint that refers to an Interval. "/>
</eAnnotations>
<eOperations name="getSpecification" lowerBound="1" eType="#//ValueSpecification">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.Interval"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setSpecification" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.Interval"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
</eAnnotations>
<eParameters name="newSpecification" eType="#//ValueSpecification"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeInterval" eSuperTypes="#//Interval">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A TimeInterval defines the range between two TimeExpressions. "/>
</eAnnotations>
<eOperations name="getMaxes" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="max"/>
<details key="eType" value="org.eclipse.uml2.TimeExpression"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/max">
<details key="org.eclipse.uml2.Interval#getMaxes" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getMins" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="min"/>
<details key="eType" value="org.eclipse.uml2.TimeExpression"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/min">
<details key="org.eclipse.uml2.Interval#getMins" value=""/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DurationObservationAction" eSuperTypes="#//WriteStructuralFeatureAction">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DurationObservationAction defines an action that observes duration in time. "/>
</eAnnotations>
<eOperations name="getValue" lowerBound="1" eType="#//InputPin">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//DurationObservationAction/duration"/>
</eOperations>
<eOperations name="setValue" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//DurationObservationAction/duration"/>
<eParameters name="newValue" eType="#//InputPin"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="duration" upperBound="-1"
eType="#//Duration" containment="true">
<eAnnotations source="redefines" references="#//WriteStructuralFeatureAction/value">
<details key="org.eclipse.uml2.WriteStructuralFeatureAction#getValue" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DurationConstraint" eSuperTypes="#//IntervalConstraint">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DurationConstraint defines a Constraint that refers to a DurationInterval. "/>
</eAnnotations>
<eOperations name="getSpecification" lowerBound="1" eType="#//ValueSpecification">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.DurationInterval"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification #//IntervalConstraint/getSpecification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
<details key="org.eclipse.uml2.IntervalConstraint#getSpecification" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setSpecification" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.DurationInterval"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification #//IntervalConstraint/setSpecification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
<details key="org.eclipse.uml2.IntervalConstraint#getSpecification" value=""/>
</eAnnotations>
<eParameters name="newSpecification" eType="#//ValueSpecification"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">
<eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Deployment/deployedArtifact"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Deployment/deployedArtifact"/>
</eOperations>
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//Deployment/location"/>
</eOperations>
<eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="client"/>
<details key="eOpposite" value="clientDependency"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Deployment/location"/>
</eOperations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Deployment/configuration"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployedArtifact" ordered="false"
upperBound="-1" eType="#//DeployedArtifact" volatile="true">
<eAnnotations source="subsets" references="#//Dependency/supplier">
<details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="location" lowerBound="1"
eType="#//DeploymentTarget" volatile="true" transient="true" eOpposite="#//DeploymentTarget/deployment">
<eAnnotations source="subsets" references="#//Dependency/client">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Dependency#getClients" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"
upperBound="-1" eType="#//DeploymentSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeployedArtifact" abstract="true" eSuperTypes="#//NamedElement"/>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentTarget" abstract="true" eSuperTypes="#//NamedElement">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//DeploymentTarget/deployment"/>
</eOperations>
<eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="clientDependency"/>
<details key="eOpposite" value="client"/>
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//DeploymentTarget/deployment"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"
upperBound="-1" eType="#//Deployment" volatile="true" containment="true" eOpposite="#//Deployment/location">
<eAnnotations source="subsets" references="#//NamedElement/clientDependency">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
<details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="deployedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
transient="true" derived="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">
<eOperations name="getNestedClassifiers" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="nestedClassifier"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Node/nestedNode"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"
upperBound="-1" eType="#//Node" containment="true">
<eAnnotations source="redefines" references="#//Class/nestedClassifier">
<details key="org.eclipse.uml2.Class#getNestedClassifiers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node"/>
<eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node"/>
<eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association"/>
<eClassifiers xsi:type="ecore:EClass" name="ProtocolConformance" eSuperTypes="#//DirectedRelationship">
<eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>
</eOperations>
<eOperations name="getOwner" eType="#//Element">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="owner"/>
<details key="eOpposite" value="ownedElement"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>
</eOperations>
<eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="containment" value="false"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolConformance/generalMachine"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" lowerBound="1"
eType="#//ProtocolStateMachine" transient="true" eOpposite="#//ProtocolStateMachine/conformance">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>
<details key="org.eclipse.uml2.Element#getOwner" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalMachine" lowerBound="1"
eType="#//ProtocolStateMachine">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProtocolStateMachine" eSuperTypes="#//StateMachine">
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolStateMachine/conformance"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"
upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
</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 (transition as specialized in the ProtocolStateMachines package) 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. The protocol transition specifies that the associated (referred) operation can be called for an instance in the origin state under the initial condition (guard), and that at the end of the transition, the destination state will be reached under the final condition (post). "/>
</eAnnotations>
<eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="ownedElement"/>
<details key="eOpposite" value="owner"/>
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolTransition/postCondition"/>
</eOperations>
<eOperations name="setGuard">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="guard"/>
<details key="eType" value="org.eclipse.uml2.Constraint"/>
<details key="containment" value="true"/>
</eAnnotations>
<eAnnotations source="superset" references="#//ProtocolTransition/preCondition"/>
<eParameters name="newGuard" eType="#//Constraint"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" eType="#//Constraint"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="referred" ordered="false"
upperBound="-1" eType="#//Operation" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="preCondition" eType="#//Constraint"
volatile="true" resolveProxies="false">
<eAnnotations source="subsets" references="#//Transition/guard">
<details key="org.eclipse.uml2.Transition#getGuard" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="executionLocation" eType="#//String"
defaultValueLiteral=""/>
</eClassifiers>
</ecore:EPackage>