blob: 6e1e045cff7adc6210f30d7066b279d008ff795c [file] [log] [blame]
<?xml version="1.0" encoding="ASCII"?>
<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">
<eOperations name="validateNotOwnSelf" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateHasOwner" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="allOwnedElements" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allOwnedElements&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ElementOperations.allOwnedElements(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false"
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">
<eOperations name="lowerBound" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateLowerGe0" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateUpperGeLower" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateLowerEqLowerbound" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateUpperEqUpperbound" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="lower" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//MultiplicityElement/upperValue #//MultiplicityElement/lowerValue"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false"
eType="#//Boolean" volatile="true" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false"
eType="#//Boolean" volatile="true" defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
eType="#//Integer" changeable="false" volatile="true" transient="true" defaultValueLiteral="1"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
eType="#//UnlimitedNatural" changeable="false" volatile="true" transient="true"
defaultValueLiteral="1" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="upperValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="lowerValue" ordered="false"
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">
<eOperations name="validateNoName" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateQualifiedName" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="allNamespaces" unique="false" upperBound="-1" eType="#//Sequence">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allNamespaces&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (List) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="getNamespace" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//NamedElement/nameExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
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" ordered="false"
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">
<eOperations name="validateMembersAreDistinguishable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;importedMember&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="Comment" 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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Comment/bodyExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
upperBound="-1" eType="#//Element"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" ordered="false"
eType="#//StringExpression" containment="true">
<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">
<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="containment" value="false"/>
<details key="name" value="relatedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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">
<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">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
eType="#//String" defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
eType="#//Parameter" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValueSpecification" abstract="true"
eSuperTypes="#//TypedElement #//ParameterableElement">
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Expression/operand"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false"
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="Class" eSuperTypes="#//EncapsulatedClassifier #//BehavioredClassifier">
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false" eType="#//Boolean">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="isAbstract"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
<details key="defaultValueLiteral" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Classifier/isAbstract">
<details key="org.eclipse.uml2.Classifier#isAbstract" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setIsAbstract" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="isAbstract"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
<details key="defaultValueLiteral" value="false"/>
</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="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedAttribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
<details key="eOpposite" value="class_"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<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="containment" value="false"/>
<details key="name" value="general"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</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="containment" value="false"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="extension" ordered="false"
upperBound="-1" eType="#//Extension" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Extension/metaclass"/>
<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:EAttribute" name="isActive" ordered="false"
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">
<eOperations name="conformsTo" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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" ordered="false"
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">
<eOperations name="validateOppositeIsOtherEnd" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="opposite" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateSubsettingContext" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateNavigablePropertyRedefinition" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateSubsettingRules" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateNavigableReadonly" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateDerivedUnionIsDerived" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="isConsistentWith" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;subsettingContext&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.PropertyOperations.subsettingContext(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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" ordered="false" eType="#//Boolean">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="isReadOnly"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
<details key="defaultValueLiteral" value="false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//StructuralFeature/isReadOnly">
<details key="org.eclipse.uml2.StructuralFeature#isReadOnly" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setIsReadOnly" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="name" value="isReadOnly"/>
<details key="eType" value="org.eclipse.uml2.Boolean"/>
<details key="defaultValueLiteral" value="false"/>
</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" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="featuringClassifier"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="eOpposite" value="feature"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/defaultValue #//Property/qualifier"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Property/associationEnd"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="default" ordered="false"
eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
eType="#//Boolean" changeable="false" volatile="true" transient="true" defaultValueLiteral="false"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="class_" ordered="false"
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" ordered="false"
eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerivedUnion" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningAssociation" ordered="false"
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" ordered="false"
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" ordered="false"
eType="#//Association" volatile="true" eOpposite="#//Association/memberEnd">
<eAnnotations source="superset" references="#//Property/owningAssociation"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="aggregation" ordered="false"
eType="#//AggregationKind" defaultValueLiteral="none"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
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" ordered="false"
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">
<eOperations name="validateTypeOfResult" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="isOrdered" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="isConsistentWith" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="containment" value="false"/>
<details key="name" value="raisedException"/>
<details key="eType" value="org.eclipse.uml2.Type"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//BehavioralFeature/raisedException">
<details key="org.eclipse.uml2.BehavioralFeature#getRaisedExceptions" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setIsOrdered" ordered="false">
<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" ordered="false">
<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" ordered="false" 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" ordered="false" 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="containment" value="true"/>
<details key="name" value="formalParameter"/>
<details key="eType" value="org.eclipse.uml2.Parameter"/>
</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" ordered="false" eType="#//Type">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Type"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type">
<details key="org.eclipse.uml2.TypedElement#getType" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setType" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Type"/>
</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="containment" value="false"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</eAnnotations>
<eAnnotations source="union" references="#//Operation/class_ #//Operation/datatype"/>
</eOperations>
<eOperations name="getNamespace" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="featuringClassifier"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
<details key="eOpposite" value="feature"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" 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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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_" ordered="false"
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" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="datatype" ordered="false"
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" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="postcondition" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" 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" ordered="false"
eType="#//Constraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type"
volatile="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ConnectableElement #//TypedElement #//MultiplicityElement">
<eOperations name="getNamespace" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Parameter/defaultValue"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
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" ordered="false"
eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" ordered="false"
eType="#//ParameterDirectionKind" defaultValueLiteral="in"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isException" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isStream" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" ordered="false"
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">
<eOperations name="validateElementsPublicOrPrivate" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="mustBeOwned" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;visibleMembers&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.PackageOperations.visibleMembers(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="packageImport"/>
<details key="eType" value="org.eclipse.uml2.PackageImport"/>
<details key="eOpposite" value="importingNamespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<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" ordered="false"
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="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>
<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>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//DataType">
<eOperations name="getOwnedMembers" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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">
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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">
<eOperations name="getNamespace" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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" ordered="false"
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"/>
<eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
<eOperations name="validateNotApplyToSelf" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Constraint/specification"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="union" references="#//Constraint/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"
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" ordered="false"
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:EEnum" name="VisibilityKind">
<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="LiteralBoolean" eSuperTypes="#//LiteralSpecification">
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false"
eType="#//Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralSpecification" abstract="true"
eSuperTypes="#//ValueSpecification"/>
<eClassifiers xsi:type="ecore:EClass" name="LiteralString" eSuperTypes="#//LiteralSpecification">
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false"
eType="#//String" defaultValueLiteral=""/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralNull" eSuperTypes="#//LiteralSpecification">
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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">
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false"
eType="#//Integer"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralUnlimitedNatural" eSuperTypes="#//LiteralSpecification">
<eOperations name="isComputable" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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" ordered="false"
eType="#//UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//Type #//RedefinableElement">
<eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allFeatures&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.allFeatures(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateSpecializeType" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateInheritedMember" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="inheritedMember" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;inheritedMember&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.inheritedMember(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;parents&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.parents(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allParents&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.allParents(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;general&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.ClassifierOperations.general(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="conformsTo" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="containment" value="false"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="clientDependency"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite" value="client"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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="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="powertypeExtent" ordered="false"
upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype"/>
<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="representation" ordered="false"
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">
<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" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BehavioralFeature" abstract="true" eSuperTypes="#//Namespace #//Feature">
<eOperations name="isDistinguishableFrom" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="containment" value="false"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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" ordered="false"
eType="#//CallConcurrencyKind"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StructuralFeature" abstract="true" eSuperTypes="#//Feature #//TypedElement #//MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
eType="#//Boolean" volatile="true" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Generalization" 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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Generalization/specific"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Generalization/general"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="specific" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Classifier">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" ordered="false"
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="RedefinableElement" abstract="true"
eSuperTypes="#//NamedElement">
<eOperations name="validateRedefinitionContextValid" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateRedefinitionConsistent" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="isConsistentWith" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="// TODO: test this OCL operation&#xD;&#xA;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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//PackageableElement #//DeploymentTarget #//DeployedArtifact">
<eOperations name="validateSlotsAreDefined" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateNoDuplicateSlots" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Slot/value"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningInstance" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//StructuralFeature"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InstanceValue" eSuperTypes="#//ValueSpecification">
<eStructuralFeatures xsi:type="ecore:EReference" name="instance" ordered="false"
lowerBound="1" eType="#//InstanceSpecification"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
eSuperTypes="#//NamedElement #//ParameterableElement">
<eOperations name="getVisibility" ordered="false" 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" ordered="false">
<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"
ordered="false" 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">
<eOperations name="validateVisibilityPublicOrPrivate" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="validateImportedElementIsPublic" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</eOperations>
<eOperations name="getName" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//ElementImport/importingNamespace"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ElementImport/importingNamespace"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
eType="#//VisibilityKind"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" ordered="false"
eType="#//String" defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
lowerBound="1" eType="#//PackageableElement">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
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">
<eOperations name="validatePublicOrPrivate" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;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"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageImport/importingNamespace"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageImport/importingNamespace"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
eType="#//VisibilityKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" ordered="false"
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" ordered="false"
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">
<eOperations name="getFeatures" 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="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="relatedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</eAnnotations>
<eAnnotations source="union" references="#//Association/memberEnd"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
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">
<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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageMerge/mergingPackage"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//PackageMerge/mergedPackage"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="mergingPackage" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Package">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
</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="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="elementImport"/>
<details key="eType" value="org.eclipse.uml2.ElementImport"/>
<details key="eOpposite" value="importingNamespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="packageImport"/>
<details key="eType" value="org.eclipse.uml2.PackageImport"/>
<details key="eOpposite" value="importingNamespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<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" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="importedPackage"/>
<details key="eType" value="org.eclipse.uml2.Package"/>
</eAnnotations>
<eAnnotations source="superset" references="#//ProfileApplication/importedProfile"/>
<eParameters name="newImportedPackage" eType="#//Package"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedProfile" ordered="false"
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" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="ownedEnd"/>
<details key="eType" value="org.eclipse.uml2.ExtensionEnd"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Association/ownedEnd">
<details key="org.eclipse.uml2.Association#getOwnedEnds" value=""/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRequired" ordered="false"
eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="metaclass" ordered="false"
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" ordered="false" lowerBound="1" eType="#//Type">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Stereotype"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TypedElement/type">
<details key="org.eclipse.uml2.TypedElement#getType" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setType" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="type"/>
<details key="eType" value="org.eclipse.uml2.Stereotype"/>
</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:EEnum" name="ParameterDirectionKind">
<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">
<eLiterals name="none"/>
<eLiterals name="shared" value="1"/>
<eLiterals name="composite" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Permission" eSuperTypes="#//Dependency"/>
<eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">
<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"/>
<eClassifiers xsi:type="ecore:EClass" name="Abstraction" eSuperTypes="#//Dependency">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Abstraction/mapping"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false"
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">
<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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Realization/abstraction"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="client"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="clientDependency"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Realization/realizingClassifier"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" ordered="false"
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" ordered="false"
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">
<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="containment" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="client"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="clientDependency"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Substitution/substitutingClassifier"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
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"
ordered="false" 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="Behavior" abstract="true" eSuperTypes="#//Class">
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedRule"/>
<details key="eType" value="org.eclipse.uml2.Constraint"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="true"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Behavior/precondition #//Behavior/postcondition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" ordered="false"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
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" ordered="false"
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>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BehavioredClassifier" abstract="true"
eSuperTypes="#//Classifier">
<eOperations name="getOwnedMembers" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//BehavioredClassifier/ownedBehavior"/>
</eOperations>
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="clientDependency"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite" value="client"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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="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">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
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" ordered="false"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association"/>
<eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"
eType="#//String" defaultValueLiteral=""/>
</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="#//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="GeneralizationSet" eSuperTypes="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"
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="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" eType="#//ConnectableElement"
eOpposite="#//ConnectableElement/end"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"
eType="#//Property"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
eSuperTypes="#//NamedElement #//ParameterableElement">
<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">
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Connector/end"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" 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" ordered="false" 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">
<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="containment" value="false"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="member"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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">
<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="containment" value="false"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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" ordered="false"
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">
<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="containment" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="client"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="clientDependency"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Implementation/implementingClassifier"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
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"
ordered="false" 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="Actor" eSuperTypes="#//Classifier"/>
<eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">
<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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Extend/condition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" ordered="false"
lowerBound="1" eType="#//UseCase">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"
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" ordered="false"
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">
<eOperations name="getOwnedMembers" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExtensionPoint" eSuperTypes="#//RedefinableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Include/addition"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="includingCase" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//UseCase">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.DirectedRelationship#getTargets" 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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="clientDependency"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite" value="client"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
</eAnnotations>
<eAnnotations source="union" references="#//Artifact/ownedAttribute"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"
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="containment" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//Manifestation/utilizedElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" ordered="false"
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="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityEdge/guard #//ActivityEdge/weight"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
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" ordered="false"
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" ordered="false"
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" ordered="false"
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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="subgroup"/>
<details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
<details key="eOpposite" value="superGroup"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="containedEdge"/>
<details key="eType" value="org.eclipse.uml2.ActivityEdge"/>
<details key="eOpposite" value="inGroup"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="containedNode"/>
<details key="eType" value="org.eclipse.uml2.ActivityNode"/>
<details key="eOpposite" value="inGroup"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
</eOperations>
<eOperations name="getActivity" ordered="false" eType="#//Activity">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="activity"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite" value="node"/>
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
</eOperations>
<eOperations name="setActivity" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="activity"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite" value="node"/>
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityGroup/getSubgroups"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ActivityGroup/superGroup #//ActivityGroup/activityGroup_activity"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" ordered="false"
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"
ordered="false" 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" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ObjectNode/upperBound"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" ordered="false"
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" ordered="false"
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" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="transformation" ordered="false"
eType="#//Behavior"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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"/>
<eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
lowerBound="1" eType="#//Parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
lowerBound="1" eType="#//ValueSpecification" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollaborationOccurrence" 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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//CollaborationOccurrence/roleBinding"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" 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">
<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="containment" value="false"/>
<details key="name" value="role"/>
<details key="eType" value="org.eclipse.uml2.ConnectableElement"/>
</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="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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionFragment/generalOrdering"/>
</eOperations>
<eOperations name="getNamespace" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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" ordered="false"
eType="#//Interaction" transient="true" eOpposite="#//Interaction/fragment"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" ordered="false"
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" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
lowerBound="1" eType="#//ConnectableElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
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" ordered="false"
eType="#//OpaqueExpression" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" ordered="false"
eType="#//PartDecomposition"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
<eOperations name="getNamespace" ordered="false" eType="#//Namespace">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="namespace"/>
<details key="eType" value="org.eclipse.uml2.Namespace"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Message/argument"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" ordered="false"
eType="#//MessageKind" changeable="false" volatile="true" transient="true"
derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" ordered="false"
eType="#//MessageSort"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" ordered="false"
eType="#//MessageEnd" eOpposite="#//MessageEnd/receiveMessage"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" ordered="false"
eType="#//MessageEnd" eOpposite="#//MessageEnd/sendMessage"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
eType="#//Connector"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
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" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/toAfter"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="after" ordered="false"
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" ordered="false"
eType="#//Message" eOpposite="#//Message/receiveEvent"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="sendMessage" ordered="false"
eType="#//Message" eOpposite="#//Message/sendEvent"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EventOccurrence" eSuperTypes="#//InteractionFragment #//MessageEnd">
<eOperations name="getCovereds" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="covered"/>
<details key="eType" value="org.eclipse.uml2.Lifeline"/>
</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" ordered="false"
lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/startExec"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="finish" ordered="false"
lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/finishExec"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
upperBound="-1" eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
<eOperations name="getCovereds" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="covered"/>
<details key="eType" value="org.eclipse.uml2.Lifeline"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StateInvariant/invariant"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="invariant" ordered="false"
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="Port" eSuperTypes="#//Property">
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</eAnnotations>
<eAnnotations source="union" references="#//Port/redefinedPort"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"
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" ordered="false"
eType="#//ProtocolStateMachine"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"
eSuperTypes="#//StructuredClassifier">
<eOperations name="getFeatures" 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="eOpposite.upperBound" value="-1"/>
<details key="name" value="feature"/>
<details key="eType" value="org.eclipse.uml2.Feature"/>
<details key="eOpposite" value="featuringClassifier"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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:EEnum" name="CallConcurrencyKind">
<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" ordered="false"
lowerBound="1" eType="#//Operation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageTrigger" abstract="true" eSuperTypes="#//Trigger"/>
<eClassifiers xsi:type="ecore:EClass" name="ChangeTrigger" eSuperTypes="#//Trigger">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ChangeTrigger/changeExpression"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"
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="#//PackageableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
eType="#//Port"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
eType="#//Signal"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//BehavioredClassifier">
<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="containment" value="false"/>
<details key="name" value="attribute"/>
<details key="eType" value="org.eclipse.uml2.Property"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
upperBound="-1" eType="#//Signal"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TimeTrigger" eSuperTypes="#//Trigger">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TimeTrigger/when"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" 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"/>
<eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//TypedElement">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Variable/scope"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"
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" ordered="false" eType="#//Activity">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="activity"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite" value="structuredNode"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="activity"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite" value="structuredNode"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false" eType="#//Activity">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="activityGroup_activity"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite" value="group"/>
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//StructuredActivityNode/getActivity"/>
</eOperations>
<eOperations name="setActivityGroup_activity" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="activityGroup_activity"/>
<details key="eType" value="org.eclipse.uml2.Activity"/>
<details key="eOpposite" value="group"/>
<details key="eOpposite.containment" value="true"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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" ordered="false"
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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ConditionalNode/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
eType="#//Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//LoopNode/loopVariableInput"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
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" ordered="false"
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">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateSignature/ownedParameter"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
eType="#//TemplateSignature" eOpposite="#//TemplateSignature/nestedSignature"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="template" ordered="false"
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">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateParameter/ownedParameteredElement #//TemplateParameter/ownedDefault"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//ParameterableElement" volatile="true" eOpposite="#//ParameterableElement/templateParameter">
<eAnnotations source="superset" references="#//TemplateParameter/ownedParameteredElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameteredElement"
ordered="false" 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" ordered="false"
eType="#//ParameterableElement" volatile="true">
<eAnnotations source="superset" references="#//TemplateParameter/ownedDefault"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedDefault" ordered="false"
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">
<eOperations name="parameterableElements" ordered="false" upperBound="-1" eType="#//Set">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;parameterableElements&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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"
ordered="false" 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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//StringExpression/subExpression"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ParameterableElement/owningParameter"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" volatile="true" eOpposite="#//TemplateParameter/parameteredElement">
<eAnnotations source="superset" references="#//ParameterableElement/owningParameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningParameter" ordered="false"
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">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateBinding/parameterSubstitution"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="boundElement" ordered="false"
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" ordered="false"
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">
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//TemplateParameterSubstitution/ownedActual"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
lowerBound="1" eType="#//TemplateParameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
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"/>
<eClassifiers xsi:type="ecore:EClass" name="ClassifierTemplateParameter" eSuperTypes="#//TemplateParameter">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"
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"/>
<eClassifiers xsi:type="ecore:EClass" name="TemplateableClassifier" abstract="true"
eSuperTypes="#//Classifier"/>
<eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"
eSuperTypes="#//TemplateParameter"/>
<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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="containment" value="false"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedMember"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="namespace"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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">
<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" ordered="false"
eType="#//StateMachine">
<eAnnotations source="redefines">
<details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine_redefinitionContext"
ordered="false" 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="#//RedefinableElement">
<eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Region/subvertex #//Region/transition"/>
</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="extendedRegion" ordered="false"
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" ordered="false" eType="#//PseudostateKind"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//RedefinableElement #//Vertex">
<eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//State/connection #//State/entry #//State/exit #//State/doActivity #//State/stateInvariant"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"
eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" ordered="false"
eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" ordered="false"
eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" ordered="false"
eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="submachine" ordered="false"
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" ordered="false"
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"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
eType="#//Activity" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" eType="#//Activity"
containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" ordered="false"
eType="#//Activity" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" ordered="false"
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" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Vertex/container"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
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">
<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" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="redefinitionContext"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</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="containment" value="false"/>
<details key="name" value="redefinedElement"/>
<details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//Transition/redefinedTransition"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//Transition/guard #//Transition/effect"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//TransitionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoing"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/incoming"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" ordered="false"
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" ordered="false"
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" ordered="false"
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="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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//JoinNode/joinSpec"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
eType="#//Boolean" defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"
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" ordered="false" eType="#//ActivityGroup">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="containment" value="false"/>
<details key="name" value="superGroup"/>
<details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
<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" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
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" ordered="false"
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" ordered="false"
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" ordered="false"
eType="#//Element"/>
</eClassifiers>
<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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//CreateObjectAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
lowerBound="1" eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//DestroyObjectAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//TestIdentityAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="first" ordered="false"
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" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadSelfAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//StructuralFeatureAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" ordered="false"
lowerBound="1" eType="#//StructuralFeature"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadStructuralFeatureAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//WriteStructuralFeatureAction/value"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//AddStructuralFeatureValueAction/insertAt"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
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" ordered="false"
eType="#//InputPin"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" 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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="qualifier"/>
<details key="eType" value="org.eclipse.uml2.QualifierValue"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//LinkEndData/qualifier">
<details key="org.eclipse.uml2.LinkEndData#getQualifiers" value=""/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
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="containment" value="true"/>
<details key="name" value="endData"/>
<details key="eType" value="org.eclipse.uml2.LinkEndCreationData"/>
</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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ClearAssociationAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Association"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableAction" abstract="true" eSuperTypes="#//Action">
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadVariableAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//WriteVariableAction/value"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//AddVariableValueAction/insertAt"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="insertAt" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ApplyFunctionAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="function" ordered="false"
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="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//CallAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</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" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//SendSignalAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Signal"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BroadcastSignalAction" eSuperTypes="#//InvocationAction">
<eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
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="containment" value="true"/>
<details key="name" value="argument"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//SendObjectAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//CallOperationAction/target"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
lowerBound="1" eType="#//Operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Behavior"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InteractionOccurrence" eSuperTypes="#//InteractionFragment">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)"/>
</eAnnotations>
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionOccurrence/actualGate"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionOperand/guard"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
eType="#//InteractionConstraint" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="fragment" 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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//InteractionConstraint/minint #//InteractionConstraint/maxint"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
eType="#//ValueSpecification" containment="true">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="maxint" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//CombinedFragment/operand #//CombinedFragment/cfragmentGate"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
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" ordered="false"
eType="#//Boolean" defaultValueLiteral="True"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">
<eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"
eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/outputElement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" ordered="false"
eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/inputElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" 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" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ExceptionHandler/protectedNode"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//ExecutableNode"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" ordered="false"
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="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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>
</eOperations>
<eOperations name="getOwner" ordered="false" eType="#//Element">
<eAnnotations source="feature">
<details key="derived" value="true"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="owner"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="ownedElement"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolConformance/generalMachine"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" ordered="false"
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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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">
<eOperations name="getOwnedElements" 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="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="0"/>
</eAnnotations>
<eAnnotations source="union" references="#//ProtocolTransition/postCondition"/>
</eOperations>
<eOperations name="setGuard" ordered="false">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="guard"/>
<details key="eType" value="org.eclipse.uml2.Constraint"/>
</eAnnotations>
<eAnnotations source="superset" references="#//ProtocolTransition/preCondition"/>
<eParameters name="newGuard" eType="#//Constraint"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"
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" ordered="false"
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="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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="clientDependency"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite" value="client"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<details key="eOpposite.lowerBound" value="1"/>
</eAnnotations>
<eAnnotations source="superset" references="#//Component/realization"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
ordered="false" 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="TimeExpression" eSuperTypes="#//ValueSpecification">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstTime" ordered="false"
eType="#//Boolean" defaultValueLiteral="True"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
eType="#//NamedElement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Duration" eSuperTypes="#//ValueSpecification">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstTime" ordered="false"
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">
<eOperations name="getValue" ordered="false" lowerBound="1" eType="#//InputPin">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//TimeObservationAction/now"/>
</eOperations>
<eOperations name="setValue" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//TimeObservationAction/now"/>
<eParameters name="newValue" eType="#//InputPin"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="now" ordered="false" 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">
<eOperations name="getMins" 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="containment" value="false"/>
<details key="name" value="min"/>
<details key="eType" value="org.eclipse.uml2.Duration"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/min">
<details key="org.eclipse.uml2.Interval#getMins" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getMaxes" 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="containment" value="false"/>
<details key="name" value="max"/>
<details key="eType" value="org.eclipse.uml2.Duration"/>
</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">
<eStructuralFeatures xsi:type="ecore:EReference" name="min" ordered="false" 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" ordered="false" 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">
<eOperations name="getSpecification" ordered="false" lowerBound="1" eType="#//ValueSpecification">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.TimeInterval"/>
</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" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.TimeInterval"/>
</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">
<eOperations name="getSpecification" ordered="false" lowerBound="1" eType="#//ValueSpecification">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.Interval"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Constraint/specification">
<details key="org.eclipse.uml2.Constraint#getSpecification" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="setSpecification" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.Interval"/>
</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">
<eOperations name="getMaxes" 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="containment" value="false"/>
<details key="name" value="max"/>
<details key="eType" value="org.eclipse.uml2.TimeExpression"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Interval/max">
<details key="org.eclipse.uml2.Interval#getMaxes" value=""/>
</eAnnotations>
</eOperations>
<eOperations name="getMins" 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="containment" value="false"/>
<details key="name" value="min"/>
<details key="eType" value="org.eclipse.uml2.TimeExpression"/>
</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">
<eOperations name="getValue" ordered="false" lowerBound="1" eType="#//InputPin">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//DurationObservationAction/duration"/>
</eOperations>
<eOperations name="setValue" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="true"/>
<details key="name" value="value"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="redefined" references="#//DurationObservationAction/duration"/>
<eParameters name="newValue" eType="#//InputPin"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="duration" ordered="false"
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">
<eOperations name="getSpecification" ordered="false" lowerBound="1" eType="#//ValueSpecification">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.DurationInterval"/>
</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" ordered="false" lowerBound="1">
<eAnnotations source="feature">
<details key="derived" value="false"/>
<details key="containment" value="false"/>
<details key="name" value="specification"/>
<details key="eType" value="org.eclipse.uml2.DurationInterval"/>
</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="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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadExtentAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReclassifyObjectAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadIsClassifiedObjectAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" ordered="false"
eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
lowerBound="1" eType="#//Classifier"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//StartOwnedBehaviorAction/object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
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" ordered="false"
lowerBound="1" eType="#//Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkObjectEndAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
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" ordered="false" lowerBound="1"
eType="#//Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReadLinkObjectEndQualifierAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
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" ordered="false"
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" ordered="false"
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="containment" value="true"/>
<details key="name" value="endData"/>
<details key="eType" value="org.eclipse.uml2.LinkEndCreationData"/>
</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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//CreateLinkObjectAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//AcceptEventAction/result"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"
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" 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="containment" value="false"/>
<details key="name" value="trigger"/>
<details key="eType" value="org.eclipse.uml2.CallTrigger"/>
</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="containment" value="false"/>
<details key="name" value="output"/>
<details key="eType" value="org.eclipse.uml2.OutputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//AcceptCallAction/returnInformation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//ReplyAction/replyValue #//ReplyAction/returnInformation"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" ordered="false"
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" ordered="false"
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="containment" value="false"/>
<details key="name" value="input"/>
<details key="eType" value="org.eclipse.uml2.InputPin"/>
</eAnnotations>
<eAnnotations source="union" references="#//RaiseExceptionAction/exception"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="exception" ordered="false"
lowerBound="1" eType="#//InputPin">
<eAnnotations source="subsets">
<details key="org.eclipse.uml2.Action#getInputs" value=""/>
</eAnnotations>
</eStructuralFeatures>
</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="containment" value="false"/>
<details key="name" value="supplier"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
</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="containment" value="false"/>
<details key="name" value="target"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="containment" value="false"/>
<details key="name" value="source"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
</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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="client"/>
<details key="eType" value="org.eclipse.uml2.NamedElement"/>
<details key="eOpposite" value="clientDependency"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="derived" value="false"/>
<details key="eOpposite.upperBound" value="-1"/>
<details key="name" value="clientDependency"/>
<details key="eType" value="org.eclipse.uml2.Dependency"/>
<details key="eOpposite" value="client"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="containment" value="true"/>
<details key="name" value="nestedClassifier"/>
<details key="eType" value="org.eclipse.uml2.Classifier"/>
</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="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" ordered="false"
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="derived" value="true"/>
<details key="eOpposite.upperBound" value="1"/>
<details key="name" value="ownedElement"/>
<details key="eType" value="org.eclipse.uml2.Element"/>
<details key="eOpposite" value="owner"/>
<details key="eOpposite.containment" value="false"/>
<details key="containment" value="false"/>
<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="DeploymentSpecification" eSuperTypes="#//Artifact">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
eType="#//String" defaultValueLiteral=""/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="executionLocation" ordered="false"
eType="#//String" defaultValueLiteral=""/>
</eClassifiers>
</ecore:EPackage>