blob: 80bbc7baa1167a611c711ba072821899a759288c [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="uml"
nsURI="http://www.eclipse.org/uml2/3.0.0/UML" nsPrefix="uml">
<eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An integer is a primitive type representing integer values."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Boolean type is used for logical expression, consisting of the predefined values true and false."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="int">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An unlimited natural is a primitive type representing unlimited natural values."/>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A comment is a textual annotation that can be attached to a set of elements."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
unsettable="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies a string that is the comment."/>
</eAnnotations>
<eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
<details key="kind" value="element"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
upperBound="-1" eType="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Element(s) being commented."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An element is a constituent of a model. As such, it has the capability of owning other elements."/>
</eAnnotations>
<eOperations name="not_own_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An element may not directly or indirectly own itself.&#xD;&#xA;not self.allOwnedElements()->includes(self)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="has_owner" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Elements that must be owned must have an owner.&#xD;&#xA;self.mustBeOwned() implies owner->notEmpty()"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="destroy" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Destroys this element by removing all cross references to/from it and removing it from its containing resource or object."/>
</eAnnotations>
</eOperations>
<eOperations name="hasKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether this element has the specified keyword."/>
</eAnnotations>
<eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The keyword in question."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getKeywords" ordered="false" upperBound="-1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the keywords for this element."/>
</eAnnotations>
</eOperations>
<eOperations name="addKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Adds the specified keyword to this element."/>
</eAnnotations>
<eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The keyword to add."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="removeKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Removes the specified keyword from this element."/>
</eAnnotations>
<eParameters name="keyword" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The keyword to remove."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getNearestPackage" ordered="false" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package)."/>
</eAnnotations>
</eOperations>
<eOperations name="getModel" ordered="false" eType="#//Model">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the model that owns (either directly or indirectly) this element."/>
</eAnnotations>
</eOperations>
<eOperations name="isStereotypeApplicable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether the specified stereotype is applicable to this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype in question."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="isStereotypeRequired" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether the specified stereotype is required for this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype in question."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="isStereotypeApplied" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether the specified stereotype is applied to this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype in question."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="applyStereotype" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Applies the specified stereotype to this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype to apply."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="unapplyStereotype" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Unapplies the specified stereotype from this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype to unapply."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getApplicableStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied."/>
</eAnnotations>
</eOperations>
<eOperations name="getApplicableStereotype" ordered="false" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable."/>
</eAnnotations>
<eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualified name of the applicable stereotype to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getStereotypeApplications" ordered="false" upperBound="-1"
eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotype applications for this element."/>
</eAnnotations>
</eOperations>
<eOperations name="getStereotypeApplication" ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype for which to retrieve an application."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getRequiredStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotypes that are required for this element."/>
</eAnnotations>
</eOperations>
<eOperations name="getRequiredStereotype" ordered="false" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required."/>
</eAnnotations>
<eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualified name of the required stereotype to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAppliedStereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotypes that are applied to this element."/>
</eAnnotations>
</eOperations>
<eOperations name="getAppliedStereotype" ordered="false" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied."/>
</eAnnotations>
<eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualified name of the applied stereotype to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAppliedSubstereotypes" ordered="false" upperBound="-1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the substereotypes of the specified stereotype that are applied to this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The superstereotype of the applied substereotypes to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAppliedSubstereotype" ordered="false" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The superstereotype of the applied substereotype to retrieve."/>
</eAnnotations>
</eParameters>
<eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualified name of the applied substereotype to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="hasValue" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype for which to test the property."/>
</eAnnotations>
</eParameters>
<eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the property in question."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getValue" ordered="false" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the value of the property with the specified name in the specified stereotype for this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype for which to retrieve the value."/>
</eAnnotations>
</eParameters>
<eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the property whose value to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="setValue" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Sets the value of the property with the specified name in the specified stereotype for this element."/>
</eAnnotations>
<eParameters name="stereotype" ordered="false" lowerBound="1" eType="#//Stereotype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The stereotype for which to set the value."/>
</eAnnotations>
</eParameters>
<eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the property whose value to set."/>
</eAnnotations>
</eParameters>
<eParameters name="newValue" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The new value for the property."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="createEAnnotation" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EAnnotation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates an annotation with the specified source and this element as its model element."/>
</eAnnotations>
<eParameters name="source" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The source for the new annotation."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getRelationships" ordered="false" upperBound="-1" eType="#//Relationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the relationships in which this element is involved."/>
</eAnnotations>
</eOperations>
<eOperations name="getRelationships" ordered="false" upperBound="-1" eType="#//Relationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the relationships of the specified type in which this element is involved."/>
</eAnnotations>
<eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The (meta)type of the relationships to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getSourceDirectedRelationships" ordered="false" upperBound="-1"
eType="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the directed relationships for which this element is a source."/>
</eAnnotations>
</eOperations>
<eOperations name="getSourceDirectedRelationships" ordered="false" upperBound="-1"
eType="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the directed relationships of the specified type for which this element is a source."/>
</eAnnotations>
<eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The (meta)type of the directed relationships to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getTargetDirectedRelationships" ordered="false" upperBound="-1"
eType="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the directed relationships for which this element is a target."/>
</eAnnotations>
</eOperations>
<eOperations name="getTargetDirectedRelationships" ordered="false" upperBound="-1"
eType="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the directed relationships of the specified type for which this element is a target."/>
</eAnnotations>
<eParameters name="eClass" ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The (meta)type of the directed relationships to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="allOwnedElements" ordered="false" upperBound="-1" eType="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allOwnedElements() gives all of the direct and indirect owned elements of an element.&#xD;&#xA;result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))"/>
</eAnnotations>
</eOperations>
<eOperations name="mustBeOwned" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.&#xD;&#xA;result = true"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedElement" ordered="false"
upperBound="-1" eType="#//Element" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Element/owner">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Elements owned by this element."/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
eType="#//Element" changeable="false" volatile="true" transient="true" derived="true"
eOpposite="#//Element/ownedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Element that owns this element."/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedComment" ordered="false"
upperBound="-1" eType="#//Comment" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Comments owned by this element."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement #//TemplateableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A package is used to group elements, and provides a namespace for the grouped elements.&#xD;&#xA;A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.&#xD;&#xA;Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter."/>
</eAnnotations>
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="mustBeOwned" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query mustBeOwned() indicates whether elements of this type must have an owner.&#xD;&#xA;result = false"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Element/mustBeOwned"/>
</contents>
</eAnnotations>
<eOperations name="elements_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If an element that is owned by a package has visibility, it is public or private.&#xD;&#xA;self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates a(n) (abstract) class with the specified name as an owned type of this package."/>
</eAnnotations>
<eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name for the new class, or null."/>
</eAnnotations>
</eParameters>
<eParameters name="isAbstract" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Whether the new class should be abstract."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="createOwnedEnumeration" ordered="false" lowerBound="1" eType="#//Enumeration">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates a enumeration with the specified name as an owned type of this package."/>
</eAnnotations>
<eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name for the new enumeration, or null."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="createOwnedPrimitiveType" ordered="false" lowerBound="1" eType="#//PrimitiveType">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates a primitive type with the specified name as an owned type of this package."/>
</eAnnotations>
<eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name for the new primitive type, or null."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="createOwnedInterface" ordered="false" lowerBound="1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates an interface with the specified name as an owned type of this package."/>
</eAnnotations>
<eParameters name="name" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name for the new interface, or null."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="isProfileApplied" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether the specified profile is applied to this package."/>
</eAnnotations>
<eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The profile in question."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="applyProfile" ordered="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name)."/>
</eAnnotations>
<eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The profile to apply."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="unapplyProfile" ordered="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy."/>
</eAnnotations>
<eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The profile to unapply."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAppliedProfiles" ordered="false" upperBound="-1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the profiles that are applied to this package."/>
</eAnnotations>
</eOperations>
<eOperations name="getAllAppliedProfiles" ordered="false" upperBound="-1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s)."/>
</eAnnotations>
</eOperations>
<eOperations name="getAppliedProfile" ordered="false" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied."/>
</eAnnotations>
<eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualified name of the applied profile to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAppliedProfile" ordered="false" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied."/>
</eAnnotations>
<eParameters name="qualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The qualified name of the applied profile to retrieve."/>
</eAnnotations>
</eParameters>
<eParameters name="recurse" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Whether to look in nesting packages."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAllProfileApplications" ordered="false" upperBound="-1"
eType="#//ProfileApplication">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves all the profile applications for this package, including profile applications for its nesting package(s)."/>
</eAnnotations>
</eOperations>
<eOperations name="getProfileApplication" ordered="false" eType="#//ProfileApplication">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the application of the specified profile to this package, or null if no such profile is applied."/>
</eAnnotations>
<eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The profile whose application to retrieve."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getProfileApplication" ordered="false" eType="#//ProfileApplication">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied."/>
</eAnnotations>
<eParameters name="profile" ordered="false" lowerBound="1" eType="#//Profile">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The profile whose application to retrieve."/>
</eAnnotations>
</eParameters>
<eParameters name="recurse" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Whether to look in nesting packages."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="isModelLibrary" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether this package is a model library."/>
</eAnnotations>
</eOperations>
<eOperations name="visibleMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query visibleMembers() defines which members of a Package can be accessed outside it.&#xD;&#xA;result = member->select( m | self.makesVisible(m))"/>
</eAnnotations>
</eOperations>
<eOperations name="makesVisible" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.&#xD;&#xA;self.member->includes(el)&#xD;&#xA;result = (ownedMember->includes(el)) or&#xA;(elementImport->select(ei|ei.importedElement = #public)->collect(ei|ei.importedElement)->includes(el)) or&#xA;(packageImport->select(pi|pi.visibility = #public)->collect(pi|pi.importedPackage.member->includes(el))->notEmpty())"/>
</eAnnotations>
<eParameters name="el" ordered="false" lowerBound="1" eType="#//NamedElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedType" ordered="false"
upperBound="-1" eType="#//Type" volatile="true" transient="true" derived="true"
eOpposite="#//Type/package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the packaged elements that are Types."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Package/packagedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageMerge" ordered="false"
upperBound="-1" eType="#//PackageMerge" containment="true" eOpposite="#//PackageMerge/receivingPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the PackageMerges that are owned by this Package."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packagedElement" ordered="false"
upperBound="-1" eType="#//PackageableElement" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the packageable elements that are owned by this Package."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestedPackage" ordered="false"
upperBound="-1" eType="#//Package" volatile="true" transient="true" derived="true"
eOpposite="#//Package/nestingPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the packaged elements that are Packages."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Package/packagedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nestingPackage" ordered="false"
eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/nestedPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Package that owns this Package."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="profileApplication" ordered="false"
upperBound="-1" eType="#//ProfileApplication" containment="true" eOpposite="#//ProfileApplication/applyingPackage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the ProfileApplications that indicate which profiles have been applied to the Package."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
eSuperTypes="#//NamedElement #//ParameterableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A packageable element indicates a named element that may be owned directly by a package.&#xD;&#xA;Packageable elements are able to serve as a template parameter."/>
</eAnnotations>
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EAttribute" name="visibility" ordered="false" eType="#//VisibilityKind"
defaultValueLiteral="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates that packageable elements must always have a visibility, i.e., visibility is not optional."/>
</eAnnotations>
<eAnnotations source="redefines" references="#//NamedElement/visibility"/>
</contents>
</eAnnotations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A named element is an element in a model that may have a name.&#xD;&#xA;A named element supports using a string expression to specify its name. This allows names of model elements to involve template parameters. The actual name is evaluated from the string expression only when it is sensible to do so (e.g., when a template is bound)."/>
</eAnnotations>
<eOperations name="has_no_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If there is no name, or one of the containing namespaces has no name, there is no qualified name.&#xD;&#xA;(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA; implies self.qualifiedName->isEmpty()"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="has_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA; self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visibility_needs_ownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If a NamedElement is not owned by a Namespace, it does not have a visibility.&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="createDependency" ordered="false" lowerBound="1" eType="#//Dependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package."/>
</eAnnotations>
<eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The supplier for the new dependency."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getLabel" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves a localized label for this named element."/>
</eAnnotations>
</eOperations>
<eOperations name="getLabel" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves a label for this named element, localized if indicated."/>
</eAnnotations>
<eParameters name="localize" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Whether to localize the label."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="createUsage" ordered="false" lowerBound="1" eType="#//Usage">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates a usage between this named element and the specified supplier, owned by this named element's nearest package."/>
</eAnnotations>
<eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The supplier for the new usage."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getQualifiedName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.&#xD;&#xA;result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xA;then &#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xA;else&#xA; Set{}&#xA;endif"/>
<details key="suppressedVisibility" value="true"/>
</eAnnotations>
</eOperations>
<eOperations name="allNamespaces" upperBound="-1" eType="#//Namespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.&#xD;&#xA;result = if self.namespace->isEmpty()&#xA;then Sequence{}&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xA;endif"/>
</eAnnotations>
</eOperations>
<eOperations name="isDistinguishableFrom" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.&#xD;&#xA;result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xA;else true&#xA;endif"/>
</eAnnotations>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
<eParameters name="ns" ordered="false" lowerBound="1" eType="#//Namespace"/>
</eOperations>
<eOperations name="separator" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query separator() gives the string that is used to separate names when constructing a qualified name.&#xD;&#xA;result = '::'"/>
</eAnnotations>
</eOperations>
<eOperations name="allOwningPackages" ordered="false" upperBound="-1" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allOwningPackages() returns all the directly or indirectly owning packages.&#xD;&#xA;result = self.namespace->select(p | p.oclIsKindOf(Package))->union(p.allOwningPackages())"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"
unsettable="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the NamedElement."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
eType="#//VisibilityKind" unsettable="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
eType="#//String" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
upperBound="-1" eType="#//Dependency" eOpposite="#//Dependency/client">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates the dependencies that reference the client."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"
eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true"
eOpposite="#//Namespace/ownedMember">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the namespace that owns the NamedElement."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"
eType="#//StringExpression" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The string expression used to define the name of this named element."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model."/>
</eAnnotations>
<eLiterals name="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A public element is visible to all elements that can access the contents of the namespace that owns it."/>
</eAnnotations>
</eLiterals>
<eLiterals name="private" value="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A private element is only visible inside the namespace that owns it."/>
</eAnnotations>
</eLiterals>
<eLiterals name="protected" value="2">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A protected element is visible to elements that have a generalization relationship to the namespace that owns it."/>
</eAnnotations>
</eLiterals>
<eLiterals name="package" value="3">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible."/>
</eAnnotations>
</eLiterals>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s)."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"
lowerBound="1" upperBound="-1" eType="#//NamedElement" eOpposite="#//NamedElement/clientDependency">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"
eSuperTypes="#//Relationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the sources of the DirectedRelationship."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the targets of the DirectedRelationship."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Relationship is an abstract concept that specifies some kind of relationship between elements."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"
lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the elements related by the Relationship."/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A namespace is an element in a model that contains a set of named elements that can be identified by name."/>
</eAnnotations>
<eOperations name="members_distinguishable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="All the members of a Namespace are distinguishable within it.&#xD;&#xA;membersAreDistinguishable()"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="createElementImport" ordered="false" lowerBound="1" eType="#//ElementImport">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates an import of the specified element into this namespace with the specified visibility."/>
</eAnnotations>
<eParameters name="element" ordered="false" lowerBound="1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element to import."/>
</eAnnotations>
</eParameters>
<eParameters name="visibility" ordered="false" lowerBound="1" eType="#//VisibilityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The visibility for the new element import."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="createPackageImport" ordered="false" lowerBound="1" eType="#//PackageImport">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates an import of the specified package into this namespace with the specified visibility."/>
</eAnnotations>
<eParameters name="package_" ordered="false" lowerBound="1" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The package to import."/>
</eAnnotations>
</eParameters>
<eParameters name="visibility" ordered="false" lowerBound="1" eType="#//VisibilityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The visibility for the new package import."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getImportedElements" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the elements imported by this namespace."/>
</eAnnotations>
</eOperations>
<eOperations name="getImportedPackages" ordered="false" upperBound="-1" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the packages imported by this namespace."/>
</eAnnotations>
</eOperations>
<eOperations name="getImportedMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.&#xD;&#xA;result = self.importMembers(self.elementImport.importedElement.asSet()-&#xA;>union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))"/>
</eAnnotations>
</eOperations>
<eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.&#xD;&#xA;The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. The query takes account of importing. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.&#xD;&#xA;result = if self.ownedMember ->includes(element)&#xA;then Set{}->include(element.name)&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xA; if elementImports->notEmpty()&#xA; then elementImports->collect(el | el.getName())&#xA; else self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element))&#xA; endif&#xA;endif"/>
</eAnnotations>
<eParameters name="element" ordered="false" lowerBound="1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="membersAreDistinguishable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.&#xD;&#xA;result = self.member->forAll( memb |&#xA;self.member->excluding(memb)->forAll(other |&#xA;memb.isDistinguishableFrom(other, self)))"/>
</eAnnotations>
</eOperations>
<eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported.&#xD;&#xA;result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem |&#xA;mem.imp.isDistinguishableFrom(mem, self)))"/>
</eAnnotations>
<eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
</eOperations>
<eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.&#xD;&#xA;result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))"/>
</eAnnotations>
<eParameters name="imps" ordered="false" upperBound="-1" eType="#//PackageableElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
upperBound="-1" eType="#//ElementImport" containment="true" eOpposite="#//ElementImport/importingNamespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the ElementImports owned by the Namespace."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
upperBound="-1" eType="#//PackageImport" containment="true" eOpposite="#//PackageImport/importingNamespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the PackageImports owned by the Namespace."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
upperBound="-1" eType="#//Constraint" containment="true" eOpposite="#//Constraint/context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies a set of Constraints owned by this Namespace."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance."/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true" eOpposite="#//NamedElement/namespace">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A collection of NamedElements owned by the Namespace."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member #//Element/ownedElement"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ElementImport" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier."/>
</eAnnotations>
<eOperations name="visibility_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The visibility of an ElementImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="imported_element_is_public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An importedElement has either public visibility or no visibility at all.&#xD;&#xA;self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="getName" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.&#xD;&#xA;result = if self.alias->notEmpty() then&#xA; self.alias&#xA;else&#xA; self.importedElement.name&#xA;endif"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" ordered="false"
eType="#//String" unsettable="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedElement" ordered="false"
lowerBound="1" eType="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the PackageableElement whose name is to be added to a Namespace."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/elementImport">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Namespace that imports a PackageableElement from another Package."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PackageImport" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces."/>
</eAnnotations>
<eOperations name="public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The visibility of a PackageImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importedPackage" ordered="false"
lowerBound="1" eType="#//Package">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Package whose members are imported into a Namespace."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="importingNamespace" ordered="false"
lowerBound="1" eType="#//Namespace" eOpposite="#//Namespace/packageImport">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Namespace that imports the members from a Package."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/source #//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element."/>
</eAnnotations>
<eOperations name="not_apply_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="value_specification_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;self.specification().booleanValue().isOclKindOf(Boolean)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="boolean_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;true"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Evaluating the value specification for a constraint must not have side effects.&#xD;&#xA;true"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="not_applied_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
eType="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of Elements referenced by this Constraint."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"
lowerBound="1" eType="#//ValueSpecification" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A condition that must be true when evaluated in order for the constraint to be satisfied."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
eType="#//Namespace" eOpposite="#//Namespace/ownedRule">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the namespace that owns the NamedElement."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ValueSpecification" abstract="true"
eSuperTypes="#//PackageableElement #//TypedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.&#xD;&#xA;ValueSpecification specializes ParameterableElement to specify that a value specification can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template."/>
</eAnnotations>
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isCompatibleWith" ordered="false"
lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. In addition, for ValueSpecification, the type must be conformant with the type of the specified parameterable element.&#xD;&#xA;&#xD;&#xA;result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type)"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/isCompatibleWith"/>
<eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
</contents>
</eAnnotations>
<eOperations name="isComputable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.&#xD;&#xA;result = false"/>
</eAnnotations>
</eOperations>
<eOperations name="integerValue" ordered="false" lowerBound="1" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query integerValue() gives a single Integer value when one can be computed.&#xD;&#xA;result = Set{}"/>
</eAnnotations>
</eOperations>
<eOperations name="booleanValue" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query booleanValue() gives a single Boolean value when one can be computed.&#xD;&#xA;result = Set{}"/>
</eAnnotations>
</eOperations>
<eOperations name="stringValue" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query stringValue() gives a single String value when one can be computed.&#xD;&#xA;result = Set{}"/>
</eAnnotations>
</eOperations>
<eOperations name="unlimitedValue" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.&#xD;&#xA;result = Set{}"/>
</eAnnotations>
</eOperations>
<eOperations name="isNull" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isNull() returns true when it can be computed that the value is null.&#xD;&#xA;result = false"/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A typed element is a kind of named element that represents an element with a type.&#xD;&#xA;A typed element has a type."/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="This information is derived from the return result for this Operation.&#xD;&#xA;The type of the TypedElement."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//PackageableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A type is a named element that is used as the type for a typed element. A type can be contained in a package.&#xD;&#xA;A type constrains the values represented by a typed element."/>
</eAnnotations>
<eOperations name="createAssociation" ordered="false" lowerBound="1" eType="#//Association">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package."/>
</eAnnotations>
<eParameters name="end1IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The navigability for the first end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end1Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The aggregation for the first end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end1Name" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name for the first end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end1Lower" ordered="false" lowerBound="1" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The lower bound for the first end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end1Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The upper bound for the first end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end1Type" ordered="false" lowerBound="1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The type for the first end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end2IsNavigable" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The navigability for the second end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end2Aggregation" ordered="false" lowerBound="1" eType="#//AggregationKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The aggregation for the second end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end2Name" ordered="false" lowerBound="1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name for the second end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end2Lower" ordered="false" lowerBound="1" eType="#//Integer">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The lower bound for the second end of the new association."/>
</eAnnotations>
</eParameters>
<eParameters name="end2Upper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The upper bound for the second end of the new association."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getAssociations" ordered="false" upperBound="-1" eType="#//Association">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the associations in which this type is involved."/>
</eAnnotations>
</eOperations>
<eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.&#xD;&#xA;result = false"/>
</eAnnotations>
<eParameters name="other" ordered="false" lowerBound="1" eType="#//Type"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false"
eType="#//Package" volatile="true" transient="true" derived="true" eOpposite="#//Package/ownedType">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the owning package of this classifier, if any."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//NamedElement/namespace"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//Classifier #//Relationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link."/>
</eAnnotations>
<eOperations name="specialized_end_number" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An association specializing another association has the same number of ends as the other association.&#xD;&#xA;self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="specialized_end_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.&#xD;&#xA;true"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Only binary associations can be aggregations.&#xD;&#xA;self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Association ends of associations with more than two ends must be owned by the association.&#xD;&#xA;if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="isBinary" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Determines whether this association is a binary association, i.e. whether it has exactly two member ends."/>
</eAnnotations>
</eOperations>
<eOperations name="getEndTypes" upperBound="-1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="endType is derived from the types of the member ends.&#xD;&#xA;result = self.memberEnd->collect(e | e.type)"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedEnd" upperBound="-1"
eType="#//Property" containment="true" eOpposite="#//Property/owningAssociation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ends that are owned by the association itself."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Association/memberEnd #//Classifier/feature #//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="memberEnd" lowerBound="2"
upperBound="-1" eType="#//Property" eOpposite="#//Property/association">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Each end represents participation of instances of the classifier connected to the end in links of the association."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isDerived" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the association is derived from other model elements such as other associations or constraints."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="endType" lowerBound="1"
upperBound="-1" eType="#//Type" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the classifiers that are used as types of the ends of the association."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Relationship/relatedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="navigableOwnedEnd" ordered="false"
upperBound="-1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The navigable ends that are owned by the association itself."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Association/ownedEnd"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//RedefinableElement #//Type #//TemplateableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.&#xD;&#xA;A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.&#xD;&#xA;A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.&#xD;&#xA;Classifier is defined to be a kind of templateable element so that a classifier can be parameterized. It is also defined to be a kind of parameterable element so that a classifier can be a formal template parameter."/>
</eAnnotations>
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="isTemplate" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isTemplate() returns whether this templateable element is actually a template.&#xD;&#xA;result = oclAsType(TemplatableElement).isTemplate() or general->exists(g | g.isTemplate())"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateableElement/isTemplate"/>
</contents>
<contents xsi:type="ecore:EReference" name="ownedTemplateSignature" ordered="false"
eType="#//TemplateSignature" containment="true" eOpposite="#//RedefinableTemplateSignature/classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The optional template signature specifying the formal template parameters."/>
</eAnnotations>
<eAnnotations source="redefines" references="#//TemplateableElement/ownedTemplateSignature"/>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</contents>
<contents xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" eOpposite="#//ClassifierTemplateParameter/%duplicates%/parameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
</eAnnotations>
<eAnnotations source="redefines" references="#//ParameterableElement/templateParameter"/>
</contents>
</eAnnotations>
<eOperations name="no_cycles_in_generalization" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="generalization_hierarchies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="specialize_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A classifier may only specialize classifiers of a valid type.&#xD;&#xA;self.parents()->forAll(c | self.maySpecializeType(c))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.&#xD;&#xA;true"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="getAllAttributes" ordered="false" upperBound="-1" eType="#//Property">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves all the attributes of this classifier, including those inherited from its parents."/>
</eAnnotations>
</eOperations>
<eOperations name="getOperations" ordered="false" upperBound="-1" eType="#//Operation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the operations of this classifier."/>
</eAnnotations>
</eOperations>
<eOperations name="getAllOperations" ordered="false" upperBound="-1" eType="#//Operation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves all the operations of this classifier, including those inherited from its parents."/>
</eAnnotations>
</eOperations>
<eOperations name="getOperation" ordered="false" eType="#//Operation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier."/>
</eAnnotations>
<eParameters name="name" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the operation to retrieve, or null."/>
</eAnnotations>
</eParameters>
<eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The parameter names of the operation to retrieve, or null."/>
</eAnnotations>
</eParameters>
<eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The parameter types of the operation to retrieve, or null."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getOperation" ordered="false" eType="#//Operation">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated."/>
</eAnnotations>
<eParameters name="name" ordered="false" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The name of the operation to retrieve, or null."/>
</eAnnotations>
</eParameters>
<eParameters name="parameterNames" ordered="false" upperBound="-1" eType="#//String">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The parameter names of the operation to retrieve, or null."/>
</eAnnotations>
</eParameters>
<eParameters name="parameterTypes" ordered="false" upperBound="-1" eType="#//Type">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The parameter types of the operation to retrieve, or null."/>
</eAnnotations>
</eParameters>
<eParameters name="ignoreCase" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Whether to ignore case in String comparisons."/>
</eAnnotations>
</eParameters>
</eOperations>
<eOperations name="getUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves the interfaces on which this classifier has a usage dependency."/>
</eAnnotations>
</eOperations>
<eOperations name="getAllUsedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency."/>
</eAnnotations>
</eOperations>
<eOperations name="getGenerals" ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The general classifiers are the classifiers referenced by the generalization relationships.&#xD;&#xA;result = self.parents()"/>
</eAnnotations>
</eOperations>
<eOperations name="getInheritedMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The inheritedMember association is derived by inheriting the inheritable members of the parents.&#xD;&#xA;result = self.inherit(self.parents()->collect(p | p.inheritableMembers(self))"/>
</eAnnotations>
</eOperations>
<eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Feature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.&#xD;&#xA;result = member->select(oclIsKindOf(Feature))"/>
</eAnnotations>
</eOperations>
<eOperations name="parents" ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query parents() gives all of the immediate ancestors of a generalized Classifier.&#xD;&#xA;result = generalization.general"/>
</eAnnotations>
</eOperations>
<eOperations name="inheritableMembers" ordered="false" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.&#xD;&#xA;c.allParents()->includes(self)&#xD;&#xA;result = member->select(m | c.hasVisibilityOf(m))"/>
</eAnnotations>
<eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
</eOperations>
<eOperations name="hasVisibilityOf" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.&#xD;&#xA;self.allParents()->collect(c | c.member)->includes(n)&#xD;&#xA;result = if (self.inheritedMember->includes(n)) then (n.visibility &lt;> #private) else true"/>
</eAnnotations>
<eParameters name="n" ordered="false" lowerBound="1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="conformsTo" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.&#xD;&#xA;result = (self=other) or (self.allParents()->includes(other))"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//Type/conformsTo"/>
<eParameters name="other" ordered="false" lowerBound="1" eType="#//Classifier"/>
</eOperations>
<eOperations name="inherit" ordered="false" upperBound="-1" eType="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The inherit operation is overridden to exclude redefined properties.&#xD;&#xA;The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.&#xD;&#xA;result = inhs"/>
</eAnnotations>
<eParameters name="inhs" ordered="false" upperBound="-1" eType="#//NamedElement"/>
</eOperations>
<eOperations name="maySpecializeType" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.&#xD;&#xA;result = self.oclIsKindOf(c.oclType)"/>
</eAnnotations>
<eParameters name="c" ordered="false" lowerBound="1" eType="#//Classifier"/>
</eOperations>
<eOperations name="allParents" ordered="false" upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.&#xD;&#xA;result = self.parents()->union(self.parents()->collect(p | p.allParents())"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.&#xD;&#xA;"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
upperBound="-1" eType="#//Generalization" containment="true" eOpposite="#//Generalization/specific">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Designates the GeneralizationSet of which the associated Classifier is a power type."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="feature" ordered="false"
upperBound="-1" eType="#//Feature" changeable="false" volatile="true" transient="true"
derived="true" eOpposite="#//Feature/featuringClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.&#xD;&#xA;Specifies each feature defined in the classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="inheritedMember" ordered="false"
upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies all elements inherited by this classifier from the general classifiers."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/member"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedClassifier" ordered="false"
upperBound="-1" eType="#//Classifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the Classifiers that are redefined by this Classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//RedefinableElement/redefinedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false"
upperBound="-1" eType="#//Classifier" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the general classifier in the Generalization relationship.&#xD;&#xA;Specifies the general Classifiers for this Classifier."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="substitution" ordered="false"
upperBound="-1" eType="#//Substitution" containment="true" eOpposite="#//Substitution/substitutingClassifier">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the substitutions that are owned by this Classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//NamedElement/clientDependency"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="attribute" ordered="false"
upperBound="-1" eType="#//Property" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/feature"/>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="representation" ordered="false"
eType="#//CollaborationUse">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References a collaboration use which indicates the collaboration that represents this classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Classifier/collaborationUse"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="collaborationUse" ordered="false"
upperBound="-1" eType="#//CollaborationUse" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the collaboration uses owned by the classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedUseCase" ordered="false"
upperBound="-1" eType="#//UseCase" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the use cases owned by this classifier."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Namespace/ownedMember"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
upperBound="-1" eType="#//UseCase" eOpposite="#//UseCase/subject">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of use cases for which this Classifier is the subject."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RedefinableElement" abstract="true"
eSuperTypes="#//NamedElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier."/>
</eAnnotations>
<eOperations name="redefinition_context_valid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="redefinition_consistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A redefining element must be consistent with each redefined element.&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="isConsistentWith" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.&#xD;&#xA;redefinee.isRedefinitionContextValid(self)&#xD;&#xA;result = false"/>
</eAnnotations>
<eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</eOperations>
<eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.&#xD;&#xA;result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext)))"/>
</eAnnotations>
<eParameters name="redefined" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" ordered="false"
lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Indicates whether it is possible to further specialize a RedefinableElement. If the value is true, then it is not possible to further specialize the RedefinableElement."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
upperBound="-1" eType="#//RedefinableElement" changeable="false" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The redefinable element that is being redefined by this element."/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="References the contexts that this element may be redefined from."/>
</eAnnotations>
<eAnnotations source="union"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateableElement" abstract="true"
eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A templateable element is an element that can optionally be defined as a template and bound to other templates."/>
</eAnnotations>
<eOperations name="parameterableElements" ordered="false" upperBound="-1" eType="#//ParameterableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query parameterableElements() returns the set of elements that may be used as the parametered elements for a template parameter of this templateable element. By default, this set includes all the owned elements. Subclasses may override this operation if they choose to restrict the set of parameterable elements.&#xD;&#xA;result = allOwnedElements->select(oclIsKindOf(ParameterableElement))"/>
</eAnnotations>
</eOperations>
<eOperations name="isTemplate" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isTemplate() returns whether this templateable element is actually a template.&#xD;&#xA;result = ownedTemplateSignature->notEmpty()"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateBinding" ordered="false"
upperBound="-1" eType="#//TemplateBinding" containment="true" eOpposite="#//TemplateBinding/boundElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The optional bindings from this element to templates."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedTemplateSignature"
ordered="false" eType="#//TemplateSignature" containment="true" eOpposite="#//TemplateSignature/template">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The optional template signature specifying the formal template parameters."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateBinding" eSuperTypes="#//DirectedRelationship">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A template binding represents a relationship between a templateable element and a template. A template binding specifies the substitutions of actual parameters for the formal parameters of the template."/>
</eAnnotations>
<eOperations name="parameter_substitution_formal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Each parameter substitution must refer to a formal template parameter of the target template signature.&#xD;&#xA;parameterSubstitution->forAll(b | template.parameter->includes(b.formal))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="one_parameter_substitution" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A binding contains at most one parameter substitution for each formal template parameter of the target template signature.&#xD;&#xA;template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
lowerBound="1" eType="#//TemplateSignature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The template signature for the template that is the target of the binding."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//DirectedRelationship/target"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
ordered="false" upperBound="-1" eType="#//TemplateParameterSubstitution" containment="true"
eOpposite="#//TemplateParameterSubstitution/templateBinding">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The parameter substitutions owned by this template binding."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="boundElement" ordered="false"
lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/templateBinding">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element that is bound by this binding."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner #//DirectedRelationship/source"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A template signature bundles the set of formal template parameters for a templated element."/>
</eAnnotations>
<eOperations name="own_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Parameters must own the elements they parameter or those elements must be owned by the element being templated.&#xD;&#xA;templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
upperBound="-1" eType="#//TemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The ordered set of all formal template parameters for this template signature."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameter" upperBound="-1"
eType="#//TemplateParameter" containment="true" eOpposite="#//TemplateParameter/signature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal template parameters that are owned by this template signature."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateSignature/parameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="template" ordered="false"
lowerBound="1" eType="#//TemplateableElement" eOpposite="#//TemplateableElement/ownedTemplateSignature">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element that owns this template signature."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateParameter" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A template parameter exposes a parameterable element as a formal template parameter of a template."/>
</eAnnotations>
<eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The default must be compatible with the formal template parameter.&#xD;&#xA;default->notEmpty() implies default->isCompatibleWith(parameteredElement)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
lowerBound="1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/ownedParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The template signature that owns this template parameter."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameteredElement" ordered="false"
lowerBound="1" eType="#//ParameterableElement" eOpposite="#//ParameterableElement/templateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element exposed by this template parameter."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedParameteredElement"
ordered="false" eType="#//ParameterableElement" containment="true" eOpposite="#//ParameterableElement/owningTemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element that is owned by this template parameter."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/ownedElement #//TemplateParameter/parameteredElement"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="default" ordered="false"
eType="#//ParameterableElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element that is the default for this formal template parameter."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ownedDefault" ordered="false"
eType="#//ParameterableElement" containment="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The element that is owned by this template parameter for the purpose of providing a default."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//TemplateParameter/default #//Element/ownedElement"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ParameterableElement" abstract="true"
eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A parameterable element is an element that can be exposed as a formal template parameter for a template, or specified as an actual parameter in a binding of a template."/>
</eAnnotations>
<eOperations name="isCompatibleWith" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. Subclasses should override this operation to specify different compatibility constraints.&#xD;&#xA;result = p->oclIsKindOf(self.oclType)"/>
</eAnnotations>
<eParameters name="p" ordered="false" lowerBound="1" eType="#//ParameterableElement"/>
</eOperations>
<eOperations name="isTemplateParameter" ordered="false" lowerBound="1" eType="#//Boolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query isTemplateParameter() determines if this parameterable element is exposed as a formal template parameter.&#xD;&#xA;result = templateParameter->notEmpty()"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="owningTemplateParameter"
ordered="false" eType="#//TemplateParameter" eOpposite="#//TemplateParameter/ownedParameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal template parameter that owns this element."/>
</eAnnotations>
<eAnnotations source="subsets" references="#//Element/owner #//ParameterableElement/templateParameter"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="templateParameter" ordered="false"
eType="#//TemplateParameter" eOpposite="#//TemplateParameter/parameteredElement">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The template parameter that exposes this element as a formal parameter."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateParameterSubstitution" eSuperTypes="#//Element">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A template parameter substitution relates the actual parameter to a formal template parameter as part of a template binding."/>
</eAnnotations>
<eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The actual parameter must be compatible with the formal template parameter, e.g. the actual parameter for a class template parameter must be a class.&#xD;&#xA;actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
lowerBound="1" eType="#//TemplateParameter">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The formal template parameter that is associated with this substitution."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="actual" ordered="false"