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="#//Featu